从Java9开始,Java的发布让人眼花缭乱。每6个月,就会出现一个新版本,Java10、Java11、Java12、Java13,到2020年3月,Java14就会到来。说实话,这种频繁的发布有点审美疲劳。每次看到介绍Java新版本的文章,都没有兴趣点进去。在这么多版本中,只有Java8、Java11和未来的Java17是长期支持版本(LTS)。Oracle会支持他们3年,而其他人只会支持他们6个月。新版本一出,旧版本将放弃技术支持。这种快速发布有什么好处吗?是的!小步快跑一直是我们软件开发的利器。我们采用迭代的方式,每次发布一部分功能,推送给开发者验证。这是典型的敏捷思想。但是这个好处对JDK开发者来说是比较有利的。对于使用Java的个人和公司来说,要跟上每六个月升级一次的步伐太难了。JDK是一个非常核心的基础设施。除了安全漏洞,谁没有什么可以升级生产环境的JDK?谁对任何问题负责?所以,按理说大家会找那些LTS版本升级,比如Java11,但事实证明大部分人还在坚守Java8:这个调查显示,使用Java8的公司和程序员高达80%。为什么是这样?为什么不是每个人都升级到Java11?个人认为主要是有利于发展主要功能升级很少,号召力不够。近十年来,Java相继引入了泛型、注解、NIO、函数式编程等核心功能,极大地影响了应用程序的开发方式。你能想象现在Java没有注解会是什么样子吗??在过去的几年中,Java版本缺少这样重大的功能升级。我会列出我印象有点深刻的功能升级:注意加粗的项目。Java9引入了模块化系统。漂亮的特性,但是对于程序员来说,这是一个破坏性的更新,因为JDK做了模块化,但是很多第三方库还没有。如果想让自己的项目模块化,很可能是一次不断填坑的经历,尤其是在使用第三方库的时候。Java11的ZGC是一个很有吸引力的特性。它的设计目标是:支持TB级的内存容量,低GC停顿时间(<10ms),对整个程序吞吐量的影响小于15%,这真是令人兴奋!如果真的实现了,程序员就可以创建对象而不用考虑GC了。不幸的是,这仍然是一个实验版本。至于局部变量类型推导,只是方便变量声明。一个JDK版本要想被广泛采用,就必须能够提高开发效率(比如泛型、注解),带来变化,这样才具有吸引力。如果给程序员带来了麻烦,大家就会用脚投票。【本文为专栏作家“刘欣”原创稿件,转载请通过作者微信获取授权公众号coderising】点此查看该作者更多好文
