您的位置:

JDK1.9新特性介绍

一、概述

JDK1.9是Java平台的又一次重大更新,于2017年9月21日正式发布,其中一些最重要的新特性包括Jigsaw模块化系统、jshell等等。在此之前,一些JDK1.9的预览版本在2016年和2017年公开发布,以便于Java社区进行测试和反馈。此外,JDK1.9是一个非常重要的里程碑,因为它是Java平台历史上的第一个长期支持版本。

二、新特性

1. Jigsaw模块化系统

Jigsaw是JDK1.9的主要新特性之一,它引入了Java平台的模块化系统。Jigsaw系统的主要目标是解决两个问题:第一个问题是代码的复杂性,第二个问题是库的依赖性。

模块化允许开发人员将应用程序和库分解为易于维护和管理的模块。每个模块包含特定的类和资源,并且只提供必要的信息。这有助于减少应用程序的安全漏洞,简化库的依赖关系,并提高应用程序的性能。

以下是一个简单的例子,说明如何在JDK1.9中使用模块:

module org.demo.billing {
    requires org.demo.utils;
    exports org.demo.billing;
}

这个模块定义文件称为module-info.java,它包含了应用程序模块的元数据。

2. jshell

jshell是junit的另一个新特性。它是Java编程语言的交互式shell,允许开发人员在不编写整个程序的情况下测试和尝试小段代码。jshell很容易使用,可以接受简单的Java表达式,甚至还可以接受语句。Java 9的JShell提供了一种交互式方法,用于编写和测试Java代码。

jshell功能可帮助开发人员更快地进行代码编写和测试。例如,开发人员可以尝试不同的Java语法和表达式,而不必先编写完整的应用程序。以下是一个简单的示例:

jshell> String name = "World"
name ==> "World"

jshell> System.out.println("Hello, " + name + "!")
Hello, World!

3. 多版本JAR文件

JDK 1.9提供了一种新的方式,即多版本JAR文件,允许创建只包含一个JAR文件,但包含多个版本的类。这对于依赖多个库的Java应用程序非常有用。您可以使用多版本JAR文件解决在不同版本的库之间存在冲突时的问题。

使用多版本JAR文件时,您需要在JAR文件中指定不同的类版本。以下是一个示例:

requirement: 'com.example.library:foo:2.0.0'
provide: 'com.example.library:foo:[1.0.0,2.0.0)', 'com.example.library:foo:2.0.0'

这段代码表示,该应用程序依赖于一个名为“com.example.library”的库,其中版本号为2.0.0。另外,该库提供了两个不同的版本:1.0.0到2.0.0之间的所有版本和2.0.0版本。

4. HTTP/2标准支持

JDK 1.9通过引入HTTP/2标准支持,支持了现代应用程序所需的大大改进的Web性能。HTTP/2引入了多路复用和二进制分帧等特性,从而显著提高了网络性能。

JDK 1.9中包含的HTTP/2实现是在Java SE平台中执行的。这意味着您不需要安装任何附加库或工具,即可使用HTTP/2功能。

5. 改进的安全性

JDK 1.9通过对Java平台核心API和库进行改进,提高了Java应用程序的安全性。JDK 1.9引入了SecureRandomParameters,这个新的API为SecureRandom类提供了更好的保护机制。此外,JDK 1.9现在默认禁用了标准的Java SE API,这些API在过去被发现存在安全漏洞。这意味着开发人员现在必须明确地启用这些API。

三、结论

JDK 1.9是Java平台历史上的一个里程碑,它带来了多项重要的新功能和性能改进。其中最重要的新功能之一是Jigsaw模块化系统,这有助于在Java应用程序中提高代码的可维护性和可管理性。此外,JDK 1.9的HTTP/2支持和改进的安全性,也进一步提高了Java应用程序的性能和安全性。