概述
- java9是一个主要版本的发布
- 这里介绍的是Oracle对JDK9的特性和增强的实现
- JEP是JDK的增强提案,包括增强建议和路线图流程
- JSR(Java规范请求),描述了针对Java平台的建议和最终规范
JDK9主要变更
Java统一模块化标准
-
这是全新的Java编程组件模块,是可命名的、可自描述的代码和数据集合。
-
JDK本身也被分成模块化
- 允许把JDK模块组件自由组合成你需要的
- 定义一个新的URI方案,资源包含命名模块、类和存储运行环境
- java运行环境移除了rt.jar和tool.jar
- 默认情况下JDK大部分内部API无法访问,执行命令jdeps -jdkinternals查看代码中是否使用内部JDK API
-
更多信息见:
JEP 223:新的版本方案
$MAJOR.$MINOR.$SECURITY.$PATCH
- $MAJOR主要版本,如JDK9,包含平台规范的新特性和对已有特性的更改
- $MINOR次要版本,包含bug修复、标准api的修订和平台规范之外的特性实现
- $SECURITY安全更新版本,包含关键修复和提高安全性的必要措施
JDK9新工具增强
- JEP 222: jshell: The Java Shell (Read-Eval-Print Loop):提供了交互式命令行窗口
- JEP 228: Add More Diagnostic Commands:提高对Hotspot和JDK问题的诊断能力
- JEP 231: Remove Launch-Time JRE Version Selection:移除了启动时检查JRE版本
- JEP 238: Multi-Release JAR Files:提供多版本JAR
- JEP 240: Remove the JVM TI hprof Agent:从JDK中删除了hprof代理
- JEP 241: Remove the jhat Tool:从JDK中移除了jhat tool
- JEP 245: Validate JVM Command-Line Flag Arguments:校验JVM命令行标志参数
- JEP 247: Compile for Older Platform Versions:增强javac,可以编译代码为早期版本
- JEP 282: jlink: The Java Linker:提供Java版的链接时间
JDK9安全增强
- JEP 219: Datagram Transport Layer Security (DTLS):支持安全套接字和SunJSSE支持DTLS(数据包传输层安全)
- JEP 244: TLS Application-Layer Protocol Negotiation Extension:支持TLS(传输层安全)协议
- JEP 249: OCSP Stapling for TLS
- JEP 246: Leverage CPU Instructions for GHASH and RSA
- JEP 246: Leverage CPU Instructions for GHASH and RSA
- JEP 273: DRBG-Based SecureRandom Implementations
- JEP 288: Disable SHA-1 Certificates
- JEP 229: Create PKCS12 Keystores by Default
JDK9部署增强
- Deprecate the Java Plug-in:Java插件被标记为过时的
- Enhanced Java Control Panel:增强Java控制面板
- JEP 275: Modular Java Application Packaging
- JEP 289: Deprecate the Applet API:Applet API被标记为过时的
JDK9对java语言的增强
JDK9对Javadoc的增强
- Javadoc增强包含简化的Doclet API、Javadoc搜索、支持生成HTML5、支持模块系统中的注释
- JEP 221: Simplified Doclet API
- JEP 224: HTML5 Javadoc
- JEP 225: Javadoc Search
- JEP 261: Module System
JDK 9对JVM的增强
- JEP 165: Compiler Control
- JEP 197: Segmented Code Cache
- JEP 276: Dynamic Linking of Language-Defined Object Models
JDK 9对JVM调优的增强
- Improve G1 Usability, Determinism, and Performance:增强垃圾回收器(G1)
- JEP 158: Unified JVM Logging:统一JVM日志
-
JEP 214: Remove GC Combinations Deprecated in JDK 8
-
删除了JDK 8中标记过时的GC组合
- DefNew + CMS
- ParNew + SerialOld
- Incremental CMS
-
删除相应参数:
- -Xincgc
- -XX:+CMSIncrementalMode
- -XX:+UseCMSCompactAtFullCollection
- -XX:+CMSFullGCsBeforeCompaction
- -XX:+UseCMSCollectionPassing
-
- JEP 248: Make G1 the Default Garbage Collector:标记G1为默认GC
- JEP 271: Unified GC Logging:统一GC日志
- JEP 291: Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector:CMS标记为过时
JDK 9核心库
- JEP 102: Process API Updates:进程API,java.lang.ProcessHandle可以获取进程ID、参数、命令等
- JEP 193: Variable Handles:变量处理,见java.util.concurrent.atomic包下和sun.misc.Unsafe的源码
- JEP 254: Compact Strings:压缩字符串
- JEP 264: Platform Logging API and Service:统一日志API
- JEP 266: More Concurrency Updates
- JEP 268: XML Catalogs
- 类似guava,Set<String> alphabet = Set.of("a", "b", "c");
- JEP 277: Enhanced Deprecation:增强注解
- JEP 285: Spin-Wait Hints:自旋等待提示,见Thread#onSpinWait()
- JEP 290: Filter Incoming Serialization Data
- JEP 259: Stack-Walking API:堆栈API,见java.lang.StackWalker,可以获取代码执行的每一帧信息
- JEP 255: Merge Selected Xerces 2.11.0 Updates into JAXP
JDK 9 对Nashorn增强
JDK 9对Client Technologies增强
- JEP 251: Multi-Resolution Images
- JEP 253: Prepare JavaFX UI Controls and CSS APIs for Modularization
- JEP 256: BeanInfo Annotations
- JEP 262: TIFF Image I/O
- JEP 263: HiDPI Graphics on Windows and Linux
- JEP 272: Platform-Specific Desktop Features
- JEP 283: Enable GTK 3 on Linux
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。