JDK 介绍与使用指南
JDK 介绍与使用指南
一、JDK 是什么?
Java Development Kit (JDK) 是 Java 生态的基石,由 Sun Microsystems 在 1995 年推出,后被 Oracle 收购。它的诞生源于一个核心诉求:“Write Once, Run Anywhere”(一次编写,到处运行)。在早期编程环境中,开发者常因不同操作系统(Windows、Linux、Mac)的兼容性问题而痛苦不堪。比如一段 C 语言代码在 Windows 编译后无法在 Linux 运行。JDK 通过引入 Java 虚拟机 (JVM) 解决了这一难题 —— 开发者只需将 Java 源码 (.java
) 编译为平台无关的字节码 (.class
),再由各平台上的 JVM 翻译为机器指令执行。
历史关键点:
- JDK 1.0 (1996):首个正式版本,奠定基础 API 和 JVM 模型;
- JDK 5 (2004):革命性更新,引入泛型、注解、自动装箱;
- OpenJDK 诞生 (2006):Sun 将 JDK 开源,促成社区协作;
- Oracle 收购 Sun (2010):主导 JDK 迭代,制定新发布节奏;
- LTS 版本策略 (2017 后):每 3 年推出长期支持版(如 JDK 8、11、17),平衡稳定与创新。
二、JDK 能做什么?
JDK 的核心功能主要有两个:Java 编译器(javac)和 Java 运行时环境(JRE)。
1. Java 编译器(javac)
Java 编译器是 JDK 的核心工具之一,它负责将 Java 源代码(.java 文件)编译成字节码文件(.class 文件)。字节码是一种中间形式的代码,类似于汇编语言,但它不是直接针对特定的硬件平台,而是针对 JVM。这种设计使得 Java 程序具有跨平台的特性。
例如,下面是一个简单的 Java 源代码文件 HelloWorld.java
:
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}
}
使用 Java 编译器(javac)编译这个文件:
javac HelloWorld.java
编译后会生成一个 HelloWorld.class
文件,这个文件包含了 Java 字节码。
2. Java 运行时环境(JRE)
JRE 是运行 Java 程序的最小环境,它包含了 JVM、Java 核心类库以及其他支持文件。JRE 是运行 Java 程序的基础,如果你只是想运行已经编译好的 Java 程序(.class 文件),只需要安装 JRE 即可。
例如,要运行上面编译生成的 HelloWorld.class
文件,可以使用 Java 命令:
java HelloWorld
Java 命令会启动 JVM,JVM 会加载并执行 HelloWorld.class
文件中的字节码,最终输出 Hello, World!
。
除了这两个核心功能外,JDK 还包含了许多其他工具和组件,如调试器(jdb)、文档生成工具(javadoc)、性能分析工具(jstat、jmap、jstack 等)、打包工具(jar)等。
其他工具概览
工具 | 用途 | 示例命令 |
---|---|---|
jar | 打包类文件为 JAR 包 | jar cvf app.jar *.class |
jdb | 调试器 | jdb MyClass |
javadoc | 生成 API 文档 | javadoc MyClass.java |
jconsole | 监控 JVM 资源 | GUI 工具 |
三、安装教程(以 Windows 为例)
步骤 1:下载 JDK
- 访问 Oracle JDK 下载页 或 OpenJDK 官网;
- 选择 LTS 版本(如 JDK 17)和操作系统(如 Windows x64);
注意:从 JDK 11 开始,Oracle JDK 需要付费订阅才能用于商业用途。如果你是个人学习或非商业用途,可以继续使用 Oracle JDK;如果是商业用途,建议使用 OpenJDK(免费开源)。OpenJDK 可以从 Adoptium 或 Amazon Corretto 等网站下载。
步骤 2:安装 JDK
- 双击安装包 → 修改安装路径(建议无空格和中文,如
D:\Dev\Java\jdk-17
)→ 完成;
步骤 3:配置环境变量
- 右键“此电脑” → 属性 → 高级系统设置 → 环境变量;
- 新建系统变量:
- 变量名:
JAVA_HOME
- 变量值:
D:\Dev\Java\jdk-17
- 变量名:
- 编辑
Path
变量 → 新增条目:%JAVA_HOME%\bin
;
步骤 4:验证安装
> java -version
java version "17.0.5" 2022-10-18 LTS
> javac -version
javac 17.0.5
💡 Linux/macOS 用户:通过包管理器安装更快捷,例如
apt install openjdk-17-jdk
(Ubuntu)或brew install openjdk@17
(macOS)。
四、核心功能使用示例
示例 1:编译与运行 HelloWorld
// HelloWorld.java
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, JDK!"); }
}
# 编译
javac HelloWorld.java # 生成 HelloWorld.class
# 运行
java HelloWorld # 输出 Hello, JDK!
示例 2:利用 JVM 垃圾回收(GC)优化内存
以下代码创建的对象会被 GC 自动回收,避免内存泄漏:
public class GCTest {public static void main(String[] args) {for (int i = 0; i < 10000; i++) {String temp = "Object" + i; // 临时对象System.gc(); // 建议 JVM 执行 GC(非强制)}}
}
五、与其他产品对比
JDK 发行版对比(Oracle JDK vs OpenJDK)
特性 | Oracle JDK | OpenJDK |
---|---|---|
许可证 | BCL/OTN(商用需付费) | GPLv2(完全免费) |
开源程度 | 部分闭源组件 | 100% 开源 |
长期支持(LTS) | 官方提供(如 JDK 17) | 社区/厂商提供(如 Red Hat) |
性能差异 | 几乎无差异 | 几乎无差异 |
适用场景 | 企业生产环境 | 开发/测试/云原生 |
注:Java 11 后两者代码库基本一致,主要区别在许可证和商业支持。
版本选择建议
版本 | 状态 | 特点 |
---|---|---|
JDK 8 | LTS | 最稳定,企业主流 |
JDK 11 | LTS | 模块化支持,安全增强 |
JDK 17 | LTS | 最新特性(如密封类) |
JDK 21 | 非 LTS | 前沿功能,适合实验 |
六、跨领域思想扩展
1. 服装设计中的“结构承载情感”
设计师 Atticus Chen 在毕业系列《émotion》中,用 硬质皮革与流动欧根纱 形成刚柔对比。如同 JDK 通过严格语法(结构)支撑灵活编程(表达),他的作品证明:“浪漫需要精密计算” —— 每条纱线摆动轨迹都需反复推敲,恰如 JVM 的 GC 算法需平衡内存与性能。
2. 建筑中的“虚实接口”
建筑师安藤忠雄在 真言宗本福寺水御堂 中,用下沉式通道连接“水上莲花池”(虚)与“地下庙宇”(实)。访问者穿行时经历“入死出生”的隐喻,类似 .java
源码通过 javac
转化为 .class
字节码的过程 —— 两者皆在转化抽象为可体验的实体。
🌟 共同哲学:技术、服装、建筑皆需在边界之内寻求自由表达。JDK 用规范约束实现跨平台自由;服装以剪裁释放身体;建筑借结构重塑空间感知。
七、总结与资源
总结
JDK 作为 Java 生态的核心引擎,通过 javac
编译器和 java
运行时实现“一次编写,到处运行”。其设计哲学体现了 “约束中的自由” —— 严格的语法规范换来跨平台能力,而 JVM 的智能管理(如 GC、JIT)则让开发者专注逻辑而非底层细节。选择时需权衡:
- 稳定性优先 → 选 LTS 版本(JDK 11/17);
- 成本敏感 → 选 OpenJDK 发行版;
- 前沿探索 → 试用非 LTS 版本。
JDK 核心组件图
官方资源
- Oracle JDK 下载
- OpenJDK 社区
- JDK 文档
“标准化是复杂系统的基石” —— JDK 通过 JVM 抽象硬件差异,如同 Unix 的“小即是美”哲学,用简单接口解决复杂问题。