在2017年9月份,Java宣布了最新版本的Java。它是在Java 8发布3年多后发布的。Java 9是Java发布周期的转折点。
让我们从Java 9的最重要的特性 - Java平台模块系统开始。Java最大的问题在于它的运行时库。在一个大型平台上进行二十年的开发会造成损失。许多类都会纠结,就像您在大型代码库中所期望的那样。更重要的是,没有办法在JDK中封装类的私有实现。这导致了外部Jar包的激增,这取决于内部细节,这阻碍了Java平台的发展。
使用Java 9,JDK本身是模块化的,并配有90个独立的模块。一个模块将链接的数据包分组。其他模块只能访问从模块显式导出的软件包。最后,内部实现类可以真正封装。另外,模块可以表达对其他模块的显式依赖关系。这些依赖关系在编译和执行期间都会由模块系统进行检查。
模块也可用于模块化应用程序,而不仅仅是JDK本身。现在,您可以使用封装的包和显式的依赖关系来创建自己的模块,而不是使用脆弱的类路径。
这些模块为更多结构化和可靠的应用提供了一条途径。但是,Java模块系统不会在一夜之间改变Java环境。模块影响应用程序的设计,并在开发的所有阶段展现自己:开发,编译,打包和执行。在广泛采用模块系统之前需要时间。幸运的是,支持许多迁移场景以逐步演变为模块化应用程序和库。
除了模块系统之外,Java 9还具有提高开发人员生产力的小功能。例如,集合工厂方法允许您在单个语句中使用预定义元素创建不可变集合。不需要更烦人的解决方法来创建小的预定义集合。
另一个主要的生产力加速器是JShell,一个用于Java代码的Read-Eval-Print-Loop。您可以交互式地输入和评估JShell中的Java代码片段,而不用编译和运行小型代码来测试代码。探索性编程在您从REPL获得即时反馈时具有新的含义。JShell已经与IntelliJ IDEA等IDE集成,允许您打开一个可以访问应用程序代码的交互式环境。
运行新版本的Java通常意味着在不更改代码的情况下获得性能改进。Java 9也不例外。Compact Strings功能就是这种改进的一个例子。只能使用ASCII字符集完全表示的任何字符串只能以每个字符一个字节进行存储。字符串在ASCII范围之外的字符串每个字符通常有两个字节。大多数应用程序在作业中都有大量的String对象。如果它们是简单的字符串,则可以减少内存使用量。
Java 9中的另一个重要变化是默认情况下将Garbage Collector G1(垃圾优先)作为垃圾收集器。设计用于大桩,它提供可调整的休息时间目标,并可以执行增量收集。此更改的影响取决于您的应用程序的特性。一般来说,您可以通过更少的GC“停止世界”休息来获得更低延迟的代码执行。而G1GC则使用稍高的CPU功率来实现这一点。无论如何,切换到Java 9时,测试此垃圾回收器在您的特定应用程序上的行为非常重要。在某些情况下,分配模式不适用于G1GC方法,因此需要转移到另一个GC(或G1GC)。
开发人员的生产力特性远不是采用Java 9的唯一原因。该平台本身获得了许多增强安全性的新功能。Java 9中的大多数安全增强功能都与安全联网有关。(D)TLS的最新版本现在支持安全的HTTPS连接。另外,支持证书装订。
另一个安全增强功能是过滤输入串行数据的功能。序列化一直是Java存在的祸根,最近几年导致众多安全漏洞。您现在可以采用白名单或黑名单方法来过滤传入的序列化数据流,从而最大限度地减少Java序列化的攻击面。
到目前为止,我们已经关注了Java 9的特性。但Java 9的重要版本还有另一个原因:它标志着“功能驱动”Java版本时代的结束。过去,选择了一些重要的功能,当它们准备好时,就创建了一个新的Java主要版本。实际上,这导致主要版本之间至少有三年的时间。目前这是不可接受的,所以Oracle和OpenJDK项目正在转向基于时间的版本。
现在,每6个月发布一个新版本的Java。它将包含当时准备好的所有功能。在这6个月的版本中,如有必要,可能会发布重要修复程序的更新。这个新的发布时间表有几个含义。首先,Java版本变得更加频繁和可预测。目前的计划是在每年的3月和9月发布Java。新的版本号方案建议每六个月增加一次主要版本,这意味着2018年3月的下一个版本将是Java 10.然而,版本方案仍在讨论中。
对于许多组织来说,每6个月更新一次Java版本并不具有吸引力。因此,将会每三年指定一个长期版本(LTS)。LTS的第一个版本将于2018年9月发布。这也意味着Java 9将不会支持长期版本。
这些新的发布策略使Java比以往更加灵活。主要功能将分解为渐进式步骤并每6个月交付一次。每次完成时都会发布功能,如果缺少一个版本,则仅在6个月内就会有另一个版本。即使在20多年后,Java仍然以令人兴奋和加速的速度继续前进。
领取专属 10元无门槛券
私享最新 技术干货