由James Gosling(Java之父)开发的Java已走过30个年头,它逐渐发展成开发者最常用的编程语言之一。在各大语言排行榜上也始终处于前列。Java还曾夺得2005年以及2015年的TIOBE年度编程语言。近日权威软件开发杂志 SD Times发布的一篇Java 2021的文章,描述了Java 在这一年来的变化与发展趋势。

Java的发展进程

Java的首个版本于1995年面世,发展至今,Java已迭代更新了17个版本,目前最新版本是今年9月份发布的Java 17。在正式进入正文之前,先简单回顾一下Java的成长过程。

Java的发展进程要从1991年的Oak橡树开始,并在1995年更名为Java,发布Java 1.0版本。在1998,Sun将Java体系分为我们现在使用的三种:标准版(J2SE)、企业版(J2EE)和微型版(J2ME),随后在2005年,这三种版本又分别被更名为Java EE(现为Jakarta EE)、Java SE和J2ME。在2006年,Sun正式宣布Java开源,其实在Java代码发布之初,其源码便是可访问的。在Java 6发布之后,由于代码复杂性增加,JDK开源,经济危机等问题Sun在2007至2008两年间没有新版本发布。

2009年Oracle以每股9.5美元的价格将Java的开发公司Sun收购,至此Java易主。Oracle在2011年开始每隔三年发布一次Java版本。2014年发布的第一个LTS版本Java 8,更让许多开发者使用至今。2018年Orcale宣布每三年发布一次新版本更改为普通版本每隔半年发布一次,LTS版本已然还是每隔三年发布。

Java 8 被开发者弃用?

面对如此频繁的版本更新,开发者更偏爱哪个版本呢?由Snyk进行的一项调查显示,开发人员逐渐开始从Java 8向Java 11转移。之前对Java社区的调查报告发现,开发人员在现阶段主要使用的为Java 8,而不是升级到较新的版本。根据调查,有61.5%的受访者在编程的某些地方使用Java 11,而12%的受访者在使用当时最新的Java版本,也就是之前发布的Java 15。而在这些使用Java 11的受访者中,有一半的人再创建堆栈的某些时候还是使用的Java 8。

不难看出,即使Java 11和Java 17两个LTS版本面世,也未能消减开发者对Java 8的喜爱。无论是函数式编程,还是对集合进行处理的Streams等特性,都让开发者使用Java编程更简单快捷,而且Java作为一门面向对象的编程语言,长时间使用Java 8的开发者都已经积累了大量的库,这些库让开发者可以省时省力高效地满足程序所需。无论是出于什么原因,开发者对Java 8的喜爱都证明了Java 8 yyds。

2021,Java这一年

在今年3月份,Java 16正式发布,引入了许多新的增强功能,例如Vector API (Incubator)(JEP338)、支持C++ 14语言特性的(JEP 347)、基于值的类的启用警告(JEP 390)等17个功能。

6个月后,Java 17作为继Java 11之后的最新长期支持版本(LTS版本),在12月正式发布,该版本发布的14个JEP分别为:

  • 306:恢复始终严格的浮点语义
  • 356:增强型伪随机数发生器
  • 382:新的 macOS 渲染管道
  • 391:macOS/AArch64 端口
  • 398:弃用即将删除的 Applet API
  • 403:强封装JDK的内部API
  • 406:Switch模式匹配(预览)
  • 407:删除 RMI 激活
  • 409:密封类
  • 410:删除实验性 AOT 和 JIT 编译器
  • 411:弃用即将删除安全管理器
  • 412:外部函数和内存 API(孵化器)
  • 414:Vector API(第二次进行特性孵化)
  • 415:特定于上下文的反序列化过滤器

此外,Oracle还加强了对客户的支持,它与开发者社区合作,改进LTS版本调度,使企业在迁移到最新的LTS版本时能更灵活。而下一个LTS版本将是2023年9月发布的Java 21,这将使LTS版本发布周期从三年变为两年。

为了使Java的LTS版本更容易获得,Ooracle修改了Java的使用许可证。Java 17和以后的版本会免费提供,直到下一个LTS版本发布后一年。Ooracle公司也将继续根据开源通用公共许可证 (GPL) 发布 Oracle Open JDK 发行版。

Java 17的另一个焦点是加速Java在云环境中的应用。最近,Ooracle推出了Java管理服务,这是一个用于管理Java运行时和应用程序的Oracle云基础设施(OCI)服务。据该公司称,它提供了对Java部署的可见性,突出显示了未计划的Java应用,并检查是否已经应用了最新的安全补丁。

据最新的Open JDK显示,Java18的部分功能也已经上线,例如JEP-400:默认为utf -8,JEP-408:简单的Web服务器Java API文档中的代码片段,以及其他的7个更新。预计Java 18会再2022年3月22日正式发布。

企业级Java又站起来了?

Eclipse基金会执行董事Mike Milinkovich针对该基金会2021年Jakarta EE开发者调查的结果表示:“自从Java EE从Oracle转移到Eclipse基金会,并且更名为Jakarta EE后,企业级Java的使用者数量就开始慢慢回升。”

据该开发者调查显示,人们对于云原生空间中的企业级Java越来越感兴趣。约有60%的受访者表示自己使用Spring或Spring Boot作为云原生Java框架,有47%使用Jakarta EE(原名Java EE后更名为Jakarta EE)。 为企业级Java提供微服务架构的Eclipse MicroProfile的使用率也从上一年的29%上升到34%。

云原生框架使用率数据(图片来源Jakarta EE官网)

Jakarta EE20年与21年使用率对比(图片来源Jakarta EE官网)

Eclipse MicroProfile20年与21年使用率对比(图片来源Jakarta EE)

微软加入JCP,助力Java发展

在11月份,微软宣布已经签署了 Java 规范参与协议(JSPA),正式加入 Java Community Process(JCP)计划。JCP是为Java技术开发标准技术规范的机制,支持对提交Java API建议感兴趣的个人开发人员、客户和供应商之间的协作。在此之前,该公司也表示自在4月份Microsoft Build of OpenJD以来,微软内部对Java的使用率大幅度增加,除了大量的内部Java使用外,还有许多客户和开发人员在Microsoft Azure和GitHub上编写和运行Java。

微软Java工程组首席项目经理Bruno Borges曾在一篇宣布构建的帖子中写道:“Java是至今为止最重要的编程语言之一,开发人员正使用Java构建着从关键的企业应用到业余机器人的一切。在微软,我们看到客户在我们的云服务和开发工具中使用Java的情况越来越多。微软一直在努力面向客户和开发者提供更好的Java支持。”

同时微软还宣布将长期支持Open JDK11和Open JDK17的LTS版本,此前在2021 年9月,甲骨文公司提出了商业Oracle JDK二进制文件的两年制LTS节奏,微软这次明确表态将跟随甲骨文的脚步,Microsoft Build of OpenJDK也会保持两年制LTS更新节奏。

相关微软加入JSP的详细报道看这里。

回顾这一年来Java的发展,有哪些让你欣喜的新功能发布,又有哪些要命的Bug害你熬夜加班。Java这30年来在不断地发展与进步。你也在不断地学习与成长,在这条漫长的程序人生路上,你又走过了一年。明天就是新的一年了,你有什么想对自己说的吗,可以在评论区留言。

相关内容:2021年。一个依旧不稳定的年份

如果你想要了解其他的年度故事可以访问这个网址:2021 year in review Archives - SD Times

参考链接:Year in Review 2021: Java - SD Times

更多推荐

2021 Java 这一年