JDK 1.1 于 1997 年 2 月 19 日发布,是 JDK 1.0 之后的首个重要更新。1.0 以 Applet 与 AWT 打开知名度,1.1 则补上了企业开发所需的一批基础能力:数据库、远程调用、反射、序列化、JAR 打包等。命名与后续演变见 Java 版本历史。

版本号说明

维度 JDK 1.1
对外名称 Java 1.1 / JDK 1.1
java.version 1.1.x
class major version 45(minor 3,即 45.3)
上一版本 JDK 1.0
下一版本 JDK 1.2(1998-12,集合框架与 Swing)

概览

语言

  • 内部类(nested classes):成员内部类、局部内部类、匿名内部类、静态嵌套类(详见 Java 内部类)

类库与规范

  • 反射(java.lang.reflect):运行时检查类、方法、字段并调用
  • JDBC(java.sql):标准数据库访问 API,Java 进入服务端开发的入口之一
  • RMI(java.rmi):远程方法调用
  • JavaBeans(java.beans):组件化与 IDE 工具链约定
  • 对象序列化(java.io.Serializable 等):对象持久化与网络传输
  • JAR(Java ARchive):类与资源的打包格式,配套 jar 命令
  • 国际化(java.util.Locale、ResourceBundle 等)与 Unicode 文本流(Reader / Writer)
  • java.text:日期、数字格式化
  • java.math:BigDecimal、BigInteger

AWT

  • 委托事件模型(delegation event model):用监听器(如 ActionListener)替代 1.0 的 handleEvent() 继承式写法;GUI 代码结构变化较大,属于不兼容的 API 调整

JVM 与性能

  • 引入 JIT 编译器(因平台而异),热点 bytecode 可编译为本地代码,性能较 1.0 纯解释执行明显提升
  • 类卸载(class unloading)等运行时能力增强
  • 仍为 Sun 早期 JVM;HotSpot 要到 1.3 才成为默认实现

工具

  • jar:打包与解包 JAR
  • serialver:查看序列化类的 serialVersionUID
  • jdb 等调试工具随 JDK 增强

1.1 尚未具备(后续版本才加入)

能力 大致引入版本
Swing、集合框架(HashMap 等) 1.2
java.lang.ref(软/弱/虚引用) 1.2
HotSpot 默认 VM 1.3(1.4 起唯一,见 HotSpot)
assert、NIO、标准正则 1.4
泛型、enum、for-each、JUC 5

内部类

1.0 只有顶层类;1.1 起可在类或方法内部定义嵌套类,为回调、封装 helper、匿名监听器等场景提供语法支持:

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // 匿名内部类,常见于 1.1 AWT/Swing 时代
    }
});

编译后内部类会生成 Outer$Inner.class 等形式。设计动机与用法见 Java 内部类。


反射

JDK 1.1 引入 java.lang.reflect,允许在运行时获取 Class 对象并调用构造器、方法、字段:

Class<?> clazz = Class.forName("com.example.Foo");
Object obj = clazz.getDeclaredConstructor().newInstance();
Method m = clazz.getMethod("bar", String.class);
m.invoke(obj, "hello");

反射为 JavaBeans、序列化、RMI、框架与 IDE 提供了基础设施;Class 的含义与获取方式见 java.lang.Class。JDK 9 起的模块系统与后续强封装对深层反射做了更多限制(见 JDK 17 等)。


JDBC

JDBC 定义统一的数据库访问接口,应用通过驱动连接不同厂商的数据库:

Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id FROM users");

1.1 确立 java.sql 核心类型(Connection、Statement、ResultSet 等);后续版本在连接池、批处理、try-with-resources 等方面演进(JDBC 4.1 的 AutoCloseable 见 JDK 7)。


RMI

RMI 使 JVM 之间可通过远程接口调用方法,典型用于早期分布式 Java 应用:

// 服务端导出远程对象,客户端通过 Registry 查找 stub 并调用
MyRemote stub = (MyRemote) Naming.lookup("//host/MyService");
stub.doWork();

RMI 在微服务与 HTTP/gRPC 普及后使用减少;JDK 17 移除了 RMI Activation(见 JDK 17)。


序列化与 JAR

序列化让对象可写入字节流并在另一 JVM 还原:

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("data.ser"));
out.writeObject(myObject);

类需实现 Serializable;serialver 工具可查看编译器生成的 serialVersionUID。

JAR 将 .class、资源与 META-INF/MANIFEST.MF 打成一个文件,便于 Applet 下载、类路径分发与(后来的)签名:

jar cvf myapp.jar com/example/*.class

1.1 起 JAR 成为 Java 生态的标准分发单元;Applet 与早期 Web 应用广泛依赖。


国际化与 Unicode

1.1 加强了对多语言的支持:

  • Locale、ResourceBundle:按语言/地区加载属性文件中的文案
  • Reader / Writer:基于字符的 I/O,配合 Unicode,弥补 1.0 InputStream / OutputStream 按字节处理的不足
  • java.text.DateFormat / NumberFormat:按区域格式化日期与数字

AWT 委托事件模型

1.0 通过继承 Component 并重写 handleEvent() 处理 GUI 事件;1.1 改为监听器注册:

button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("clicked");
    }
});

旧代码需迁移;Swing(1.2)沿用同一套监听器思路。1.0 的 Applet/AWT 程序升级 1.1 时常需改事件处理代码。


垃圾回收(GC)

GC 基本没变化。 1.1 仍附带 Classic VM(HotSpot 要到 1.3 才成为默认 VM),用的还是 1.0 那套固定的**标记-清除(Mark-Sweep)**收集器:单线程、Stop-The-World、不分代,同样没有任何切换收集算法的命令行参数,详见 JDK 1.0。

1.1 引入的 JIT 编译器改善的是字节码的执行速度(解释 vs. 编译执行),跟 GC 是两回事——即便有了 JIT,回收对象时用的仍是同一个非分代 mark-sweep 收集器,谈不上分代模型、也谈不上收集器可选。真正让 GC 发生根本变化(分代模型、HotSpot 的 Serial 收集器等)要等到 JDK 1.3 起 HotSpot 成为默认 VM 之后。

历史背景(简述)

1997 年距 1.0 发布约 21 个月。浏览器里的 Applet 仍带热度,但 JDBC 与 RMI 让 Java 开始被服务端与中间件场景认真采用——为 1998 年 Java 1.2(Swing、集合框架、「Java 2 Platform」品牌)铺路。平台命名、发布节奏见 Java 版本历史。


与 JDK 1.0 的衔接

主题 JDK 1.0 JDK 1.1
嵌套类型 仅顶层类 内部类
运行时自省 无标准反射 API java.lang.reflect
数据库 / 远程调用 无 JDBC、RMI
打包 松散 .class JAR
GUI 事件 handleEvent() 监听器模型
JVM 以解释为主 引入 JIT

更完整的 1.0 基线见 JDK 1.0。


维护记录

时间 修改内容 原因
2026-06-21 反射章节链至 java-lang-class.md Class 概念独立成文
2026-06-21 修正 HotSpot 引入版本表述 与 hotspot.md 时间线对齐
2026-07-14 新增「垃圾回收(GC)」章节,说明 1.1 的 GC 与 1.0 相比基本无变化 用户询问 1.1 的 GC 是否有变化
2026-07-15 url 改为 jdk-1-1 URL 含 . 时 Cloudflare 误判 MIME,页面无法打开

参考