Java - 历史
Java 的历史
Java 编程语言最初由 Sun Microsystems 开发,由 James Gosling 发起,并于 1995 年作为 Sun Microsystems 的 Java 平台(Java 1.0 [J2SE])的核心组件发布。甚至 Java 的命名历史也非常有趣,它曾使用过许多名称。
Java 命名历史
GreenTalk
James Gosling 领导着一个名为“Green”团队。该团队的目标是创建一个能在多种电子设备上无缝运行的新语言。最初选择用 C++ 来开发该项目。James Gosling 希望增强 C++ 以实现目标,但由于内存使用量过高,这个想法被否决,团队开始使用一种新语言,最初命名为 GreenTalk。文件扩展名为 .gt。后来这个语言被命名为 Oak,最终成为 Java。
Oak
James Gosling 将语言重命名为 Oak。他的办公室前有一棵橡树。James Gosling 使用这个名字是因为 Oak 代表坚固,而且橡树是美国、法国、罗马尼亚等多个国家的国树。但 Oak Technologies 已经将 Oak 注册为商标,James 的团队不得不 brainstorm 另一个语言名称。
最终定为 Java
团队提出了多个名称,如 DNA、Silk、Ruby 和 Java。团队最终选定了 Java。James Gosling 根据一种浓缩咖啡豆的类型提出了 Java 这个名称。Java 是印度尼西亚的一个岛屿,那里发现了名为 Java coffee 的新型咖啡。据 James Gosling 称,Java 和 Silk 都是首选名称之一。最终选择了 Java,因为它非常独特,并代表了动态、革命性和有趣的本质。
Sun 于 1995 年发布了第一个公开实现版本 Java 1.0。它承诺 Write Once, Run Anywhere(WORA),在流行平台上提供免费运行时。
2006 年 11 月 13 日,Sun 以 GNU General Public License (GPL) 的条款发布了大部分 Java 作为免费和开源软件。
2007 年 5 月 8 日,Sun 完成了这一过程,使 Java 的所有核心代码免费开源,除了 Sun 不持有版权的一小部分代码。
Java Standard Edition 的最新版本是 Java SE 21。随着 Java 的发展和广泛流行,构建了多种配置以适应各种类型的平台。例如:用于企业应用的 J2EE,用于移动应用的 J2ME。
Java 版本历史
近 30 年来,Java 经历了众多次要和主要版本更新。以下是截至目前 Java 版本的简要说明。
| 序号 | 版本 | 日期 | 描述 |
|---|---|---|---|
| 1 | JDK Beta | 1995 | 初始草稿版本 |
| 2 | JDK 1.0 | 23 Jan 1996 | 稳定的变体 JDK 1.0.2 被称为 JDK 1 |
| 3 | JDK 1.1 | 19 Feb 1997 | 此版本添加了主要特性,如 JavaBeans、RMI、JDBC、内嵌类。 |
| 4 | JDK 1.2 | 8 Dec 1998 | 向 Java 引入了 Swing、JIT Compiler、Java Modules、Collections,此版本大获成功。 |
| 5 | JDK 1.3 | 8 May 2000 | 添加了 HotSpot JVM、JNDI、JPDA、JavaSound 以及对 Synthetic proxy classes 的支持。 |
| 6 | JDK 1.4 | 6 Feb 2002 | 添加了用于创建/读取 JPEG/PNG 图像的 Image I/O API。集成的 XML 解析器和 XSLT 处理器 (JAXP) 以及 Preferences API 是其他重要更新。 |
| 7 | JDK 1.5 或 J2SE 5 | 30 Sep 2004 | 向语言添加了各种新特性,如 foreach、var-args、generics 等。 |
| 8 | JAVA SE 6 | 11 Dec 2006 | 放弃了 1. 编号,转为 SE,并对 JAXB 2.0、JSR 269 支持和 JDBC 4.0 支持进行了升级。 |
| 9 | JAVA SE 7 | 7 Jul 2011 | 为 JVM 添加了对动态语言的支持。其他增强包括 switch case 中的字符串、压缩的 64 位指针等。 |
| 10 | JAVA SE 8 | 18 Mar 2014 | 添加了对函数式编程的支持。引入了 Lambda expressions、streams、default methods、新的 date-time APIs。 |
| 11 | JAVA SE 9 | 21 Sep 2017 | 引入了模块系统,可应用于 JVM 平台。 |
| 12 | JAVA SE 10 | 20 Mar 2018 | 添加了 Unicode language-tag extensions。引入了根证书、threadlocal handshakes、对替代内存设备上的堆分配支持等。 |
| 13 | JAVA SE 11 | 5 Sep 2018 | 添加了动态 class-file constants、Epsilon(无操作垃圾回收器)、lambda 参数中的 local-variable 支持、低开销堆剖析支持。 |
| 14 | JAVA SE 12 | 19 Mar 2019 | 添加了实验性 Garbage Collector、Shenandoah(低暂停时间垃圾回收器)、Microbenchmark Suite、JVM Constants API。 |
| 15 | JAVA SE 13 | 17 Sep 2019 | 添加了特性 - Text Blocks(多行字符串)、增强的 Thread-local handshakes。 |
| 16 | JAVA SE 14 | 17 Mar 2020 | 添加了特性 - Records(用于建模的新类类型)、Pattern Matching for instanceof、直观的 NullPointerException 处理。 |
| 17 | JAVA SE 15 | 15 Sep 2020 | 添加了特性 - Sealed Classes、Hidden Classes、Foreign Function and Memory API(孵化器)。 |
| 18 | JAVA SE 16 | 16 Mar 2021 | 作为预览添加了特性 - Records、Pattern Matching for switch、Unix Domain Socket Channel(孵化器)等。 |
| 19 | JAVA SE 17 | 14 Sep 2021 | 作为最终版添加了特性 - Sealed Classes、Pattern Matching for instanceof、默认强封装 JDK 内部、新 macOS 渲染管道等。 |
| 20 | JAVA SE 18 | 22 Mar 2022 | 添加了特性 - 默认 UTF-8、Java API 文档中的代码片段、Vector API(第三孵化器)、Foreign Function、Memory API(第二孵化器)等。 |
| 21 | JAVA SE 19 | 20 Sep 2022 | 添加了特性 - Record pattern、Vector API(第四孵化器)、Structured Concurrency(孵化器)等。 |
| 22 | JAVA SE 20 | 21 Mar 2023 | 添加了特性 - Scoped Values(孵化器)、Record Patterns(第二次预览)、Pattern Matching for switch(第四次预览)、Foreign Function & Memory API(第二次预览)等。 |
| 22 | JAVA SE 21 | 19 Sep 2023 | 添加了特性 - String Templates(预览)、Sequenced Collections、Generational ZGC、Record Patterns、Pattern Matching for switch 等。 |
| 23 | Java SE 22 | 19 Mar 2024 | 添加了特性 - G1 垃圾回收器的 Region Pinning、foreign functions and memory APIs、多文件源代码程序支持、string templates、vector apis(第七孵化器)、unnamed variables、patterns、stream gatherers(首次预览)等。 |
| 24 | Java SE 23 | 17 Sep 2024 | 添加了特性 - patterns 中的 Primitive types、class file APIs、vector APIs(第八孵化器)、stream gatherers(第二次预览)、ZDC、默认 generation mode 等。 |