作者:刘欣

从Java 9开始,Java版本的发布就让人眼花缭乱了。

每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,Java 14就要来了。

说实话,这种频繁的发布有点儿让人审美疲劳,每次我看到介绍Java新版本,新特性的文章也没兴趣点开看了。

在这么多的版本中,只有Java 8, Java 11 和未来的Java 17 是长期支持版本(LTS),Oracle会支持3年,其他的只会支持6个月,新版本一出,就放弃老版本的技术支持。

这种快速的发布有好处吗?

有 ! 小步快跑一直是我们软件开发的利器,采用迭代的方式,每次发布一部分功能,推向开发人员去验证,典型的敏捷思路。

但是这种好处更有利于JDK的开发者,对使用Java的个人和公司来说,想要跟上每六个月就要升级的步伐,实在是太难了。JDK是个非常核心的基础设施, 除了安全漏洞,谁没事去升级生产环境的JDK啊?出了问题谁负责?

所以,按道理讲大家都会去找那些LTS的版本来升级,例如Java 11, 但是事实证明大部分人还在固守Java 8 :

这个调查显示,使用Java 8的公司和程序员高达80%, 这是为什么呢?大家为什么不升级到Java 11呢?

我个人觉得主要原因是对开发有利的重大特性升级很少,吸引力不够。

在过去的十几年中,Java相继引入的泛型、注解、NIO、函数式编程等核心功能,极大地影响了应用程序开发的方式,你能想象现在的Java中没有注解会是什么样子吗?

这几年的Java版本中,就缺乏这种重大功能的升级了,我把我有点印象的功能升级列一下:

注意黑体的这几项, Java 9引入了模块化系统,这是个看起来很美的特性,可是对程序员来说,这是一个破坏性的更新,因为JDK做了模块化,但是很多第三方库没有做模块化, 如果想让自己的项目也模块化,很有可能是一次不断填坑的经历,尤其在使用第三方库的时候。

Java 11的ZGC是个有吸引力的特性,它的设计目标是:支持TB级内存容量,GC暂停时间低(<10ms),对整个程序吞吐量的影响小于15%,确实挺让人激动的!如果真的实现了,程序员就可以可劲儿造对象,而不用考虑GC了,可惜这仍然是个实验性质的版本。

至于局部变量类型推导,也只是方便了变量的声明而已。

一个JDK的版本如果想被广泛采用,一定得能提升开发效率(如泛型、注解),带来变革,这样才有吸引力, 如果给程序员们带来了麻烦, 大家就会用脚投票了。

来源:http://www.news520.top/

最新文章

  1. android多线程断点续传下载文件
  2. JavaScript + PHP 实现刷新继续保持倒计时的按钮
  3. maven仓库私服配置
  4. Oracle基础(五) 权限管理
  5. Android 安全概述
  6. 使用Thinkphp框架开发移动端接口
  7. Android DatePickerDialog 只选择年月
  8. distinct() 去重复
  9. C#:继承多态的方法实现数的简单加减乘除运算
  10. Codeforces 869E The Untended Antiquity
  11. cookie 的增加,销毁,读取
  12. MongoDB $type条件操作符
  13. R语言学习——实例标识符
  14. 部署alinode监控线上应用
  15. 解决问题:CA_ERROR证书出错,请登录微信支付商户平台下载证书-企业付款到零钱接口(原创)
  16. CentOS7.4下部署hadoop3.1.1
  17. css3三角形冒泡泡图形制作
  18. keepalived + nginx 搭建负载均衡集群
  19. composer 安装yii2 The package is not available in a stable-enough version解决办法
  20. Angular 4 路由守卫

热门文章

  1. 数据库建表并返回给前端 - (mysql-thinkphp) (3)
  2. Windows驱动开发-设备读写方式
  3. firewalld学习-zone
  4. Android之Handler消息处理机制
  5. Stm32CubeMx lwip+freeRTOS TCP 服务
  6. Linux分发版本的试用及选择工具
  7. other#apache-commons
  8. 018、MySQL取满足日期在两个日期之间的所有数据
  9. 传入sql语句,执行完提取内容赋值到控件上
  10. 访问eureka 显示xml