JAVA-什么是JDK?
1.JDK 的定义
JDK(Java Development Kit)是 Java 开发工具包,是 Oracle 官方提供的用于开发、编译和运行 Java 应用程序的核心工具集。它包含了编写 Java 程序所需的编译器、调试工具、库文件以及运行时环境(JRE)。
2.JDK 的核心组件
-
Java 编译器(javac)
将 Java 源代码(.java 文件)编译为字节码(.class 文件)。// 示例代码 public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");} }
使用
javac
编译:javac HelloWorld.java
-
Java 运行时环境(JRE)
包含 Java 虚拟机(JVM)和运行 Java 程序所需的类库。JRE 是 JDK 的子集,仅用于运行程序,而 JDK 用于开发。 -
工具和实用程序
java
:运行编译后的字节码。java HelloWorld
javadoc
:生成 API 文档。jdb
:Java 调试工具。jar
:打包和管理 Java 归档文件(.jar)。
-
标准类库(Java API)
提供预定义的类和方法(如java.lang
、java.util
等),支持开发常见功能(如集合、I/O、网络等)。
3.JDK 的版本
JDK 分为多个版本:
- Oracle JDK:官方商业版本,需付费订阅用于生产环境(个人开发仍可免费使用)。
- OpenJDK:开源版本,功能与 Oracle JDK 基本一致,但支持范围和许可不同。
- 其他发行版:如 Amazon Corretto、AdoptOpenJDK 等,提供长期支持(LTS)。
4.JDK 的安装与配置
-
下载
从 Oracle官网 或 OpenJDK 下载对应操作系统的 JDK 安装包。 -
安装
- Windows:运行安装程序并设置环境变量
JAVA_HOME
指向 JDK 安装路径。 - Linux/macOS:使用包管理器或手动解压后配置环境变量。
- Windows:运行安装程序并设置环境变量
-
验证安装
检查版本以确保安装成功:java -version javac -version
5.JDK 与 JRE 的区别
- JDK:面向开发者,包含开发工具(如编译器)和 JRE。
- JRE:面向用户,仅包含运行 Java 程序所需的 JVM 和类库。
6.实际应用场景
- 开发 Java 应用程序、Android 应用(需搭配 Android SDK)。
- 构建服务器端程序(如 Spring Boot 项目)。
- 使用现代工具链(如 Maven、Gradle)时,JDK 是必备依赖。
7.实际应用场景
JDK(Java Development Kit)根据应用场景、发行商和版本特性可分为以下三类,其区分方式如下:
📦 一、按应用领域分类
主要分为三个版本,适用于不同开发场景:
-
Java SE(Standard Edition)
- 定位:标准版,用于开发桌面应用、命令行工具等通用程序。
- 包含组件:核心类库(如
java.lang
、java.util
)、基础工具(javac
、java
)。 - 典型场景:学习Java语法、开发小型应用。
-
Java EE(Enterprise Edition,现改名为 Jakarta EE)
- 定位:企业版,支持分布式、高并发的大型应用。
- 扩展功能:Servlet、JSP、EJB、JMS 等企业级 API。
- 典型场景:Web 服务器、电商平台、金融系统。
-
Java ME(Micro Edition)
- 定位:微型版,针对嵌入式设备和移动终端优化。
- 特点:精简的类库和虚拟机,资源占用低。
- 典型场景:智能家电、旧式手机应用(如 J2ME 游戏)。
💡 区分关键:
- 开发目标:通用程序选 SE、企业级系统选 EE、嵌入式设备选 ME。
- 依赖库:EE 包含 SE 所有功能 + 企业扩展库;ME 是 SE 的子集。
🏢 二、按发行商分类
不同厂商基于 OpenJDK 提供定制化 JDK,主要区分如下:
发行版 | 提供商 | 核心特点 | 适用场景 |
---|---|---|---|
Oracle JDK | Oracle | 商业许可(生产环境需付费),含高级监控工具(如 Flight Recorder) | 企业级生产系统 |
OpenJDK | 开源社区 | 完全免费,功能与 Oracle JDK 基本一致 | 个人开发、测试环境 |
Amazon Corretto | Amazon | 免费 LTS 支持,针对 AWS 云环境优化 | 云原生应用部署 |
Eclipse Adoptium | Eclipse 基金会 | 社区驱动,提供多平台预编译包 | 跨平台开发 |
Azul Zulu | Azul Systems | 免费企业级支持,性能优化 | 对稳定性要求高的生产环境 |
💡 区分关键:
- 授权与费用:Oracle JDK 商用需订阅;其他版本免费。
- 支持周期:LTS(长期支持)版本(如 JDK 11/17/21)更适合企业。
🔖 三、按版本特性分类
以 LTS(Long-Term Support)版本为核心,区分特性与适用场景:
版本 | 发布时间 | 核心特性 | 生命周期 |
---|---|---|---|
JDK 8 | 2014 年 | Lambda 表达式、Stream API、接口默认方法 | 支持至 2030 年(Oracle) |
JDK 11 | 2018 年 | 局部变量类型推断(var )、HTTP/2 客户端、ZGC 垃圾收集器 | 支持至 2026 年(Oracle) |
JDK 17 | 2021 年 | 密封类(sealed class )、模式匹配(instanceof 增强)、移除 Applet API | 支持至 2029 年(社区) |
JDK 21 | 2023 年 | 虚拟线程(轻量级并发)、分代 ZGC、字符串模板预览 | 支持至 2031 年(社区) |
💡 区分关键:
- 功能迭代:
- JDK 8 引入函数式编程;
- JDK 11 强化性能与 HTTP 支持;
- JDK 17/21 聚焦语法简化与并发优化。
- 升级建议:
企业项目优选 LTS 版本(如 JDK 11/17);探索新技术可选 JDK 21。
✅ 四、如何选择与区分 JDK?
-
明确需求场景:
- 学习/小工具 → Java SE + OpenJDK;
- 企业级服务 → Java EE + Oracle JDK 或 Corretto;
- 物联网设备 → Java ME + 嵌入式定制 JDK。
-
关注授权与支持:
- 商用项目避免 Oracle JDK 的付费风险,可选 Corretto 或 Adoptium;
- 长期维护系统需绑定 LTS 版本(如 JDK 17)。
-
版本特性对比:
- 需要函数式编程 → JDK 8+;
- 需要高并发性能 → JDK 21(虚拟线程);
- 需兼容旧设备 → JDK 11(稳定且广泛支持)。
可通过命令
java -version
查看当前 JDK 发行商及版本信息,结合需求调整