1. 概述
Java 9于2017年9月发布,在之前的Java版本基础上,又引入了许多新的功能和增强。这些新特性主要涉及模块化、性能、安全等方面,下面将逐一介绍。
2. 模块化(Jigsaw)
2.1 模块化概念
Java 9引入的最大变化之一便是模块化系统。在Java 9之前,JDK是以包的概念进行组织的。但是,这种方式会导致以下问题:
命名空间的混乱,容易出现类重复的情况
关注点的分散,类与类之间耦合度高
难以获取到项目的依赖关系
因此,Java 9引入了模块化系统,使得程序的组织和依赖更加清晰明确。
2.2 模块化的使用
模块化将程序分成若干个模块,每个模块有自己的名称和版本号,并可以指定依赖其他模块。在模块化系统中,每个模块都可以使用module-info.java
文件声明自己的信息。
module com.example.mymodule {
requires java.base;
requires com.example.myothermodule;
}
在上面的例子中,com.example.mymodule
和com.example.myothermodule
是两个不同的模块,通过requires
语句指定了com.example.mymodule
依赖了java.base
和com.example.myothermodule
。
2.3 模块化的优势
模块化系统的优点可以概括为以下几点:
更加高效的编译和部署过程
更加灵活的库和应用程序的组织方式
更好的可靠性和安全性
3. 性能增强
3.1 改进的JIT编译器
Java 9引入了一个全新的JIT编译器,代码执行速度比之前的编译器更快,同时还能更好地优化各种不同类型的代码。
3.2 G1垃圾回收器的改进
G1垃圾回收器已成为Java 9的默认垃圾回收器。和其他垃圾回收器相比,G1垃圾回收器的一个优点是它可以同时进行垃圾回收和应用程序执行。同时,Java 9还引入了一种用于垃圾回收的低延迟垃圾回收器,可以更好地应对要求高性能的场景。
4. 安全增强
4.1 规范HTTP客户端API
Java 9引入了一套标准的HTTP客户端API,这个API与Java SE平台一起提供,用于发起HTTP请求和处理响应。这个API提供了一个更加现代化的实现方式,并支持HTTP/2和WebSocket协议。
4.2 改进的默认强度和算法
Java 9改进了默认的加密强度和算法,使SSL/TLS连接更加安全。同时,Java 9增加了一些新的加密算法。
4.3 处理根证书的内置证书管理器
Java 9引入了内置证书管理器,用于管理可信根证书、中间CA和吊销证书。这个证书管理器可自动从系统根证书管理器中提取证书,可以更好地提高安全性。
5. 其他增强
5.1 私有接口方法
Java 9增加了私有接口方法,使得我们可以在接口中定义私有方法,这些方法只能在接口内部使用。这个功能可以让我们更加方便地封装实现细节。
public interface MyInterface {
default void myMethod() {
privateMethod();
}
private void privateMethod() {
// do something
}
}
5.2 集合工厂方法
Java 9增加了一些用于集合实例化的工厂方法。这些工厂方法可以更加简洁地创建不同类型的集合,并且可以避免我们手动指定类型参数。
List list = List.of("A", "B", "C");
Set set = Set.of(1, 2, 3);
Map map = Map.of("A", 1, "B", 2);
5.3 Java REPL(JShell)
Java 9引入了Java REPL(Read-Eval-Print Loop)工具JShell,可以更加方便地进行代码调试和学习。JShell允许我们在命令行上输入代码片段,然后立即运行并显示结果,实时反馈错误信息。
6. 总结
Java 9引入了许多新功能和增强,从模块化到性能、安全和其他方面,不仅提高了Java的性能和安全性,也让开发人员更加方便地使用Java编写程序。不难看出,Java 9是Java平台上一个非常重要的版本。