现在是敏捷开发时代了,流行小迭代, Java 现在的每六个月更新一次的发版频率就是小迭代。
Java开发团队可谓是“高产似母猪”,每隔几个月就冒出一个新版本出来,很多人对Java8都没有精通,但是Java11、12、13、14都已经发布了……
这么高的发布频率有什么用?
首先我们看看2020年1月Tiobe官网发布的编程语言排行榜:
Java依然稳居第一位,一哥的地位杠杠的,并且有越来越多的人使用Java,这是驱使官方不断优化更新的理由之一。
Java的不断迭代从另一个角度证明了其火热程度,虽然这些变化让人头晕目眩,但其目的是为了给世界上最流行的语言提供高质量、频繁且在计划内的更新,同时让语言开发团队保持高度活跃,以便让程序员们更好地探索Java语言。
01
企业应该升级吗?
在Java8之前,用户接受更高版本的Java的过程非常缓慢,想要跟上每六个月就要升级的步伐,实在是太难了。
对于企业来说,这种升级分分钟会带来兼容性的致命问题,风险也是非常大的,尤其面对庞大而又复杂项目。
而且 JDK 是个非常核心的基础设施,除了安全漏洞,基本上是不会再去动生产环境JDK了,而且出了安全事故谁也承担不了这个责任。
02
事实证明大部分人还在用Java8
从Java8之后,Java的发布周期明显快了很多,而根据调查显示,80%的受访者仍然在使用Java8。
在这么多的版本中,只有Java8、Java11和未来的Java17是长期支持版本(LTS),Oracle会支持3年,其他的只会支持6个月,新版本一出,就放弃老版本的技术支持,这也是很少有人使用9~14的版本的原因。
03
既然高频更新,为什么开发人员还在坚持使用Java 8呢?
第一,Java8开创性的语言特性还在被编程社区吸收。
即使到了2019年,网上仍然在热烈讨论关于Steam和Optional的相关问题,Baeldung自己也发布了Java8Optional 指南。
第二,Java9引入了模块化系统,这是个看起来很美的特性,可是对程序员来说,这是一个破坏性的更新,因为JDK做了模块化,但是很多第三方库没有做模块化。
如果想让自己的项目也模块化,很有可能是一次不断填坑的经历,尤其在使用第三方库的时候。
第三,在Java8之后,新版本的特性似乎没有足够的说服力让人们下决心更新。
第四,在2019年1月份之后,JavaSE8的公共更新需要商业许可,这也是OracleJDK与 OpenJDK 之争的开始。
此外,在不同的供应商那里是否可以得到免费更新的相关计划,以及 (新的和现有的) 付费的支持模型,这些都是人们考虑是否更新的因素。
框架:Spring占据主导地位
在框架的采用方面,Spring占据了主导地位。与传统且臃肿的JavaEE相比,Spring是现代化的、基于Java的企业应用程序的轻量级框架。SpringBoot的采用率也很高。
构建工具: Maven 断层式第一
在Java构建工具的调查中,Maven以相当大的优势排在了第一位,这表明排在第二位的 Gradle 仍然是Android的代名词,之后需要做更多的努力来摆脱这些限制,以便被开发者认可成为Java构建通用实践的一个可行选择。
IDE:IntelliJ大比例占据一位, Eclipse 份额持续下降
在IDE的调查中,IntelliJ以将近60%的份额占据了第一的位置。为什么IntelliJ如此受欢迎呢?
Jetbrains市场总监安德烈·切普索夫曾在一篇博客中这样写道:“在你编写代码时,IntelliJ IDEA也忙着在构建它的语法树,在类、变量、字段、方法和它们的用法之间创建引用,分析执行流,利用这些信息,它可以提供补全功能,帮助你快速浏览代码,提供错误分析和方便的快速修复。”
而传统的Eclipse则有点不妙,其占比从去年的38%下降到32.8%。
Web/应用服务器: Tomcat 占据第一
早在2011年,Forrester的首席分析师迈克·瓜蒂埃里就写过一篇既有预见性又不受时间限制的文章,名为《停止在 WebLogic 、 WebSphere 和 JBoss 应用服务器上浪费金钱》他开头写道:“使用Apache Tomcat 吧,它是免费的。”
事实证明,Tomcat一直保持着轻量级的资源消耗,毫无争议地击败 Jetty、WebLogic、WebSphere 、JBoss等夺得了冠军。
数据库:关系型数据库比 NoSQL 更受欢迎
MySQL和 PostgreSQL 是前两名,Oracle排名第三,第四、第五名分别是 MongoDB和MSSQL。
这里有两个值得注意的趋势,与Percona的数据库管理系统流行度调查结果一致,关系型数据库管理系统胜过NoSQL,而开源数据库管理系统则比大型商业数据库管理系统做得更好。就像前文中的Web服务器一样,人们寻求的也是更轻量级的等价物,尤其是PostgreSQL。
04
我们需要不断地学习Java新版本吗?
最新的版本就一定是最好的吗?并不见得。
因为Java8被个人/企业所广泛运用,用的时间长了,bug都差不多被找出来了,只会更加稳定、顺手。 对于企业来说,稳才是重中之重,甚至有的企业还在用Java1.7版本。
那程序员们还有必要学习Java的新版本吗?
我认为是 有必要 的。
从技术来看: Java小版本更新基本上都是修复各种漏洞和bug,不会去改变现有的JDK,JDK其实都差不多,我们只需要知道它新增了什么功能而已,从这一点来看其实也增加不了很多的学习成本。
当Java大版本的更新,比如JDK7->JDK8,会增加一些新特性,花几个小时看看realse note就可以完成学习了,同样花不了程序员们的很多时间。
从个人来看: 虽然很多公司还在用JDK6-7-8,但是我们更应该关注的是自身的知识基础和学习能力, 不要因为现在公司的Java技术停留在某个版本上面而放弃学习,我们可以不为企业更新Java版本,但我们要为自己的知识深度与广度学习更多的Java知识。
如果你只会Java1.7,那么你的求职范围只能在使用Java1.7的公司中,一个用得上Java8、11、12的公司为什么要招一个连Java8都不会的人呢?
除了留意版本更新,程序员们同时要留意基于Java的一些流行框架和新技术,比如近几年兴起的SpringBoot、SpringCloud等。
一句话就可以概括:企业升不升级是他的事,你学不学是你的事。