Java 开发语言编年史


Java 开发语言编年史

Java 的故事始于 1991 年 Sun Microsystems 公司启动的 “Green Project”(绿色计划),由詹姆斯·高斯林(James Gosling)带领团队研发,初衷是为智能家电等嵌入式设备打造一种跨平台编程语言。最初命名为 Oak(橡树),据说来自高斯林办公室窗外的一棵橡树。彼时不同设备的操作系统差异巨大,开发者需为不同平台重复编写代码,而 Oak 的核心目标正是“一次编写,到处运行”(Write Once, Run Anywhere)。

1995 年,Oak 正式更名为 Java——名字取自印尼爪哇岛(Java),在英语中常作为咖啡的别称。同年 5 月 23 日,Sun 在 SunWorld 大会上正式发布 Java,随后《时代》杂志将其评为 1995 年十大最佳产品之一。

一、萌芽与奠基(1991–2000)

1996 年 1 月 23 日,JDK 1.0 正式发布。这个版本包含 Java 语言、Java 类库和 Java 虚拟机(JVM),支持图形用户界面(AWT)、数据库连接(JDBC)等功能。JDK 1.0 提供了一个纯解释执行的 JVM 实现(Sun Classic VM),包含约 212 个类、8 个包。这是 Java 发展史上的里程碑,标志着 Java 正式成为一种独立的开发工具。

1997 年 2 月,JDK 1.1 发布。新增了内部类、JavaBeans、远程方法调用(RMI)、JDBC、反射机制等特性。类库从 212 个类增长到 503 个类、23 个包。

1998 年 12 月,J2SE 1.2 发布,代号 Playground。这是 Java 发展史上最重要的版本之一——Sun 将 Java 技术体系拆分为 J2SE(标准版)、J2EE(企业版)、J2ME(微型版)三大平台。该版本引入了 Swing 组件、集合框架(Collections)、JIT 即时编译器、反射与动态代理等特性。类库规模达到 1,520 个类、59 个包。这也是 Java SE 第一个真正具有商业价值的版本。

2000 年 5 月,J2SE 1.3 发布,代号 Kestrel(红隼)。最重要的变化是将 HotSpot JVM 作为默认虚拟机(HotSpot 于 1999 年 4 月诞生)。此外还引入了 Java Sound API、JNDI(Java 命名和目录接口)、JPDA(Java 平台调试架构)等。

这一时期,Java 逐步打破了 C/C++ 在编程语言领域的垄断,在互联网萌芽阶段站稳了脚跟。

二、生态扩张与企业级统治(2000–2014)

2002 年 2 月,J2SE 1.4 发布,代号 Merlin(隼)。这是第一个在 Java Community Process(JCP)下开发的版本。标志性特性包括:assert 关键字、NIO(New I/O)非阻塞 I/O、正则表达式、日志 API、内置 XML 解析器(JAXP)、异常链、IPv6 支持、Java Web Start 等。

2004 年 9 月,J2SE 5.0 发布,代号 Tiger。这是 Java 发展史上的里程碑版本——Sun 放弃了“1.x”的命名方式,正式采用“5.0”版本号。它引入了一系列革命性的语言特性:

  • 泛型(Generics):为集合提供编译期类型安全
  • 注解(Annotations):元数据编程的开端
  • 自动装箱/拆箱(Autoboxing/Unboxing)
  • 枚举(Enum)
  • 可变参数(Varargs)
  • 增强 for 循环(Enhanced for-loop)
  • java.util.concurrent 并发包,为高并发应用提供了强大支撑

J2SE 5.0 的类库从几百个类暴增到三千多个类。

2006 年 12 月,Java SE 6 发布。新增了 JDBC 4.0、JConsole 监控工具、对动态语言的支持、改进的 Swing 和 Java Web Start 等。Java SE 6 的生命周期异常漫长——由于后续版本开发延迟,它成为了企业级应用的主力版本长达数年。

2006 年底,Sun 在 JavaOne 大会上宣布 Java 技术开源,随后在 GPL 协议下发布 HotSpot 和 javac。这是 Java 发展中的里程碑事件,OpenJDK 项目由此诞生。

2009 年 4 月,Oracle 宣布以 74 亿美元收购 Sun Microsystems,2010 年 1 月交易完成。Java 商标从此归 Oracle 所有。高斯林于 2010 年 4 月从 Oracle 离职。

2011 年 7 月,Java SE 7 发布。主要特性包括:

  • try-with-resources:自动资源管理
  • switch 支持 String
  • 钻石运算符(Diamond Operator):类型推断简化
  • catch 多个异常
  • 数字字面量支持下划线分隔
  • G1 垃圾收集器从实验性变为正式特性

不过 Java 7 经历了长期跳票,Oracle 将大部分未完成项目推迟到了 Java 8。

2014 年 3 月 18 日,Java SE 8(LTS)发布。这是 Java 自 5.0 以来最大的变革。核心特性包括:

  • Lambda 表达式:将函数式编程引入 Java
  • Stream API:支持函数式风格的数据流操作
  • 新的日期时间 API(java.time
  • 接口默认方法(Default Methods)
  • Optional
  • Nashorn JavaScript 引擎

Java 8 的发布比预期晚了一年,官方表示是为了修复安全漏洞。但等待是值得的——Java 8 成为了企业级开发的事实标准,至今仍是全球使用最广泛的 Java 版本。

与此同时,Java 生态体系走向成熟:Spring 框架(2003 年发布)、Spring Boot、Spring Cloud、Maven/Gradle 构建工具、JUnit 测试框架等共同构成了完整的企业级开发生态链。全球 Top 100 银行中 97 家使用 Java 开发核心系统。

三、快速迭代与现代化转型(2017–至今)

2017 年 9 月,Java SE 9 发布。最重要的特性是 Project Jigsaw 模块化系统(Java Platform Module System,JPMS)。此外还引入了 jshell(交互式 REPL 工具)和响应式流(Reactive Streams)。从 Java 9 开始,Java 的发布周期从传统的特性驱动转变为每 6 个月一个版本的时间驱动模式。

2018 年 3 月,Java SE 10 发布。引入了局部变量类型推断(var 关键字)、基于 Java 的 JIT 编译器、G1 并行 Full GC 优化等。

2018 年 9 月,Java SE 11(LTS)发布。这是继 Java 8 之后的第二个现代 LTS 版本,关键特性包括:

  • 标准化 HTTP Client API
  • ZGC(可扩展的低延迟垃圾收集器)
  • Flight Recorder(飞行记录器)
  • TLS 1.3 支持
  • 单文件源代码启动
  • 移除了 Java EE 和 CORBA 模块
  • Lambda 参数的局部变量语法

2019 年 3 月,Java SE 12 发布,引入了 Switch 表达式(预览)、默认 CDS 归档等。

2019 年 9 月,Java SE 13 发布,引入了文本块(Text Blocks,预览)和 Switch 表达式增强。

2020 年 3 月,Java SE 14 发布。Switch 表达式正式转正,还引入了更有帮助的 NullPointerException、JFR 事件流等。

2020 年 9 月,Java SE 15 发布,引入了 EdDSA 算法、隐藏类,移除了 Nashorn JS 引擎。

2021 年 3 月,Java SE 16 发布,Record(记录类)正式转正,引入 Vector API(孵化)和 Alpine Linux 移植。

2021 年 9 月,Java SE 17(LTS)发布。作为最受推荐的现代 LTS 版本,关键特性包括:

  • 密封类(Sealed Classes):限制类的继承
  • 模式匹配(Pattern Matching)
  • 强封装 JDK 内部 API
  • 增强的伪随机数生成器
  • 新的 macOS 渲染管线
  • 弃用 Security Manager

2022 年 3 月,Java SE 18 发布,默认使用 UTF-8 编码、引入简易 Web 服务器、弃用 Finalization。

2022 年 9 月,Java SE 19 发布,引入了虚拟线程(Virtual Threads,预览)和结构化并发(预览)。

2023 年 3 月,Java SE 20 发布,继续完善虚拟线程和结构化并发。

2023 年 9 月,Java SE 21(LTS)发布。这是 Java 并发编程的革命性版本,核心特性包括:

  • 虚拟线程(Virtual Threads)正式转正——实现百万级 I/O 并发的轻量级线程
  • 结构化并发(Structured Concurrency)
  • 模式匹配 switch 正式转正
  • 记录模式(Record Patterns)
  • 序列集合(Sequenced Collections)
  • 分代 ZGC(Generational ZGC)

2024 年 3 月,Java SE 22 发布,引入了外部函数和内存 API(FFM API)、未命名变量与模式、G1 的区域固定等。

2024 年 9 月,Java SE 23 发布,ZGC 分代模式成为默认,引入 Markdown 文档注释。

2025 年 3 月,Java SE 24 发布,引入了 Stream Gatherers、Class-File API、提前类加载与链接、虚拟线程无钉同步等。

2025 年 9 月,Java SE 25(LTS)发布。这是继 Java 21 之后的最新 LTS 版本,核心特性包括:

  • Scoped Values(作用域值)正式发布——为结构化并发设计的不可变、可继承的线程局域数据,替代 ThreadLocal
  • 基本类型模式匹配:基本类型全面融入模式匹配体系
  • 紧凑源文件与实例 main 方法
  • 模块导入声明
  • 灵活的构造器体
  • 提前方法分析(AOT Method Profiling)
  • 紧凑对象头
  • 密钥派生函数 API
  • 移除 32 位 x86 移植

2026 年 3 月,Java SE 26 发布。主要特性包括:

  • HTTP Client API 支持 HTTP/3
  • 移除 Applet API
  • 任意 GC 的提前对象缓存
  • G1 GC 吞吐量优化(减少同步开销)
  • Prepare to Make Final Mean Final

四、生态与治理的演进

Java 的发展不仅仅是语言特性的堆叠,其生态与治理模式同样经历了深刻变革:

开源之路:2006 年 Sun 将 Java 开源,OpenJDK 成为 Java 的参考实现。如今 Oracle、IBM、Red Hat、Amazon、Microsoft、Apple 等公司深度参与 OpenJDK 的开发。

治理机制:自 J2SE 1.4 起,Java 的演变由 JCP(Java Community Process)统一管理,通过 JSR(Java Specification Request)来建议和定义对 Java 平台的改动。

发布节奏:从 Java 9 开始,Java 采用每 6 个月一个特性版本的快速发布模式,每 2 年发布一个 LTS(长期支持)版本。LTS 版本包括 Java 8、11、17、21、25 等。

Oracle 收购后的博弈:Oracle 保留了对 Java 商标和规范的控制权,但 OpenJDK 的代码完全开源;Oracle 可对企业级商业支持收费,但任何人都可以免费使用 OpenJDK。多方参与的治理模式形成了一种微妙的平衡。

总结

从 1991 年 Green Project 的 Oak,到 1996 年 JDK 1.0 的正式发布,再到 2026 年的 Java SE 26,Java 走过了超过 35 年的发展历程。它从一款为嵌入式设备设计的“小众”语言,成长为支撑全球 78% 世界 500 强企业核心业务的主流技术栈。

Java 的成功密码在于:跨平台的 JVM 架构、严谨的向后兼容性、活跃的开源社区、稳健的版本迭代,以及覆盖从嵌入式到企业级、从移动端到云原生的完整生态体系。在 AI 与云原生时代,Java 依然保持着旺盛的生命力,持续演进。