{"id":15069341,"url":"https://github.com/javamilk/jdkhistory","last_synced_at":"2025-04-10T17:10:47.570Z","repository":{"id":215749595,"uuid":"124728040","full_name":"JavaMilk/JDKHistory","owner":"JavaMilk","description":"Show the history of JDK.","archived":false,"fork":false,"pushed_at":"2018-03-11T15:17:33.000Z","size":68,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-24T14:50:48.584Z","etag":null,"topics":["history","jdk","version"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JavaMilk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-03-11T06:00:47.000Z","updated_at":"2022-08-07T14:26:02.000Z","dependencies_parsed_at":"2024-01-06T10:20:30.769Z","dependency_job_id":"94754969-fc90-4575-9263-277db1acf072","html_url":"https://github.com/JavaMilk/JDKHistory","commit_stats":null,"previous_names":["javamilk/jdkhistory"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JavaMilk%2FJDKHistory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JavaMilk%2FJDKHistory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JavaMilk%2FJDKHistory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JavaMilk%2FJDKHistory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JavaMilk","download_url":"https://codeload.github.com/JavaMilk/JDKHistory/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248261315,"owners_count":21074220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["history","jdk","version"],"created_at":"2024-09-25T01:41:57.433Z","updated_at":"2025-04-10T17:10:47.551Z","avatar_url":"https://github.com/JavaMilk.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# JDKHistory\n记录Java版本的更新历史，主要是对以下文章的结合：\n* [《openjdk 文档》](http://openjdk.java.net/projects/jdk/)\n* [《Java - JCP、JSR等名词介绍》](http://blog.csdn.net/u010297957/article/details/50915631)\n* [《从java1到java9每个版本都有什么新特性？》](https://www.cnblogs.com/rese-t/p/7823378.html)\n* [《Java 9正式发布》](http://blog.csdn.net/postnull/article/details/78068060?locationNum=2\u0026fps=1)\n* [《JDK 10 本周将进入候选发布阶段，新特性抢先看》](https://www.oschina.net/news/93123/jdk10-release-candidate-phase)\n* [《Java 老矣，尚能饭否？》](http://www.infoq.com/cn/articles/is-java-out-of-date)\n\n# 一些术语\n* [JCP](https://www.jcp.org/en/home/index) 是 Java Community Process（Java社区进程）的简称，社会各界Java组成的社区，规划和领导Java的发展。\n* [JEP](http://openjdk.java.net/jeps/0) 是 JDK Enhancement Proposals （Java 增强提案）的简称，JDK的版本变化将从这些提案中选取。\n* JSR 是 Java Specification Requests（Java规范请求）的简称，是 JCP 成员向委员会提交的 Java 发展议案，经过一系列流程后，如果通过会成为 JEP，最终会体现在未来的Java中。\n* TCK 是 Technology Compatibility Kit（技术兼容性测试）的简称， 如果一个平台型程序想要宣称自己兼容Java，就必须通过TCK测试\n\n# JDK 11\n[JDK 11](http://openjdk.java.net/projects/jdk/11/) 目前出现了4个JEP，计划于 2018 年 9 月发布。\n* [JEP 309](http://openjdk.java.net/jeps/309): 动态类文件常量。\n* [JEP 318](http://openjdk.java.net/jeps/318): 低开销垃圾收集器 Epsilon。\n* [JEP 320](http://openjdk.java.net/jeps/320): 移除 Java EE 和 CORBA 模块。\n* [JEP 323](http://openjdk.java.net/jeps/323): Lambda 参数的本地变量语法。\n\n# JDK 10\n[JDK 10](http://openjdk.java.net/projects/jdk/10/) 按计划将于2018年3月20日发布。新特性有：\n* [JEP 286](http://openjdk.java.net/jeps/286): 局部变量的类型推导。该特性在社区讨论了很久并做了调查，可查看 JEP 286 调查结果。\n* [JEP 296](http://openjdk.java.net/jeps/296): 将 JDK 的多个代码仓库合并到一个储存库中。\n* [JEP 304](http://openjdk.java.net/jeps/304): 垃圾收集器接口。通过引入一个干净的垃圾收集器（GC）接口，改善不同垃圾收集器的源码隔离性。\n* [JEP 307](http://openjdk.java.net/jeps/307): 向 G1 引入并行 Full GC。\n* [JEP 310](http://openjdk.java.net/jeps/310): 应用类数据共享。为改善启动和占用空间，在现有的类数据共享（“CDS”）功能上再次拓展，以允许应用类放置在共享存档中。\n* [JEP 312](http://openjdk.java.net/jeps/312): 线程局部管控。允许停止单个线程，而不是只能启用或停止所有线程。\n* [JEP 313](http://openjdk.java.net/jeps/313): 移除 Native-Header Generation Tool (javah)\n* [JEP 314](http://openjdk.java.net/jeps/314): 额外的 Unicode 语言标签扩展。包括：cu (货币类型)、fw (每周第一天为星期几)、rg (区域覆盖)、tz (时区) 等。\n* [JEP 316](http://openjdk.java.net/jeps/316): 在备用内存设备上分配堆内存。允许 HotSpot 虚拟机在备用内存设备上分配 Java 对象堆。\n* [JEP 317](http://openjdk.java.net/jeps/317): 基于 Java 的 JIT 编译器（试验版本）。\n* [JEP 319](http://openjdk.java.net/jeps/319): 根证书。开源 Java SE Root CA 程序中的根证书。\n* [JEP 322](http://openjdk.java.net/jeps/322): 基于时间的版本发布模式。“Feature releases” 版本将包含新特性，“Update releases” 版本仅修复 Bug 。\n\n# JDK 9\n[JDK 9](http://openjdk.java.net/projects/jdk9/) 于2017年9月21日发布。新特性有：\n* 模块化 —— Jigsaw\n* 交互式命令行 —— JShell\n* 默认的垃圾回收器 —— G1\n* 进程操作改进\n* 竞争锁的性能优化\n* 分段代码缓存\n* 优化字符串占用空间\n\n这个版本中最引人注目的时候模块化，通过这个工作，可以构建更小的运行时环境，只需要包括Java平台中任务依赖的部分。这可以更好地适应云端的开发。\n\n具体的特性包括：\n* [JEP 102](http://openjdk.java.net/jeps/102): 改善了控制和管理操作系统进程的 API。\n* [JEP 110](http://openjdk.java.net/jeps/110): 定义了一个新的 Http 客户端 API，它实现了 `HTTP/2` 和 `WebSocket`，并且可以替代遗留的 ` HttpURLConnection` API。该 API 将会以一个 incubator 模块的形式进行交付。\n* [JEP 143](http://openjdk.java.net/jeps/143): 提高竞争 Java 对象的监视性能。\n* [JEP 158](http://openjdk.java.net/jeps/158): 统一 JVM 的日志。\n* [JEP 165](http://openjdk.java.net/jeps/165): 通过支持运行时管理来增加对 JVM 编译器的管理。\n* [JEP 193](http://openjdk.java.net/jeps/193): 对变量处理的改进。\n* [JEP 197](http://openjdk.java.net/jeps/197): 将代码缓存划分成不同的段。\n* [JEP 200](http://openjdk.java.net/jeps/200): 采用 Java 平台模块化系统（Java Platform Module System，JPMS）对JDK进行模块化。\n* [JEP 201](http://openjdk.java.net/jeps/201): 源代码模块化。\n* [JEP 211](http://openjdk.java.net/jeps/211): 在 import 语句中 省略 `deprecation` 的警告。\n* [JEP 212](http://openjdk.java.net/jeps/212): 解决 lint 和 doclint 警告。\n* [JEP 213](http://openjdk.java.net/jeps/213): Project Coin 的改变\n* [JEP 214](http://openjdk.java.net/jeps/214): 移除 JDK 8 中 GC 组合器的废弃说明。\n* [JEP 215](http://openjdk.java.net/jeps/215): 在 javac 中实现了一个新的类型检测策略。\n* [JEP 216](http://openjdk.java.net/jeps/216): 正确地处理导入声明。\n* [JEP 217](http://openjdk.java.net/jeps/217): 注解流水线 2.0。\n* [JEP 219](http://openjdk.java.net/jeps/219): 定义了数据传输层安全（Datagram Transport Layer Security, DTLS）API。\n* [JEP 220](http://openjdk.java.net/jeps/220): 模块化运行时镜像。\n* [JEP 221](http://openjdk.java.net/jeps/221): 简化 `Doclet` API。\n* [JEP 222](http://openjdk.java.net/jeps/222): jshell - Java 中的交互式命令行。\n* [JEP 223](http://openjdk.java.net/jeps/223): 新的版本字符串模式。\n* [JEP 224](http://openjdk.java.net/jeps/224): 增强了 javadoc 工具来生成 HTML5 标记。\n* [JEP 225](http://openjdk.java.net/jeps/225): 增加了 javadoc 搜索。\n* [JEP 226](http://openjdk.java.net/jeps/226): UTF-8 属性文件资源的Bundle相关变化。\n* [JEP 227](http://openjdk.java.net/jeps/227): Unicode 7.0。\n* [JEP 228](http://openjdk.java.net/jeps/228): 增加更多可诊断的命令。\n* [JEP 229](http://openjdk.java.net/jeps/229): 将默认的秘钥库从 JKS 替换为 PKCS12。\n* [JEP 231](http://openjdk.java.net/jeps/231): 移除运行时 JRE 版本选择。\n* [JEP 232](http://openjdk.java.net/jeps/232): 增强了安全相关应用的性能。\n* [JEP 233](http://openjdk.java.net/jeps/233): 开发了一个工具来自动测试运行时编译器。\n* [JEP 235](http://openjdk.java.net/jeps/235): 增加关于 javac 生成类文件属性的 测试。\n* [JEP 236](http://openjdk.java.net/jeps/236): 定义了解析 API 来支持 Nashorn 的 ECMAScript 抽象语法树。\n* [JEP 237](http://openjdk.java.net/jeps/237): Linux/AArch64 端口相关。\n* [JEP 238](http://openjdk.java.net/jeps/238): 多版本 JAR 文件。\n* [JEP 240](http://openjdk.java.net/jeps/240): 移除 JVM 的 TI hprof 客户端。\n* [JEP 241](http://openjdk.java.net/jeps/241): 移除 jhat 工具。\n* [JEP 243](http://openjdk.java.net/jeps/243): 提供 Java 语言级的 JVM 编译接口。\n* [JEP 244](http://openjdk.java.net/jeps/244): TLS 应用层协议协商。\n* [JEP 245](http://openjdk.java.net/jeps/245): 验证 JVM 命令行标志参数。\n* [JEP 246](http://openjdk.java.net/jeps/246): 利用 CPU 指令提升 GHASH 和 RSAd 的性能。\n* [JEP 247](http://openjdk.java.net/jeps/247): 对老平台版本的编译支持。\n* [JEP 248](http://openjdk.java.net/jeps/248): G1 作为默认的垃圾回收器。\n* [JEP 249](http://openjdk.java.net/jeps/249): 基于 TLS 实现 OCSP Stapling。\n* [JEP 250](http://openjdk.java.net/jeps/250): 在类数据分享（CDS）归档中存储 interned 字符串。\n* [JEP 251](http://openjdk.java.net/jeps/251): 多方案镜像。\n* [JEP 252](http://openjdk.java.net/jeps/252): 默认使用 CLDR Locale Data。\n* [JEP 253](http://openjdk.java.net/jeps/253): 为 JavaFX UI 控制 和 CSS API 的模块化做准备。\n* [JEP 254](http://openjdk.java.net/jeps/254): 采用一个空间更加高效的 String 内部表示。\n* [JEP 255](http://openjdk.java.net/jeps/255): 合并 Xerces 2.11.0 中的更新。\n* [JEP 256](http://openjdk.java.net/jeps/256): BeanInfo 注解调整。\n* [JEP 257](http://openjdk.java.net/jeps/257): 更新 JavaFX/Media 中 GStreamer 的版本。\n* [JEP 258](http://openjdk.java.net/jeps/258): 使用 HarfBuzz 作为字体布局引擎。\n* [JEP 259](http://openjdk.java.net/jeps/259): 定义了一个高效标准的 Stack-Walking API。\n* [JEP 260](http://openjdk.java.net/jeps/260): 封装大部分的内部 API。\n* [JEP 261](http://openjdk.java.net/jeps/261): 实现模块化系统。\n* [JEP 262](http://openjdk.java.net/jeps/262): 支持 TIFF 图像 I/O。\n* [JEP 263](http://openjdk.java.net/jeps/263): 实现 Windows 和 Linux 高分辨率图像接口。\n* [JEP 264](http://openjdk.java.net/jeps/264): 平台日志 API 和 服务。\n* [JEP 265](http://openjdk.java.net/jeps/265): Java 2D 使用 Marlin Graphics Renderer。\n* [JEP 266](http://openjdk.java.net/jeps/266): 并发相关的一些更新。\n* [JEP 267](http://openjdk.java.net/jeps/267): 支持 Unicode 8.0。\n* [JEP 268](http://openjdk.java.net/jeps/268): 支持 XML 目录。\n* [JEP 269](http://openjdk.java.net/jeps/269): 增加一些集合类创建的工厂方法。\n* [JEP 270](http://openjdk.java.net/jeps/270): 为临界区预留栈的某些区域。\n* [JEP 271](http://openjdk.java.net/jeps/271): 统一 GC 日志。\n* [JEP 272](http://openjdk.java.net/jeps/272): 增加特定平台的桌面特性。\n* [JEP 273](http://openjdk.java.net/jeps/273): Deterministic Random Bit Generator (DRBG) 的实现。\n* [JEP 274](http://openjdk.java.net/jeps/274): 增强方法处理器。\n* [JEP 275](http://openjdk.java.net/jeps/275): Java 应用模块化打包。\n* [JEP 276](http://openjdk.java.net/jeps/276): 语言定义对象模型的动态链接。\n* [JEP 277](http://openjdk.java.net/jeps/277): 改善 Deprecation。\n* [JEP 278](http://openjdk.java.net/jeps/278): 为 G1 中的巨大对象增加测试。\n* [JEP 279](http://openjdk.java.net/jeps/279): 改进测试故障排除。\n* [JEP 280](http://openjdk.java.net/jeps/280): 指示字符串串联。\n* [JEP 281](http://openjdk.java.net/jeps/281): HotSpot C++ 单元测试框架。\n* [JEP 282](http://openjdk.java.net/jeps/282): Java连接器 jlink。\n* [JEP 283](http://openjdk.java.net/jeps/283): 在 Linux 上支持 GTK 3。\n* [JEP 284](http://openjdk.java.net/jeps/284): 新的 HotSpot 构建系统。\n* [JEP 285](http://openjdk.java.net/jeps/285): 自旋等待提示。\n* [JEP 287](http://openjdk.java.net/jeps/287): 实现 SHA-3 Hash 算法。\n* [JEP 288](http://openjdk.java.net/jeps/288): 禁止 SHA-1 验证。\n* [JEP 289](http://openjdk.java.net/jeps/289): 废弃 Applet API。\n* [JEP 290](http://openjdk.java.net/jeps/290): 过滤输入的序列化数据。\n* [JEP 291](http://openjdk.java.net/jeps/291): 废弃 Concurrent Mark Sweep (CMS) 垃圾收集器。\n* [JEP 292](http://openjdk.java.net/jeps/292): 在 Nashorn 中支持 ECMAScript 6 特征。\n* [JEP 294](http://openjdk.java.net/jeps/294): Linux/s390x 端口。\n* [JEP 295](http://openjdk.java.net/jeps/295): 提前编译。\n* [JEP 297](http://openjdk.java.net/jeps/297): 统一 arm32/arm64 端口。\n* [JEP 298](http://openjdk.java.net/jeps/298): 移除过时的例子。\n* [JEP 299](http://openjdk.java.net/jeps/299): 重新组织文档。 \n\n# JDK 8\n[JDK 8](http://openjdk.java.net/projects/jdk8/) 于2014年3月14号发布。从 Java 8 开始开发代号已经弃用了。新特性有:\n* Lambda 表达式\n* Pipelines 和 Streams\n* Date 和 Time API\n* Default 方法\n* Type 注解\n* Nashhorn JavaScript 引擎\n* 并发计数器\n* Parallel 操作\n* 移除 PermGen Error\n* TLS SNI\n\n第三个有里程碑意义的 Java 版本。其中最引人注目的便是 Lambda 表达式了，从此 Java 语言原生提供了函数式编程能力。Java 8 更加适应海量云计算的需要。\n\n具体的特性包括：\n* [JEP 117](http://openjdk.java.net/jeps/117): 移除注解处理工具（Annotation-Processing Tool，apt）。\n* [JEP 124](http://openjdk.java.net/jeps/124): 增强证书撤销检查 API。\n* [JEP 130](http://openjdk.java.net/jeps/130): 实现 SHA-224 消息摘要算法。\n* [JEP 131](http://openjdk.java.net/jeps/131): 在 64-bit Windows 中支持 PKCS#11。\n* [JEP 112](http://openjdk.java.net/jeps/112): Charset 实现改善。\n* [JEP 129](http://openjdk.java.net/jeps/129): 实现 NSA Suite B 加密算法。\n* [JEP 105](http://openjdk.java.net/jeps/105): DocTree API。\n* [JEP 106](http://openjdk.java.net/jeps/106): 扩展 `javax.tools` API 来支持 javadoc 的访问。\n* [JEP 113](http://openjdk.java.net/jeps/113): 在 JDK 的 Kerberos 5 中添加 MS-SFU 扩展。\n* [JEP 114](http://openjdk.java.net/jeps/114): TLS Server Name Indication (SNI) 扩展。\n* [JEP 121](http://openjdk.java.net/jeps/121): 提供更强的 Password-Based-Encryption (PBE) 算法实现。\n* [JEP 122](http://openjdk.java.net/jeps/122): 移除永久带（Permanent Generation）。\n* [JEP 127](http://openjdk.java.net/jeps/127): 改善 Locale Data Packaging，并且采用 Unicode CLDR Data。\n* [JEP 128](http://openjdk.java.net/jeps/128): Unicode BCP 47 本地匹配。\n* [JEP 133](http://openjdk.java.net/jeps/133): 支持 Unicode 6.2。\n* [JEP 136](http://openjdk.java.net/jeps/136): 增强错误验证。\n* [JEP 153](http://openjdk.java.net/jeps/153): 启动 JavaFX 应用。\n* [JEP 177](http://openjdk.java.net/jeps/177): 优化 `java.text.DecimalFormat.format`。\n* [JEP 103](http://openjdk.java.net/jeps/103): 并行数组排序。\n* [JEP 135](http://openjdk.java.net/jeps/135): Base64 编码和解码。\n* [JEP 138](http://openjdk.java.net/jeps/138): 基于 Autoconf 的自动构建系统。\n* [JEP 139](http://openjdk.java.net/jeps/139): 增强 javac 来提高构建速度。\n* [JEP 142](http://openjdk.java.net/jeps/142): 减少对于特定域的高速缓存的争夺。\n* [JEP 147](http://openjdk.java.net/jeps/147): 减少类元数据占用。\n* [JEP 148](http://openjdk.java.net/jeps/148): 支持小虚拟机（不超过3M）的创建。\n* [JEP 149](http://openjdk.java.net/jeps/149): 减少核心库的内存使用。\n* [JEP 150](http://openjdk.java.net/jeps/150): 新的 Date 和 Time API。\n* [JEP 160](http://openjdk.java.net/jeps/160): lambda 函数表达式。\n* [JEP 164](http://openjdk.java.net/jeps/164): 利用 CPU 指令进行 AES 加密。\n* [JEP 166](http://openjdk.java.net/jeps/166): 针对JKS、JCEKS、PKCS12秘钥存储的修改。\n* [JEP 170](http://openjdk.java.net/jeps/170): JDBC 4.2。\n* [JEP 172](http://openjdk.java.net/jeps/172): DocLint。\n* [JEP 173](http://openjdk.java.net/jeps/173): 放弃一些很少使用的 GC 组合。\n* [JEP 101](http://openjdk.java.net/jeps/101): 泛华目标类型接口。\n* [JEP 104](http://openjdk.java.net/jeps/104): 在 Java 类型上加注解。\n* [JEP 107](http://openjdk.java.net/jeps/107): 增加集合的批量数据操作。\n* [JEP 109](http://openjdk.java.net/jeps/109): 在核心库中增加 Lambda 表达式。\n* [JEP 115](http://openjdk.java.net/jeps/115): 认证加密的密码套件。\n* [JEP 118](http://openjdk.java.net/jeps/118): 在运行时访问参数名称。\n* [JEP 119](http://openjdk.java.net/jeps/119): 通过反射实现  `javax.lang.model.*` API。\n* [JEP 120](http://openjdk.java.net/jeps/120): 重复注解。\n* [JEP 123](http://openjdk.java.net/jeps/123): 可配置的安全随机数生成。\n* [JEP 126](http://openjdk.java.net/jeps/126): lambda 表达式和虚拟扩展方法。\n* [JEP 140](http://openjdk.java.net/jeps/140): 限制的 doPrivileged。\n* [JEP 155](http://openjdk.java.net/jeps/155): 并发库更新。\n* [JEP 161](http://openjdk.java.net/jeps/161): 紧凑版本。\n* [JEP 162](http://openjdk.java.net/jeps/162): 为模块化做准备。\n* [JEP 171](http://openjdk.java.net/jeps/171): 在 ` sun.misc.Unsafe` 中增加三个内存排序相关的指令。\n* [JEP 174](http://openjdk.java.net/jeps/174): Nashorn JavaScript 引擎。\n* [JEP 176](http://openjdk.java.net/jeps/176): 提供调用者敏感的检测机制。\n* [JEP 178](http://openjdk.java.net/jeps/178): 静态链接的 jni 库。\n* [JEP 179](http://openjdk.java.net/jeps/179): JDK API 的文档的支持和稳定。\n* [JEP 180](http://openjdk.java.net/jeps/180): 对于频繁冲突的 HashMap 使用平衡树。\n* [JEP 184](http://openjdk.java.net/jeps/184): HTTP URL的权限。\n* [JEP 185](http://openjdk.java.net/jeps/): 限制外部 XML 资源的获取。\n\n# JDK 7\n开发代号是 Dolphin（海豚），于2011年7月28日发行。新特性有：\n* `switch` 语句块中允许以字符串作为分支条件；\n* 在创建泛型对象时应用类型推断；\n* 在一个语句块中捕获多种异常；\n* 支持动态语言；\n* 支持 `try-with-resources`；\n* 引入 Java NIO.2 开发包；\n* 数值类型可以用2进制字符串表示，并且可以在字符串表示中添加下划线；\n* 钻石型语法；\n* `null` 值的自动处理。\n\n这个版本中的主要的特性是 NIO2 和 Fork/Join 并发包，Java 虚拟机的稳定性真正做到的工业级，成为一个计算平台而服务于全世界。\n\n# JDK 6\n开发代号为 Mustang（野马），于2006年12月11日发行。新特性有：\n* 支持脚本语言；\n* 引入 JDBC 4.0 API；\n* 引入 Java Compiler API；\n* 可插拔注解；\n* 增加对 Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos 和 LDAP(Lightweight Directory Access Protocol) 的支持；\n* 继承 Web Services；\n* 做了很多优化。\n\n这个语言语法改进不多，但在虚拟机内部做了大量的改进，成为一个相当成熟稳定的版本，时至今日国内的很多公司依然以 Java6 作为主要 Java 开发版本来使用。\n\n同年 Sun 公司做出一个伟大的决定，将 Java 开源。OpenJDK 从 Sun JDK 1.7 版本分支出去，成为今天 OpenJDK 的基础。\n\n# JDK 5\n开发代号为Tiger（老虎），于2004年9月30日发行。新特性包有:\n* 引入泛型；\n* 增强循环，可以使用迭代方式；\n* 自动装箱与自动拆箱；\n* 类型安全的枚举；\n* 可变参数；\n* 静态引入；\n* 元数据（注解）；\n* 引入 Instrumentation。\n\nSun 不再采用 J2SE, J2EE 这种命名方式，而使用 Java SE 5, Java EE 5 这样的名称。\n\nJava 5 是第二个里程碑式的版本。Java 语言语法发生很大的变化，如注解 (Annotation)，装箱 (Autoboxing)，泛型 (Generic)，枚举 (Enum)，foreach 等被加入，提供了 java.util.concurrent 并发包。\n\nJava 5 对于 Java 语言的推动是巨大的，特别是注解的加入，使得语言定义灵活了很多，程序员可以写出更加符合领域定义的描述性程序。\n\n# JDK 1.4\n开发代号为 Merlin（隼），于2004年2月06日发行（首次在JCP下发行）。新特性有:\n* XML 处理；\n* Java 打印服务；\n* 引入 Logging API；\n* 引入 Java Web Start；\n* 引入 JDBC 3.0 API；\n* 引入断言；\n* 引入 Preferences API；\n* 引入链式异常处理；\n* 支持 IPv6；\n* 支持正则表达式；\n* 引入 Image I/O slot machine API。\n\nJava 语言真正走向成熟，提供了非常完备的语言特性，如 NIO，正则表达式，XML 处理器等。\n\n同年微软的.NET 框架发布，两者开始了为期十几年的暗自竞争。从语言特性上来说，.NET 后发先至，一直处于优势。但 Java 依赖良好的开发者生态，绝大多数大型软件公司的使用者众多和不断贡献，以及对 Linux 操作系统良好的支持，渐渐的在服务器端获得优势地位。\n\n# JDK 1.3\n开发代号为 Kestrel（红隼），于2000年5月08日发行。新特性有：\n* 引入Java Sound API；\n* jar 文件索引；\n* 对 Java 的各个方面都做了大量优化和增强。\n\nJ2EE 中的 Servlet 规范获得了极大的成功，伴随着互联网的兴起，和浏览器直接通过 HTTP 协议交互的 Servlet，和众多的 MVC 框架，成为 Web1.0 的网红。\n\n# JDK 1.2\n开发代号为 Playground（操场），于1998年12月8日发行。新特性有：\n* 引入集合（Collection）框架；\n* 对字符串常量做内存映射；\n* 引入 JIT（Just In Time） 编译器；\n* 引入对打包的 Java 文件进行数字签名；\n* 引入控制授权访问系统资源的策略工具；\n* 引入 JFC（Java Foundation Classes），包括 Swing 1.0、拖放和 Java 2D 类库；\n* 引入 Java 插件；\n* 在 JDBC 中引入可滚动结果集、BLOB、CLOB、批量更新和用户自定义类型；\n* 在 Applet 中添加声音支持。\n\nJava 第一个里程碑式的版本。JIT（Just in time）编译器技术，使得语言的可迁移性和执行效率达到最优的平衡，同时 Collections 集合类设计优良，在企业应用开发中迅速得到了广泛使用。\n\nSun 公司把 Java 技术体系分成三个方向，分别是 J2SE（面向桌面和通用应用开发），J2EE（面向企业级应用开发），J2ME（面向移动终端开发）。这个分类影响非常久远，体现出主流语言设计者的思想：针对于不同的应用领域，在形态，API 集合等进行划分。\n\n# JDK 1.1\n于 1997年2月19日发行，新特性有：\n*  引入JDBC（Java Database Connectivity）；\n*  支持内部类；\n*  引入Java Bean；\n*  引入RMI（Remote Method Invocation）；\n*  引入反射（仅用于内省）。\n\nJava 语言的基本形态基本确定了，比如反射 (reflection), JavaBean, 接口和类的关系等等，一直到今天都保持一致。然而，Java 最初的一些目标，如在浏览器中执行 Applet，以及跨平台的图形界面 Awt 很快遭遇到负面的评价。\n\n# JDK 1.0\n开发代号为Oak（橡树），于1996年1月23发行。特点有：\n* 提供了一个解释执行的 Java 虚拟机；\n* Applet 能在 Mozilla 浏览器中运行。\n\nJava 的 Applet 能在 Mozilla 浏览器中运行，被看作是未来的互联网语言。\n\n# 起源\nJava 语言源于 1991 年 Sun 公司 James Gosling 领导的的 Ork 项目，1995 年 Sun 公司正式起名为 Java，并提出“Write once, Run anywhere\"的口号。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavamilk%2Fjdkhistory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavamilk%2Fjdkhistory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavamilk%2Fjdkhistory/lists"}