Java 14 都要来了,为什么还有这么多人固守Java8?
作者:刘欣
从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的版本如果想被广泛采用,一定得能提升开发效率(如泛型、注解),带来变革,这样才有吸引力, 如果给程序员们带来了麻烦, 大家就会用脚投票了。
最新文章
- android多线程断点续传下载文件
- JavaScript + PHP 实现刷新继续保持倒计时的按钮
- maven仓库私服配置
- Oracle基础(五) 权限管理
- Android 安全概述
- 使用Thinkphp框架开发移动端接口
- Android DatePickerDialog 只选择年月
- distinct() 去重复
- C#:继承多态的方法实现数的简单加减乘除运算
- Codeforces 869E The Untended Antiquity
- cookie 的增加,销毁,读取
- MongoDB $type条件操作符
- R语言学习——实例标识符
- 部署alinode监控线上应用
- 解决问题:CA_ERROR证书出错,请登录微信支付商户平台下载证书-企业付款到零钱接口(原创)
- CentOS7.4下部署hadoop3.1.1
- css3三角形冒泡泡图形制作
- keepalived + nginx 搭建负载均衡集群
- composer 安装yii2 The package is not available in a stable-enough version解决办法
- Angular 4 路由守卫