Java 的开发始于 1991 年,由 Sun Microsystems 的 James Gosling、Mike Sheridan 和 Patrick Naughton 领导的团队发起。最初,项目名为 "Oak",灵感来源于 Gosling 办公室外的一棵橡树,目标是为消费电子设备(如机顶盒、电视)设计一种通信语言。团队最初考虑使用 C++,但因其内存需求较高而放弃。最终,他们设计了一种新语言,强调平台独立性和可移植性,旨在让程序能够在不同设备上运行,而无需重新编译。
随着互联网的兴起,Java 的应用场景扩展到 World Wide Web。1995 年,Java 1.0 发布时,其 "编写一次,到处运行"(Write Once, Run Anywhere, WORA)的特性成为亮点。这得益于 Java 使用字节码(Bytecode),由 Java 运行时环境(JRE)或 Java 虚拟机(JVM)解释执行,使其能够在 Windows、Macintosh、UNIX 等多种平台上运行。Java 的设计原则包括健壮性(通过自动垃圾回收和异常处理)、高性能(通过即时编译)、多线程支持,以及安全性,这些特性使其特别适合互联网编程、移动设备、游戏和电子商务解决方案。
TIME MAGAZINE 在 1995 年将 Java 评为年度十大最佳产品之一,凸显了其在技术界的早期影响力。
年份 | 事件 | 说明 |
---|---|---|
1991 | Green Project 启动 | James Gosling 开始研究跨平台编程语言 |
1995 | Java 1.0 正式发布 | “一次编写,处处运行”(Write Once, Run Anywhere)成为标志口号 |
1996 | Java 开发工具(JDK 1.0)发布 | 第一个稳定版本 |
1997 | Java 被广泛用于 Web Applets | 浏览器(如 Netscape)支持 Java Applet |
1999 | Java 分为多个版本 | J2SE(标准)、J2EE(企业)、J2ME(移动) |
2004 | Java 5 发布(代号 Tiger) | 引入泛型、枚举、自动装箱等 |
2006 | Java 开源(OpenJDK 发布) | 社区贡献变得更加活跃 |
2009 | Oracle 收购 Sun | Java 随 Sun Microsystems 一起被收购 |
2011 | Java 7 发布 | 增强的异常处理、NIO.2 文件系统 API |
2014 | Java 8 发布 | 引入 Lambda 表达式和 Stream API,彻底改变 Java 编程风格 |
2017 | Java 9 发布 | 引入模块化系统(Jigsaw) |
2018 起 | 每 6 个月发布新版本 | Java 10+ 开始进入快速发布周期 |
2021 | Java 17 成为长期支持版本(LTS) | 企业广泛采用的主流版本 |
2024 | Java 21 成为新一代 LTS 版本 | 引入虚拟线程(Project Loom)等革命性特性 |
Java 自发布以来经历了多次版本迭代,每个版本都引入了新的特性和改进。以下是详细的时间线,
版本 | 发布日期 | 主要变化/备注 |
---|---|---|
JDK Beta | 1995 | 初始发布,奠定 Java 基础。 |
JDK 1.0 | 1996 年 1 月 | 首次稳定版本,也称为 Java 1,标志着 Java 的正式开始。 |
JDK 1.1 | 1997 年 2 月 | 引入 AWT 事件模型重构、内部类、JavaBeans、JDBC 和 RMI。 |
J2SE 1.2 | 1998 年 12 月 | 代号 "Playground";引入 strictfp 关键字、Swing API、JIT 编译器和集合框架。 |
J2SE 1.3 | 2000 年 5 月 | 代号 "Kestrel";引入 HotSpot JVM、Java Naming and Directory Interface 和 JavaSound。 |
J2SE 1.4 | 2002 年 2 月 | 代号 "Merlin";引入正则表达式、XML 解析器和 Image I/O API,支持至 2008 年 10 月。 |
J2SE 5.0 | 2004 年 9 月 | 代号 "Tiger";内部版本 1.5;引入泛型、注解、自动装箱和增强型 for 循环。 |
JAVA SE 6 | 2006 年 12 月 | 代号 "Mustang";替换 J2SE,取消 .0;引入 JAXB 2.0 和 JDBC 4.0。 |
JAVA SE 7 | 2011 年 7 月 | 代号 "Dolphin";引入字符串在 switch 中的使用和二进制整数字面量。 |
JAVA SE 8 | 2014 年 3 月 | 引入 Lambda 表达式、默认方法和受 Joda Time 启发的日期/时间 API。 |
JAVA SE 9 | 2017 年 9 月 | 引入模块系统(Project Jigsaw),用于管理大型项目。 |
JAVA SE 10 | 2018 年 3 月 | 引入局部变量类型推断(var)和线程本地握手。 |
JAVA SE 11 | 2018 年 9 月 | 长期支持版本;引入动态类文件常量和 HTTP 客户端。 |
JAVA SE 12 | 2019 年 3 月 | 引入 Shenandoah 垃圾回收器(实验性)和 switch 表达式(预览)。 |
JAVA SE 13 | 2019 年 9 月 | 引入文本块和增强的线程本地握手。 |
JAVA SE 14 | 2020 年 3 月 | 引入记录(Records)和模式匹配 for instanceof。 |
JAVA SE 15 | 2020 年 9 月 | 引入密封类和隐藏类。 |
JAVA SE 16 | 2021 年 3 月 | 引入记录(预览)和模式匹配 for switch(预览)。 |
JAVA SE 17 | 2021 年 9 月 | 长期支持版本;引入密封类(最终版)和模式匹配 for instanceof(最终版)。 |
JAVA SE 18 | 2021 年 9 月 | 引入外来函数和内存 API(预览)。 |
JAVA SE 19 | 2022 年 9 月 | 引入结构化并发和虚拟线程。 |
JAVA SE 20 | 2023 年 3 月 | 引入模式匹配 for switch 和范围值。 |
JAVA SE 21 | 2023 年 9 月 | 长期支持版本;引入虚拟线程和结构化并发。 |
JAVA SE 22 | 2024 年 3 月 | 引入字符串模板和隐式类。 |
JAVA SE 24 | 2025 年 3 月 18 日 | 当前最新版本,截至 2025 年 6 月 24 日。 |
我想等网站访问量多了,在这个位置放个广告。网站纯公益,但是用爱发电服务器也要钱啊 ----------狂奔的小蜗牛