1. Java
-
是什么? Java首先是一种编程语言。它拥有特定的语法、关键字和结构,开发者可以用它来编写指令,让计算机执行任务。
-
核心特点: Java最著名的特点是"一次编写,到处运行"(Write Once, Run Anywhere - WORA)。这得益于Java的编译和运行机制(下面会讲到JVM)。
-
更广的含义: "Java"这个词也常常指整个Java技术体系,包括平台、工具、社区和生态系统。
简单比喻: Java就像是一本烹饪菜谱的规则,规定了如何写菜谱(语法),比如需要有哪些部分(食材、步骤)。
2. JVM (Java Virtual Machine - Java虚拟机)
-
是什么? JVM是Java程序运行的环境 。它是一个虚拟机,即一台用软件模拟出来的计算机。
-
核心职责:
-
加载代码:读取编译后的Java字节码文件(.class文件)。
-
验证代码:确保代码是安全且符合规范的。
-
执行代码 :将字节码解释 或编译成所在操作系统能理解的本地机器码并执行。
-
提供运行时环境:管理内存(著名的垃圾回收机制就在JVM中)、处理异常等。
-
-
关键点:
- JVM是 "平台相关" 的。不同操作系统(Windows, Linux, macOS)有各自版本的JVM。正是这些不同平台上的JVM,才使得同一份Java字节码可以在任何装有对应JVM的系统上运行,实现了"跨平台"。
简单比喻: JVM就像是一个能看懂标准菜谱(字节码)的万能厨师。无论你在哪里(Windows厨房或Linux厨房),只要有一个这样的万能厨师,他就能按照标准菜谱做出一样的菜。这个厨师负责具体的烹饪工作(执行),管理厨房的食材(内存管理)。
3. JRE (Java Runtime Environment - Java运行时环境)
-
是什么? JRE是用来运行已开发好的Java程序的软件包。如果你的电脑只想运行Java程序(如Minecraft),而不进行Java开发,那么安装JRE就足够了。
-
包含什么?
-
Java虚拟机 (JVM):核心执行引擎。
-
Java核心类库 (Java API) :一系列预先写好的、可供程序调用的工具类,比如用于数学计算的
Math
类、用于处理字符串的String
类等。 -
其他一些用于支持文件处理、网络通信等的基础组件。
-
简单比喻: JRE就像是整个厨房,里面包含了万能厨师(JVM)和所有基础食材和厨具(核心类库)。有了厨房,你就可以做出菜谱上的菜(运行程序)。
关系:JRE = JVM + Java核心类库
4. JDK (Java Development Kit - Java开发工具包)
-
是什么? JDK是提供给Java开发者 使用的软件工具包。如果你要编写 和编译Java程序,就必须安装JDK。
-
包含什么?
-
JRE:因为开发完成后需要运行和测试程序,所以JDK包含了完整的JRE。
-
编译器 (javac) :将你写好的
.java
源代码文件翻译成JVM能识别的.class
字节码文件。 -
调试和分析工具 :如
jdb
(调试器)、javap
(反编译工具)、jconsole
(监控工具)等。 -
其他工具 :如打包工具、文档生成工具(
javadoc
)等。
-
简单比喻: JDK就像是一整个厨师培训套装 ,它不仅包含了一个完整的厨房(JRE),还包含了如何写菜谱的指南(编译器)、调试菜谱味道的工具(调试工具)等,让你能够创作和测试新的菜谱。
关系:JDK = JRE (JVM + 核心类库) + 开发工具 (编译器、调试器等)
5. Java SE (Java Platform, Standard Edition)
-
是什么? Java SE是Java平台的标准版,它提供了Java最核心的功能和库。
-
包含什么?
-
它定义了Java语言的基础部分(语法、类型、变量等)。
-
它包含了所有Java核心类库(如集合框架、网络、I/O、数据库连接JDBC、多线程等)。
-
它也包括了JRE 和JDK。
-
-
用途: 用于开发和部署桌面应用程序、命令行程序以及一些简单的服务器应用程序。它是Java技术的基石。
简单比喻: Java SE就像是烹饪的入门教科书和标准食材套装,它教你所有基础烹饪技巧(核心语法和API),让你能做出口感不错的家常菜(桌面/命令行程序)。
6. Java EE (Java Platform, Enterprise Edition) - 现称 Jakarta EE
-
是什么? Java EE是建立在Java SE之上的企业版 。它是一套规范(标准) 的集合,而不是一个具体的软件。
-
核心思想: 为了开发大规模、分布式、多层次、可扩展、高可靠性的企业级应用(如电子商务网站、银行系统、ERP系统)。
-
包含什么? 它扩展了Java SE,增加了一系列用于企业开发的API和规范,例如:
-
Servlet / JSP:用于处理Web请求和生成动态网页。
-
EJB:用于实现复杂的业务逻辑。
-
JPA:用于对象和关系数据库的映射(持久化)。
-
JMS:用于消息服务。
-
CDI:依赖注入。
-
-
重要提示: Oracle公司将Java EE移交给了开源组织Eclipse基金会,并改名为 Jakarta EE。所以现在更准确的叫法是Jakarta EE,但它的目的和内容与Java EE一脉相承。
简单比喻: Java EE (Jakarta EE) 就像是开高级餐厅的完整商业方案。它基于烹饪教科书(Java SE),但额外提供了如何管理后厨(EJB)、如何接待大量顾客(Servlet)、如何管理会员系统(JPA)等一系列高级规范和标准。具体的餐厅(如Tomcat, WildFly, WebSphere)需要按照这个方案来实施。
总结与关系图
层级关系:
-
JVM 是最底层,负责实际执行代码,是跨平台的基础。
-
JRE = JVM + 基础类库。提供了运行环境。
-
JDK = JRE + 开发工具。提供了开发环境。
-
Java SE 是一个平台规范,它包含了JDK和JRE,定义了Java的核心。
-
Java EE (Jakarta EE) 是基于Java SE的一系列扩展规范,用于企业级开发。
如何选择?
-
只想运行 Java程序:安装 JRE 即可(但现在JDK通常已捆绑JRE,直接装JDK也行)。
-
想要开发 Java程序:必须安装 JDK。
-
学习Java基础或做桌面开发:学习 Java SE。
-
想要做网站、大型分布式系统:在学会Java SE后,学习 Java EE (Jakarta EE) 的规范和技术(如Servlet、Spring框架等)。