What’s New in Oracle JDK 9
https://docs.oracle.com/javase/9/whatsnew/toc.htm[英文原文]
E77563-05
September 2017
Overview of What’s New in JDK 9
JavaSE 9 是一个大版本. 下边是 Oracle JavaSE 9 及 JDK 9 的一些特性及改进。
一条 JEP 是为 JDK 设计及实现改进的提议。
http://openjdk.java.net/jeps/1[查看 JEP 1: JDK 改进提议及处理流程。]
JSR 描述了对 Java 平台的提议及最终确认的标准。
https://www.jcp.org/en/jsr/overview[看 JSR 介绍。]
JDK 9 中的关键改变
These changes affect more than one technology area.
这些改变影响多种技术领域。
|特性 |说明
|Java 模块系统 |Java 模块化系统引入了一种新的编程组件 —— 模块,模块自声明了一系列代码及数据。模块系统:
在编译阶段及运行阶段引入新的阶段(可选)——链接过程,此阶段一系列模块可以组装并优化成特定的运行时镜像(image);
查看 JavaSE 工具参考中的 https://docs.oracle.com/javase/9/tools/jlink.htm[jlink] 工具说明。javac、jlink、java 等工具都增加了模块路径选项,指明模块定义位置。
引入模块化 JAR 文件,JAR 文件根目录中的 module-info.class 文件。
引入 JMOD 格式,类似 JAR 的一个打包格式,但是 JMOD 可以打包原生代码及配置文件;查看 jmod 工具。(TODO)
The JDK itself has been divided into a set of modules. This change:
JDK 本身也拆分成了一系列模块,包括:
-
支持 JDK 模块组合成多种配置,包括:
- JRE 及 JDK 对应配置。
- 近似 Java SE 8 中定义的 http://openjdk.java.net/jeps/161[紧凑模式]。
- 只包含特定模块及相关模块的定制配置。
为容纳模块及提升性能、安全及可维护性,重新组织 JDK 及 JRE 运行镜像。
为避免暴露存储在镜像中的命名模块、类、资源内容的结构或格式,定义新的 URI 模式。
删除 endorsed-standards 重载及扩展机制。
从 Java 运行时镜像中删除
rt.jar
及tools.jar
。JDK 内部 API 默认不可访问,一些关键、广泛使用的会直到大部分功能有替代品时不可访问。
运行命令jdeps -jdkinternals
检查你的代码使用了哪些 JDK 内部 API。
更多信息请参阅:
http://openjdk.java.net/projects/jigsaw/spec/[Java 模块系统]
http://openjdk.java.net/jeps/261[JEP 261: 模块系统]
http://openjdk.java.net/jeps/200[JEP 200: JDK 模块化]
http://openjdk.java.net/jeps/220[JEP 220: 运行时镜像模块化]
http://openjdk.java.net/jeps/260[JEP 260: 封闭大多数内部 API]
|JEP 223: 新的版本号编码方式
|
提供简单的版本号格式明确区分主版本、小版本、安全版本及修正版本更新发布
新的版本号格式如:
MINOR.PATCH
$MAJOR 在主版本发布时增加。
如 JDK 9, 包含大量的 Java SE 标准指定的新特性。
主版本包含很早就计划并公布要增加的新特性及现有特性修改。
$MINOR 在小版本更新时增加,如问题修正,标准 API 修正,或者实现 Java 之外标准。
$SECURITY 在安全更新发布时增加,包含关键修正及提升安全性修改。
$PATCH 是包含安全及经过测试的高优先级客户的问题修正。
查看 JavaSE 安装指南中的 https://docs.oracle.com/javase/9/install/version-string-format.htm[新版本号格式]
|###
JDK 9 安装程序更新
JDK 9 增强了 Microsoft Windows 及 macOS 平台安装程序。
Microsoft Windows 安装程序增强
|###
|特性 |说明
|安装程序界面中可以启用或禁用 Web Deployment
|在安装程序欢迎页提供启用或禁用 Web Deployment 选项。
要启用 Web Deployment ,在欢迎页面选择定制安装,点击安装后在浏览器复选框中选择启用 Java 内容。
|###
macOS 安装程序增强
|###
|Feature |Description
|CPU 版本号
|卸载当前 CPU 版本后新 CPU 版本可用时提供通知。
|用户体验
|提升 JRE 升级用户体验。
|###
JDK 9 工具更新
JDK 9 中这些工具有增强。
|###
|特性 |说明
|JEP 222: jshell: Java 命令行 (Read-Eval-Print Loop)(**老唐:直接输入 jshell 进入命令行模式,可以写简单的代码直接允许)
|Java 平台增加了 Read-Eval-Print Loop (REPL) 功能。
jshell
工具提供了命令行接口用于执行 Java 语言的声明、语句及表达式
jshell 即时反馈能方便原型试验及探索代码不同参数选项。
即时反馈加上启动表达式对于学习 Java 语言或者新的 API 或新特性都很有帮助。
参考 JavaSE 工具参考中的 https://docs.oracle.com/javase/9/tools/jshell.htm[jshell] ,及 JavaSE Java Shell 用户指南中的 https://docs.oracle.com/javase/9/jshell/introduction-jshell.htm[JShell 介绍]
The JShell API enables applications to leverage REPL functionality. See the jdk.jshell package.
JShell API 允许应用程序借助 REPL 功能。参考 https://docs.oracle.com/javase/9/docs/api/jdk.jshell-summary.html[jdk.jshell] 包.