01、Java基础入门:JDK、JRE、JVM关系详解及开发流程
1. JDK, JRE, JVM 的关系(核心重点)
它们是 包含关系,从下到上层层嵌套,共同支撑Java程序的运行与开发。
- JVM (Java Virtual Machine) :Java虚拟机
- 是Java程序的"运行引擎",负责将字节码翻译成底层系统可执行的机器码。
- 核心作用是屏蔽操作系统差异,实现"一次编写,到处运行"(Write Once, Run Anywhere)。
- 单独存在无法运行程序,因为它缺少核心类库(如
java.lang包)。
- JRE (Java Runtime Environment) :Java运行环境
- 公式:
JRE = JVM + 核心类库 (Libs) - 作用:提供运行Java程序所需的基础环境,包括JVM和标准类库。
- 适用场景:仅需要运行已编译的Java程序(如运行Minecraft客户端)。
- 公式:
- JDK (Java Development Kit) :Java开发工具包
- 公式:
JDK = JRE + 开发工具 (javac, java, jdb等) - 作用:为开发者提供编译、调试、文档生成等工具,是开发Java程序的必备环境。
- 公式:
2. Java 开发步骤
Java是半编译半解释型语言 ,标准开发流程分为三步,通过mermaid流程图直观展示:
javac 编译
类加载
执行引擎
编写源代码
HelloWorld.java
生成字节码
HelloWorld.class
JVM运行时数据区
堆/栈/方法区
解释执行 / JIT编译
本地机器码
操作系统 + 硬件
- 编写 (Write) :
- 创建
.java源文件(如HelloWorld.java),编写人类可读的Java代码。
- 创建
- 编译 (Compile) :
- 使用
javac命令将源代码编译为.class字节码文件(如javac HelloWorld.java)。 - 字节码是JVM可识别的中间代码,与操作系统无关。
- 使用
- 运行 (Run) :
- 使用
java命令启动JVM并加载字节码(如java HelloWorld,注意不加.class后缀)。 - JVM通过解释器或JIT(Just-In-Time)编译器将字节码转换为本地机器码执行。
- 使用
3. 注释 (Comments)
注释是给程序员看的说明,Java编译器会忽略。共有三种类型:
-
单行注释 :
//java// 这是一个单行注释,仅限一行 int a = 10; -
多行注释 :
/* ... */java/* 这是一个多行注释 可以跨行书写 不会被编译执行 */ -
文档注释 :
/** ... */(重要)- 通常用于类、方法、变量上方,可通过
javadoc命令生成HTML文档。
java/** * 这是一个文档注释 * @author 作者名 * @version 1.0 */ public class Demo { } - 通常用于类、方法、变量上方,可通过
4. Java 语言的优缺点
优点
- 跨平台性:JVM屏蔽底层差异,实现"一次编写,到处运行"。
- 面向对象:支持封装、继承、多态,适合开发大型企业级系统。
- 健壮性:强类型机制、异常处理、自动垃圾回收(GC),减少内存泄漏风险。
- 生态强大:拥有Spring、大数据框架(如Hadoop)、海量开源库,功能覆盖全面。
- 多线程支持:内置多线程机制,易于开发高并发应用。
缺点
- 语法繁琐:相比Python/Go,需编写更多"样板代码"(如Getter/Setter,可通过Lombok插件缓解)。
- 启动慢:JVM冷启动较慢,不适合轻量级脚本或Serverless场景。
- 内存占用高:Java应用通常比C++应用占用更多内存。
5. JVM 的核心原理(补充)
JVM运行时将内存划分为不同区域,核心区域包括:
JVM运行时数据区
堆
Heap
new对象存储区
GC主要工作区
栈
Stack
局部变量+方法调用
自动回收
方法区
Method Area
类信息+常量+静态变量
- 堆 (Heap) :
- 存放所有
new出来的对象实例,是GC的主要工作区域。
- 存放所有
- 栈 (Stack) :
- 存放局部变量和方法调用,方法执行完毕后栈内存自动释放。
- 方法区 (Method Area) :
- 存放类的元数据、常量池、静态变量等信息。
总结
Java的跨平台性依赖于JVM的"翻译"能力------JVM针对不同操作系统提供对应版本,将统一的.class字节码转换为本地机器码。理解JDK、JRE、JVM的关系,以及Java开发流程和JVM内存结构,是掌握Java基础的关键。这些知识不仅帮助初学者建立系统认知,也为后续学习高级特性(如GC调优、多线程)打下坚实基础。