大家好!我是你们热爱的Java,2019年过去了,按照惯例,我要做一下年终总结,说说这一年来发生在我身上的大事。 


首先我高兴地向大家宣布,我继续在语言排行榜霸占第一的位置​ !连续好几年了,真是高处不胜寒啊。


我是Java,这是我的2019年总结,请查收!_java


你说别的排行榜上Python是第一?抱歉,我只看Tiobe排行榜,别拿别的榜来烦我,我不看我不看。 


第二件事,2019年我又发布了两个版本, JDK12 和 JDK 13​。 


它们增加了各种各样让人激动的新特性,相信你会喜欢的,比如switch表达式的增强,比如重新实现Socket API, 多行字符串等等。 


int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};


String html = """
<html>
<body>
<p>Hello, %s</p>
</body>
</html>""";

是不是很酷?都2020年了,可以考虑升级你那老掉牙的JDK8了啊!  


什么?这些特性没啥用?JDK 12, 13是短期支持版本? 那你可以考虑下长期支持的JDK 11,要么就等2021年的JDK 17了。 


第三件事, 美国高等法院终于同意在2020年审理Oracle和Google的世纪诉讼​了,我的API应不应该收到保护?你是支持Google还是Oracle,还是支持我呢? 


我是Java,这是我的2019年总结,请查收!_oracle_02


这场扯了10年的官司终于要有一个了结了。 他们俩怎么不和解呢?不管如何,广大Java程序员应该不会收到太大影响,IT产业的继续发展的隆隆车轮不是谁都能阻挡的。 


第四, Microsoft Love Linux, Micorsoft Love Java ​。曾经想扼杀Java 的微软居然加入了OpenJDK社区! 


我是Java,这是我的2019年总结,请查收!_java_03


虽然出乎意料,但也是在情理之中。因为最近几年,微软转型云计算,拥抱开源, 云端的服务器要运行Linux,Linux上还要跑Java应用,作为一个基础设施提供商,必须得对Linux和Java有更深入的理解和掌控才可以。 


微软的云服务Azure 发展势头极好,2019年击败亚马逊,赢得了一份五角大楼价值100亿美元合同,在这种大背景下,将来一定会基于OpenJDK为自己的Azure定制一个JDK, 就像亚马逊的Corretto, Azul Zulu那样,让我们拭目以待。 


与此形成鲜明对比的是,蓝色巨人IBM似乎和Java渐行渐远,这个企业级Java的最大玩家,Eclipse IDE的发明者,几乎所有产品线都基于Java技术的公司,要向云和AI做转型了。 


第五,Java EE正式宣告死亡​,注意我说的是仅仅是名字,因为被Oracle抛弃以后,Java EE投入到Eclipse的怀抱,摇身一变,成为了Jakarta EE。 


我是Java,这是我的2019年总结,请查收!_java_04


可是让人遗憾的是:“邪恶”的Oracle后爹居然不让Jakarta EE使用javax这样的包名!因为Java是他们的注册商标。但是,为了保持我们Java一直以来的好名声:向后兼容性。 


Oracle后爹同意: 

1. 现在的javax相关的包还可以使用,但是不能做任何扩展和修改 

2. 但是,新的功能需要放在新的包(例如jakarta)下面。 


不过,对于程序员来讲,影响似乎不大,因为Java EE那一套规范用得越来越少了,大家做个吃瓜群众就好。 


第六,JCP二十岁了!​ 实际上JCP成立于1998年的12月, 2018年12就年满20岁了,整个2019年都有一系列的庆祝活动。 


我是Java,这是我的2019年总结,请查收!_linux_05


我对这个掌管着Java特性开发的组织是又爱又恨,一方面,所有的Java特性必须通过JSR的方式提交到JCP,讨论,投票以后才能成为真正的规范。 


另一方面,这个组织基本上被大公司所掌控,来自开源和个人的声音很小,行动迟缓,JSR经过缓慢的流程以后,往往会和市场需求脱节,这和开源软件的开发形成了极为鲜明的对比。 


不过现在也算是有所改变,你看我每年都能发两个JDK版本了! 


2019年过去了,我一点儿都不怀念它! 


祝大家2020一切顺利!