之前,我们在《Java 10无跳票发布,主推的新特性引争议》的文章中做了一个小的调查,主要是调查现在的Java程序员都在使用哪个版本的Java?根据调查结果,绝大部分的程序员都在使用Java 8。
无独有偶,国外的一家媒体也做了同样的调查,但奇妙的是双方调查结果大致相同,国外的Java程序员也是更多的在使用Java 8。现在Java 9和10都已经发布了,根据Oracle给出的半年一个版本的约定,没有多久Java 11也将和大家见面。那么问题来了,现在使用Java 8的程序员更愿意迁移到这三个版本的哪个版本呢?
Java 9虽然是三个备选选项中发布最早的版本,并且OpenJDK董事会主席兼Oracle Java平台小组开发副总裁Georges Saab也亲自下场背书,“Java 9的增长速度虽然不如Java 8,但是与其他版本并无差异。”但是,程序员却止不住对迁移到Java 9的吐槽。点击查看Java9新特性实战。
有程序员表示,Java 9中模块系统的一个问题是一个包必须完全包含在一个模块中。虽然这听起来是个好主意,但实际上在客户端和服务端的代码中都会有相同的包,这打破了模块系统,需要程序员进行重大重构。同时也有程序员表示常用的库和工具没有完全支持Java 9。
Java 10是一个刚刚发布的版本,现在要求使用这个版本的用户达到多少,确实还有些不到时候。关于Java 10的新功能,可以参考《Java 10无跳票发布,主推的新特性引争议》,关于Java 10是否值得迁移,可以参考《Java 10值得迁移吗?听听技术大牛的建议》。点击查看Java10新特性实战。
Java 11虽然还没有发布,但是Java 11的路线图已被相关媒体透露出来。Java 11将会增加一些新功能,更重要的是它将移除一些功能。
据悉JDK 11 只设置了三个新功能,包括Epsilon 垃圾收集器被称为“no-op”收集器,将处理内存分配而不实施任何实际的内存回收机制; lambda 参数的局部变量语法,应该将隐式类型表达式中的形式参数声明的语法与局部变量声明的语法对齐; Java类文件格式将被扩展为支持一个新的常量池形式CONSTANT_Dynamic.点击查看Java11新特性详解。
那么Java 11将要摒弃哪些东西呢?Java EE 和 CORBA 模块在 Java SE 9 中已弃用,Java 11意图将它们删除。Oracle 表示在 Java SE 或 JDK 中不再需要借助第三方站点提供的独立版本的 Java EE 技术。