JDK 1.0 于 1995 年 5 月 23 日由 Sun Microsystems 正式发布,是 Java 语言与平台的第一个对外产品版本。命名与后续演变见 Java 版本历史。
1.0 之前还有别的「版本」吗?
没有更早的对外编号版本。 在 1.0 之前只有 Sun 内部的研发代号与预览构建,不算正式产品线:
| 阶段 | 时间(约) | 说明 |
|---|---|---|
| Green 项目 | 1991 起 | Sun 内部面向消费电子设备的研究项目 |
| Oak | 1991~1995 | 语言与运行时的内部代号(James Gosling 等) |
| 更名 Java | 1995 初 | 因商标冲突放弃 Oak,改用 Java |
| Alpha / Beta | 1995 上半年 | 面向开发者的预览版,供 Applet 等场景试用 |
| JDK 1.0 | 1995-05 | 首个公开发布、可商用的 JDK |
因此讨论「Java 最早版本」时,1.0 就是起点;Oak、Alpha、Beta 是开发史里的名称,不是 0.x 或更早的正式版本号。下一版为 JDK 1.1(1997 年 2 月)。
版本号说明
| 维度 | JDK 1.0 |
|---|---|
| 对外名称 | Java 1.0 / JDK 1.0 |
java.version |
1.0.x |
| class major version | 45(1.0.2 起常见为 45.3) |
| 下一版本 | JDK 1.1 |
概览
1.0 已经具备今天仍熟悉的核心语言形态:类与接口、继承、包、final / static / synchronized、异常(含 checked exception)、数组、基本类型与 String。标准库规模很小——大约 212 个类、8 个包,许多今天常用的 API 尚未出现。
语言与并发
- 面向对象基础语法与 checked exception 模型
Thread与Runnable,以及synchronized关键字(见 Java 线程)- 尚无内部类、反射、断言、
strictfp等(内部类在 1.1,断言在 JDK 1.4)
类库(1.0 已有)
java.lang:Object、String、包装类、异常层次java.util:Vector、Hashtable、Stack、Date等(尚无 集合框架,那是 1.2 引入)java.io:流式 I/O、Filejava.net:Socket 等基础网络 APIjava.awt:AWT 图形界面(重量级、依赖本地 peer)- Applet:在浏览器中嵌入 Java 小程序的 API(1.0 时代 Java 走红的入口之一)
1.0 尚未具备(后续版本才加入)
| 能力 | 大致引入版本 |
|---|---|
| 内部类、反射、JAR | 1.1 |
Swing、集合框架、java.lang.ref |
1.2 |
| HotSpot 成为默认 VM | 1.3(Classic VM 于 1.4 移除,见 HotSpot) |
assert、NIO、标准正则 |
1.4 |
| 泛型、enum、for-each、JUC | 5 |
JVM
1.0 附带的是 Sun 自研的解释型虚拟机,以字节码解释执行为主;JIT 与 HotSpot 是此后若干年逐步演进的结果,与今天的 OpenJDK 默认 VM 不是同一套实现。
垃圾回收(GC)
1.0 没有「收集器可选」这件事——不存在任何切换 GC 算法的命令行参数,今天讨论的 Serial、Parallel、CMS、G1 等收集器全部是 HotSpot 的实现,而 1.0~1.2 附带的是 Sun 自研的 Classic VM,HotSpot 要到 JDK 1.3 才成为默认 VM(详见 HotSpot)。
Classic VM 内置的是一个固定的标记-清除(Mark-Sweep)收集器:单线程、Stop-The-World,且不分代——不区分新生代 / 老年代,每次 GC 都要扫描整个堆,谈不上 Minor GC / Full GC 的区分。用户唯一能调的是堆大小本身(当时的参数写法是 -ms / -mx,即今天 -Xms / -Xmx 的前身),收集算法不可选。
| 维度 | JDK 1.0 |
|---|---|
| 可选收集器数量 | 0(固定一种实现,无参数可切换) |
| 收集算法 | 标记-清除,不分代,不压缩 |
| 执行方式 | 单线程、Stop-The-World |
| 所属 VM | Classic VM(非 HotSpot) |
分代模型与 Serial 收集器等要到 HotSpot 引入后才出现;完整的收集器演进时间线见 Java GC(该表格从 JDK 1.3.1 起算,1.0~1.2 的 Classic VM 阶段严格来说还在这条时间线之前)。
历史背景(简述)
1995 年 Java 随 Applet 与 Netscape 等浏览器集成而迅速获得关注:「一次编写,到处运行」针对的是跨平台 GUI 与小段 Web 逻辑。企业级服务端大规模采用则要等到 1.1 的 JDBC、1.2 的集合与 Swing,以及 J2EE 时代之后。平台品牌从 J2SE 到 Java SE、发布节奏与 LTS 等,见 Java 版本历史。
就个人时间线而言,JDK 1.0 发布的 1995 年 5 月,我仍在读小学六年级,暑假后就要上初中。那时对计算机还是完全未知的状态——Java 在硅谷与浏览器里起步,与东北小城镇的课堂、日常没有任何交集;要到许多年之后,才会真正接触编程。
维护记录
| 时间 | 修改内容 | 原因 |
|---|---|---|
| 2026-06-21 | 修正 HotSpot 引入版本表述 | 与 hotspot.md 时间线对齐 |
| 2026-07-14 | 新增「垃圾回收(GC)」章节,说明 1.0 用的是 Classic VM 固定标记-清除收集器,无收集器可选 | 用户要求补充 GC 相关内容 |
| 2026-07-15 | url 改为 jdk-1-0 |
URL 含 . 时 Cloudflare 误判 MIME,页面无法打开 |