JDK 9
原文
The goal of this Project was to produce an open-source reference implementation of the Java SE 9 Platform as defined by JSR 379 in the Java Community Process.
该项目的目标是根据 Java 社区流程(Java Community Process)中 JSR 379 所定义的 Java SE 9 平台,产生一个开源的参考实现。
JDK 9 reached General Availability on 21 September 2017. Production-ready binaries under the GPL are available from Oracle; binaries from other vendors will follow shortly.
JDK 9 于 2017 年 9 月 21 日达到 正式发布。符合生产要求的 GPL 二进制文件可从 Oracle 获得;其他供应商的二进制文件 即将推出。
The features and schedule of this release were proposed and tracked via the JEP Process, as amended by the JEP 2.0 proposal.
此版本的功能和时间表是通过 JEP 过程提出和跟踪的,根据 JEP 2.0 提案进行了修订。
Features | 特性
- JEP 102: Process API Updates | 进程 API 更新
- JEP 110: HTTP 2 Client | HTTP 2 客户端
- JEP 143: Improve Contended Locking | 改进争用锁定
- JEP 158: Unified JVM Logging | 统一的 JVM 日志记录
- JEP 165: Compiler Control | 编译器控制
- JEP 193: Variable Handles | 变量句柄
- JEP 197: Segmented Code Cache | 分段代码缓存
- JEP 199: Smart Java Compilation, Phase Two | 智能 Java 编译,第二阶段
- JEP 200: The Modular JDK | 模块化 JDK
- JEP 201: Modular Source Code | 模块化源代码
- JEP 211: Elide Deprecation Warnings on Import Statements | 消除导入语句上的过时警告
- JEP 212: Resolve Lint and Doclint Warnings | 解决 Lint 和 Doclint 警告
- JEP 213: Milling Project Coin | Milling Project Coin
- JEP 214: Remove GC Combinations Deprecated in JDK 8 | 移除在 JDK 8 中弃用的 GC 组合
- JEP 215: Tiered Attribution for javac | javac 的分层归因
- JEP 216: Process Import Statements Correctly | 正确处理导入语句
- JEP 217: Annotations Pipeline 2.0 | 注解管道 2.0
- JEP 219: Datagram Transport Layer Security (DTLS) | 数据报传输层安全性(DTLS)
- JEP 220: Modular Run-Time Images | 模块化运行时映像
- JEP 221: Simplified Doclet API | 简化的 Doclet API
- JEP 222: jshell: The Java Shell (Read-Eval-Print Loop) | jshell:Java Shell(REPL)
- JEP 223: New Version-String Scheme | 新的版本字符串方案
- JEP 224: HTML5 Javadoc | HTML5 Javadoc
- JEP 225: Javadoc Search | Javadoc 搜索
- JEP 226: UTF-8 Property Files | UTF-8 属性文件
- JEP 227: Unicode 7.0 | Unicode 7.0
- JEP 228: Add More Diagnostic Commands | 添加更多诊断命令
- JEP 229: Create PKCS12 Keystores by Default | 默认创建 PKCS12 密钥库
- JEP 231: Remove Launch-Time JRE Version Selection | 移除启动时的 JRE 版本选择
- JEP 232: Improve Secure Application Performance | 提高安全应用程序性能
- JEP 233: Generate Run-Time Compiler Tests Automatically | 自动生成运行时编译器测试
- JEP 235: Test Class-File Attributes Generated by javac | 测试 javac 生成的类文件属性
- JEP 236: Parser API for Nashorn | Nashorn 的解析器 API
- JEP 237: Linux/AArch64 Port | Linux/AArch64端口
- JEP 238: Multi-Release JAR Files | 多版本 JAR 文件
- JEP 240: Remove the JVM TI hprof Agent | 移除 JVM TI hprof 代理
- JEP 241: Remove the jhat Tool | 移除 jhat 工具
- JEP 243: Java-Level JVM Compiler Interface | Java 级别的 JVM 编译器接口
- JEP 244: TLS Application-Layer Protocol Negotiation Extension | TLS 应用层协议协商扩展
- JEP 245: Validate JVM Command-Line Flag Arguments | 验证 JVM 命令行标志参数
- JEP 246: Leverage CPU Instructions for GHASH and RSA | 利用 CPU 指令进行 GHASH 和 RSA
- JEP 247: Compile for Older Platform Versions | 为旧平台版本编译
- JEP 248: Make G1 the Default Garbage Collector | 将 G1 设置为默认的垃圾收集器
- JEP 249: OCSP Stapling for TLS | TLS 的 OCSP 装订
- JEP 250: Store Interned Strings in CDS Archives | 将字符串存储在 CDS 存档中
- JEP 251: Multi-Resolution Images | 多分辨率图像
- JEP 252: Use CLDR Locale Data by Default | 默认使用 CLDR 区域设置数据
- JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization | 为 JavaFX UI 控件和 CSS API 进行模块化准备
- JEP 254: Compact Strings | 紧凑字符串
- JEP 255: Merge Selected Xerces 2.11.0 Updates into JAXP | 将选定的 Xerces 2.11.0 更新合并到 JAXP 中
- JEP 256: BeanInfo Annotations | BeanInfo 注解
- JEP 257: Update JavaFX/Media to Newer Version of GStreamer | 将 JavaFX/Media 更新到较新的 GStreamer 版本
- JEP 258: HarfBuzz Font-Layout Engine | HarfBuzz 字体布局引擎
- JEP 259: Stack-Walking API | 堆栈遍历 API
- JEP 260: Encapsulate Most Internal APIs | 封装大部分内部 API
- JEP 261: Module System | 模块系统
- JEP 262: TIFF Image I/O | TIFF 图像 I/O
- JEP 263: HiDPI Graphics on Windows and Linux | 在 Windows 和 Linux 上支持 HiDPI 图形
- JEP 264: Platform Logging API and Service | 平台日志记录 API 和服务
- JEP 265: Marlin Graphics Renderer | Marlin 图形渲染器
- JEP 266: More Concurrency Updates | 更多并发更新
- JEP 267: Unicode 8.0 | Unicode 8.0
- JEP 268: XML Catalogs | XML 目录
- JEP 269: Convenience Factory Methods for Collections | 集合的便利工厂方法
- JEP 270: Reserved Stack Areas for Critical Sections | 为关键段保留堆栈区域
- JEP 271: Unified GC Logging | 统一的 GC 日志记录
- JEP 272: Platform-Specific Desktop Features | 平台特定的桌面功能
- JEP 273: DRBG-Based SecureRandom Implementations | 基于 DRBG 的 SecureRandom 实现
- JEP 274: Enhanced Method Handles | 增强的方法句柄
- JEP 275: Modular Java Application Packaging | 模块化 Java 应用程序打包
- JEP 276: Dynamic Linking of Language-Defined Object Models | 语言定义对象模型的动态链接
- JEP 277: Enhanced Deprecation | 增强的弃用功能
- JEP 278: Additional Tests for Humongous Objects in G1 | 对 G1 中的巨型对象进行附加测试
- JEP 279: Improve Test-Failure Troubleshooting | 改进测试失败排除故障
- JEP 280: Indify String Concatenation | 改进字符串连接操作
- JEP 281: HotSpot C++ Unit-Test Framework | HotSpot C++ 单元测试框架
- JEP 282: jlink: The Java Linker | jlink:Java 链接器
- JEP 283: Enable GTK 3 on Linux | 在 Linux 上启用 GTK 3
- JEP 284: New HotSpot Build System | 新的 HotSpot 构建系统
- JEP 285: Spin-Wait Hints | 自旋等待提示
- JEP 287: SHA-3 Hash Algorithms | SHA-3 哈希算法
- JEP 288: Disable SHA-1 Certificates | 禁用 SHA-1 证书
- JEP 289: Deprecate the Applet API | 弃用 Applet API
- JEP 290: Filter Incoming Serialization Data | 过滤传入的序列化数据
- JEP 291: Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector | 弃用并发标记清除(CMS)垃圾收集器
- JEP 292: Implement Selected ECMAScript 6 Features in Nashorn | 在 Nashorn 中实现选择的 ECMAScript 6 功能
- JEP 294: Linux/s390x Port | Linux/s390x端口
- JEP 295: Ahead-of-Time Compilation | 提前编译
- JEP 297: Unified arm32/arm64 Port | 统一的 arm32/arm64 端口
- JEP 298: Remove Demos and Samples | 移除演示和示例
- JEP 299: Reorganize Documentation | 重新组织文档
Schedule | 时间表
- 2016/05/26 Feature Complete | 功能完成
- 2016/12/22 Feature Extension Complete | 功能扩展完成
- 2017/01/05 Rampdown Start | 进入减速阶段
- 2017/02/09 All Tests Run | 所有测试运行完成
- 2017/02/16 Zero Bug Bounce | 零缺陷反弹
- 2017/03/16 Rampdown Phase Two | 减速阶段二
- 2017/06/22 Initial Release Candidate | 初始版本候选
- 2017/07/06 Final Release Candidate | 最终版本候选
- 2017/09/21 General Availability | 正式发布
Phases | 阶段
We stabilized the release in an increasingly-rigorous sequence of phases, listed here for the record:
为了稳定发布,我们按照逐渐严格的阶段进行了工作,以下是记录:
During those phases we used three processes to coordinate our work:
在这些阶段中,我们使用了三个过程来协调我们的工作:
- Feature-Complete extension request process | 功能完成扩展请求过程
- Bug-deferral process | 缺陷延期过程 (减速阶段一及之后)
- Fix-request process | 修复请求过程 (减速阶段二及之后)
Milestone definitions | 里程碑定义
The milestone definitions for JDK 9 were the same as those for JDK 8, with the addition of:
JDK 9 的里程碑定义与 JDK 8 相同,但增加了以下内容:
Feature Extension Complete — The date by which JEPs and small enhancements that have been granted extensions via the FC extension-request process must be integrated into the master forest.
功能扩展完成 — JEPs 和通过 FC 扩展请求过程获得扩展的小型增强功能必须在此日期前集成到主代码库中。
Initial Release Candidate — The date on which the first release candidate is built and submitted for testing.
初始版本候选 — 第一个版本候选构建和提交测试的日期。