原文档地址:What’s New in Oracle JDK 9 Release 9

JDK9中Nashron的更新

1.Nashorn的parser API
应用,尤其是在IDE和服务端框架中,可以解析并分析ECMAScript代码。
通过Parser方法,可以从字符串、URL、文件中解析ECMAScript代码。这些方法返回CompilationUnitTree,它是以抽象语法树表示ECMAScript代码。
Nashorn的parser API包含在jdk.nashorn.api.tree

2.Nashorn中实现部分ECMAScript6特性
实现ECMA-262第六版(又称ECMAScript6或ES6)中提出的诸多新特性,包括:

  • 模板字符串
  • let、const和代码块作用域
  • iterators和for...of循环
  • Map、Set、WeakMap、WeakSet
  • Symbols
  • 二进制和八进制的字面量

JDK9中客户端技术的更新

1.多分辨率的图片
一系列不同解析度的突变被包装成多解析度图片。这可以为适配不同分辨率(96dpi-300dpi)的显示设备的应用运行时所用。
接口java.awt.image.MultiResolutionImage封装了一系列不同分辨率的图片,使应用可以方便地操作并显示不同分辨率的图片。

2.准备JavaFx UI控制和模块化的CSS API
提供公共API给JavaFX UI控制和之前只支持内部包现在由于模块化而无法访问的CSS。
新的包javafx.scene.control.skin包含了一系列提供各UI组件默认皮肤(外观)实现的类
新的CssParser是一个返回Stylesheet的CSS组件,StyleSheet给用户更多应用中CSS风格的控制。它是CSS API的一部分(javafx.css)。CSS API包含新的支持类,有一系列标准的解析器用到的转换器,详见javafx.css.converter包。

3.BeanInfo注解
使用JavaBeanBeanPropertySwingContainer取代Javadoc的@beaninfo。
这些注解分别对应的BeanInfo的特定通能。因此你可以更方便地使用这些注解,而不用为每个类特意创建一个BeanInfo类。这也能用于移除自动生成的类,使得更方便地模块化客户端类库。

4.读写TIFF图像
javax.imageio包支持标签图像文件格式(TIFF)的读写。新的javax.imageio.plugins.tiff包提供了简化控制TIFF元数据的类。

5.HiDPI在Windows和Linuxs的支持
在windows和linux支持自动伸缩AWT和Swing组件的HiDPI显示。
JDK已经在OS X支持HiDPI“retina显示”。
之前的Windows和Linux发布版本是基于像素进行缩放和渲染的,即使在HiDPI显示器上,也会产生传统显示器2-3倍的像素密度。这也让GUI组件和窗口变得很小很难看清。

6.平台特定的桌面特性
在类java.awt.Desktop中增加额外的方法,使用户与桌面进行交互,包括:

  • 展示自定义的关于和首选项窗口。
  • 处理打开或打印一系列文件。
  • 处理打开URL。
  • 打开原生帮助显示应用。
  • 设置默认菜单栏。
  • 启用、禁用应用可以立即终止。
    这些新方法取代了OS X包com.apple.eawt中内部API方法,这些在JDK9中不可用了。注意com.apple.eio也不再可用。

7.Linux上启动GTK3
启用Java图像应用,无论是基于JavaFX、Swing、AWT的应用,在Linux或Solaris上使用GTK+ v2或v3
默认Linux或Solaris上JDK会优先使用可用的GTK+2,之后才会选择GTK+3。
使用特定版本的GTK+,需要设置系统属性jdk.gtk.version。这个系统属性可以设置成2、2.2或3。必须在应用加载GTK+之前设置,且不能和之前其他工具加载的GTK+版本冲突

JDK9中i18n的更新

1.Unicode 8.0
支持Unicode 8.0。JDK8支持Unicode6.2。
Unicode6.37.0和8.0一共引入10,555个字符、29个script、42个块,这些都在JDK9中支持。

2.默认启用CLDR本地数据
使用通用本地数据仓库(CLDR)基于XML的地域数据,首先在JDK8中被引入。JDK9将其作为默认地域数据。之前的版本默认使用JRE。
为了兼容JDK8,设置系统参数java.locale.providers在CLDR之前加上COMPAT。

3.UTF-8配置文件
加载UTF-8编码的配置文件。之前的版本中使用的是ISO-8859-1编码来加载属性文件。UTF-8可以更方便地表示非拉丁字符。
大多数现存的配置文件不会受影响。