本文导读
➤JDK 9 中部署的新功能
➤ JDK 9 中 Java 语言的新特性
➤ JDK 9 中 Javadoc 的新功能
➤ JDK 9 中 JVM 的新特性
➤ JDK 9 中 JVM 调优的新功能
JDK 9 中部署的新功能
不赞成使用Java插件
在Oracle JDK 9版本中弃用Java插件和关联的小应用程序技术。在JDK 9中仍然可用,这些技术将被考虑在将来的版本中从Oracle JDK和JRE中删除。
嵌入在网页中的Applet和JavaFX应用程序需要Java插件才能运行。考虑将这些类型的应用程序重新编写为Java Web Start或自包含的应用程序。
请参阅在Java平台标准版部署指南中将Java Applet迁移到Java Web Start和JNLP和自包含应用程序打包。
增强的Java控制面板
改进Java控制面板中选项的分组和显示。信息更容易找到,可用字段搜索,并且不再使用模态对话框。请注意,某些选项的位置已从先前版本的Java控制面板中更改。
请参阅在Java平台,标准版部署指南中Java控制面板。
JEP 275:
模块化Java
应用程序打包
将Project Jigsaw的功能集成到Java Packager中,包括模块感知和自定义运行时创建。
利用该jlink工具创建更小的包。
创建程序只能使用JDK 9运行时。不能使用早期版本的JRE来运行打包应用程序。
请参阅在Java平台,标准版部署指南中JRE的定制和打包的模块化应用。
JEP 289:
弃用Applet API
弃用Applet API,因为Web浏览器供应商删除对Java浏览器插件的支持,导致这个功能越来越不太有用。在JDK 9中这个功能仍然可用,Applet类将在以后的版本中被考虑删除。考虑将applet重写为Java Web Start或自包含的应用程序。
请参阅在Java平台,标准版部署指南中将Java Applet迁移到Java Web Start和JNLP和自包含应用程序打包。
JDK 9 中 Java 语言的新特性
Java SE 9中包含了一些非常小的语言更改。
JEP 213:
Milling Project Coin
确认一些小的变化:
• 允许@SafeVargs私有化实例方法。
• 允许有效地将最终变量用作try-with-resources语句中的资源。
• 如果推断类型的参数类型是可表示的,则允许具有匿名类的diamond 。
• 完成从Java SE 8开始的,从合法的标识符名称集合中,删除下划线。
• 添加对私有接口方法的支持。
请参阅在Java平台,标准版的Java语言的更新中Java语言在Java SE 9中的改变。
JDK 9 中 Javadoc 的新功能
Javadoc增强功能包括以下内容:简化的Doclet API,Javadoc搜索,支持生成HTML5输出以及支持模块系统中的文档注释。
JEP 221:
简化的Doclet API
用新的简化API替代旧的Doclet API,利用其他标准的现有API。标准doclet已被重写,以使用新的Doclet API。
注意:
现有的API和旧的标准doclet可用,但尚未更新以支持新的语言功能,如模块。
JEP 224:
HTML5 Javadoc
支持生成HTML5输出。要获得完全兼容的HTML5输出,请确保文档注释中提供的任何HTML内容都符合HTML5。
JEP 225:
Javadoc Search
为生成的API文档提供搜索框。使用此搜索框查找文档中的程序元素,标记的单词和短语。
JEP 261:模块系统
支持模块声明中的文档注释。包括新的命令行选项来配置要记录的模块集,并为任何正在记录的模块生成新的摘要页面。
JDK 9 中 JVM 的新特性
这些是JDK 9中的JVM增强功能。
JEP 165:
编译器控制
提供通过编译器指令选项控制JVM编译的方法。控制的级别是运行时管理和方法的指定。编译器控件取代了CompileCommand并向后兼容。
请参阅在Java平台,标准版Java虚拟机向导中编译器控制。
JEP 197:
分段代码缓存
将代码高速缓存分成不同的段,每个段都包含特定类型的编译代码,以提高性能并启用未来的扩展。
请参阅在Java平台,标准版工具参考中java。
JEP 276:
语言定义对象模型
的动态链接
在运行时动态链接高级对象操作,例如读取属性,编写属性和调用函数到相应的目标方法句柄。它根据传递的值的实际类型将这些操作链接到目标方法句柄。这些对象操作表示为invokedynamicsites。
虽然java.lang.invoke提供了一个用于动态链接invokedynamic调用站点的低级API ,但它并没有提供一种方法来表达对象的更高级别操作,也不提供实现它们的方法。
使用包jdk.dynalink,您可以实现其表达式包含动态类型(无法静态确定的类型)的编程语言,并将这些动态类型的操作表示为invokedynamic调用站点(因为语言的对象模型或类型系统不会紧密匹配JVM)。
JDK 9 中 JVM 调优的新功能
这些是JDK 9中的JVM调优增强功能。
提高G1的可用性,
确定性和性能
增强垃圾回收(G1)垃圾收集器,自动确定几个重要的内存回收设置。以前,必须手动设置这些设置才能获得最佳结果。此外,还解决了G1垃圾收集器的可用性,确定性和性能问题。
JEP 158:
统一JVM记录
为JVM的所有组件引入通用日志记录系统。
请参阅Java Platform,Standard Edition Tools Reference中的-Xloggc java选项。
JEP 214:
删除JDK 8中不推荐
使用的GC组合
删除在JDK 8中不推荐使用的垃圾收集器(GC)组合。
这意味着以下GC组合不再存在:
• DefNew + CMS
• ParNew + SerialOld
• 增量CMS
同时标记扫描(CMS)的“前景”模式也已被删除。以下命令行标志已被删除:
-Xincgc
-XX:+CMSIncrementalMode
-XX:+UseCMSCompactAtFullCollection
-XX:+CMSFullGCsBeforeCompaction
-XX:+UseCMSCollectionPassing
命令行标志-XX:+UseParNewGC不再有效果。ParNew只能与CMS一起使用,CMS需要ParNew。因此,该-XX:+UseParNewGC标志已被弃用,将来可能会被删除。
JEP 248:使G1成为
默认垃圾收集器
在第32和64位服务器配置上,将Garbage-First (G1)作为默认垃圾收集器(GC)。使用诸如G1之类的低暂停收集器为大多数用户提供比面向吞吐量的收集器(例如以前是默认值的Parallel GC)更好的整体体验。
请参阅在Java平台,标准版的HotSpot虚拟机垃圾收集调优指南中 Garbage-First 垃圾收集器
JEP 271:
统一GC记录
使用JEP 158中引入的统一JVM日志记录框架对垃圾收集(GC)进行日志记录。GC记录以与当前GC记录格式一致的方式重新实现; 然而,新旧格式之间存在一些差异。
请参阅在Java平台,标准版工具参考中启用日志记录使用JVM统一日志记录框架。
JEP 291:弃用并发
标记扫描(CMS)
垃圾收集器
不推荐使用并发标记扫描(CMS)垃圾回收器。使用该-XX:+UseConcMarkSweepGC选项在命令行上请求时发出警告消息。垃圾回收(G1)垃圾收集器旨在替代大多数CMS使用。
下期导读☟
➤JDK 9中核心库的新功能
➤ Nashorn在JDK 9中的新功能
➤ JDK 9中客户端技术的新功能
➤ JDK 9中的国际化新进展
➤ 文档辅助功能
英文原文☟