本篇内容:Java 核心机制-Java 虚拟机、JDK,JRE的关系、下载、安装JDK、配置环境变量 path、运行第一个hello,world。
1. Java 为什么能“一次编写,到处运行”?
如果你接触过其他编程语言,可能会听说过 C/C++ 的程序需要针对不同的操作系统(Windows、macOS、Linux)分别编译,否则无法运行。
但 Java 程序只需要编译一次,就能在任何安装了 Java 运行时环境 的设备上运行。这背后的功臣就是 Java 虚拟机(Java Virtual Machine,JVM)。
1.1 什么是 Java 虚拟机(JVM)?
JVM 是一个虚拟的“计算机”,它有自己的指令集、内存管理和运行时数据区。Java 编译器并不直接把代码编译成机器码(CPU 能直接识别的指令),而是编译成一种中间代码——字节码(Bytecode)。
字节码是平台无关的,它需要由 JVM 解释或编译成当前操作系统能理解的机器码。
简单来说:
- 不同操作系统 上有不同版本的 JVM(Windows 版 JVM、macOS 版 JVM、Linux 版 JVM)。
- 同一个字节码文件 可以在任意平台的 JVM 上运行,JVM 负责把字节码翻译成本地机器码。
这就实现了“一次编写,到处运行”。
1.2 JVM 的核心职责
除了跨平台,JVM 还负责:
- 内存管理:自动分配和回收内存(垃圾回收,GC)。
- 安全沙箱:保证字节码不会破坏底层系统。
- 执行引擎:解释或编译字节码。
后面我们会深入学习 JVM 的内存结构和垃圾回收,现在你只需要记住:Java 程序运行在 JVM 上,JVM 让 Java 具备了跨平台能力。
(Java 源文件 → 编译器 → 字节码文件 → 不同平台的 JVM → 各自操作系统)
2. JDK 与 JRE:开发工具包与运行环境
在下载 Java 之前,你一定会遇到两个缩写:JDK 和 JRE。它们有什么区别呢?
2.1 JRE(Java Runtime Environment,Java 运行时环境)
如果只是想运行别人写好的 Java 程序(比如一些桌面软件或服务器程序),只需要安装 JRE 就够了。
JRE 包含:
- JVM(虚拟机)
- Java 核心类库(已经写好的基础代码,比如输入输出、网络功能等)
- 其他支持文件
2.2 JDK(Java Development Kit,Java 开发工具包)
如果你要开发 Java 程序(编写代码、编译、调试),就需要安装 JDK。
JDK 包含:
- 完整的 JRE(通常有一个私有的 JRE)
- 开发工具:
javac(编译器)、java(运行器)、javadoc(文档生成器)、jar(打包工具)等
包含关系:JDK 包含 JRE,JRE 包含 JVM。
对于我们初学者,必须安装 JDK,因为我们既要写代码,又要运行和调试。
3. 下载与安装 JDK
3.1 选择版本
目前 Java 的版本更新非常快,每六个月发布一个新版本。对于初学者,推荐使用 长期支持版(LTS),比如 JDK 8 或 JDK 11,这两个版本最稳定,资料也最丰富。
本教程以 JDK 8 为例(你也可以选择 11 或 17,安装步骤类似)。
3.2 下载地址
- Oracle 官网:www.oracle.com/java/techno…
需要注册 Oracle 账户(免费)。 - OpenJDK 镜像(更简单,无需注册):jdk.java.net/
或者国内的华为、阿里云镜像站。
为了演示方便,我们以 Oracle JDK 8 为例,找到对应操作系统的安装包(Windows x64,macOS,Linux)。
3.3 安装步骤(Windows 示例)
- 双击下载的
.exe文件,启动安装向导。 - 点击“下一步”,可以选择安装路径,建议保持默认(例如
C:\Program Files\Java\jdk1.8.0_xxx),但要记住这个路径,后面配置环境变量会用到。 - 安装过程中会弹出一个独立窗口安装 JRE,同样可以保持默认路径,继续下一步。
- 完成安装。
注意:安装路径中尽量不要包含中文或空格,否则可能引起一些不必要的麻烦。
4. 配置环境变量 PATH
4.1 为什么要配置 PATH?
安装完 JDK 后,我们需要在命令行(CMD 或终端)中使用 javac 和 java 命令来编译和运行程序。
如果不配置 PATH,每次使用这些命令时都要输入完整路径,比如 C:\Program Files\Java\jdk1.8.0_xxx\bin\javac,这非常麻烦。
PATH 环境变量的作用是告诉操作系统:当你在命令行输入一个命令(如 javac)时,去哪些目录下寻找对应的可执行程序。
我们把 JDK 的 bin 目录添加到 PATH 中,就可以在任何路径下直接使用 javac 和 java 了。
4.2 如何配置 PATH(Windows 10/11)
-
找到 JDK 的 bin 目录
例如C:\Program Files\Java\jdk1.8.0_202\bin。
可以打开资源管理器确认该目录下是否有javac.exe和java.exe。 -
打开环境变量设置
- 右键“此电脑” → 属性 → 高级系统设置 → 环境变量。
- 或者在开始菜单搜索“环境变量”直接进入。
-
在系统变量中编辑 PATH
- 在“系统变量”列表中找到
Path变量,选中并点击“编辑”。 - 点击“新建”,把刚才的
bin目录路径粘贴进去。 - 点击“确定”保存所有窗口。
- 在“系统变量”列表中找到
注意:Windows 7 用户需要用分号
;分隔已有路径,然后把新路径加在后面。
4.3 验证配置是否成功
- 打开新的命令行窗口(CMD 或 PowerShell)。
- 输入
java -version,如果显示 Java 版本信息,说明java命令可用。 - 输入
javac -version,如果显示javac 1.8.0_xxx,说明编译工具也可用。
如果提示“不是内部或外部命令”,请检查 PATH 路径是否正确,或者重新打开命令行窗口。
5. 第一个 Java 程序:Hello World
环境准备好了,我们来写第一个 Java 程序!按照惯例,输出 “Hello, World!”。
5.1 编写源代码
- 在你喜欢的位置创建一个新文件夹,比如
D:\JavaCode。 - 在该文件夹中新建一个文本文件,重命名为
HelloWorld.java。
注意:文件名必须与代码中的类名完全一致(包括大小写),这里类名为HelloWorld,所以文件名为HelloWorld.java。 - 用记事本或任何文本编辑器(推荐 VS Code、Sublime、Notepad++)打开,输入以下代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
代码解释:
public class HelloWorld:定义一个公共类,类名是HelloWorld。public static void main(String[] args):程序的入口点,JVM 会从这里开始执行。System.out.println(...):打印括号中的内容到控制台,并换行。
5.2 编译(javac)
打开命令行,切换到 HelloWorld.java 所在的目录(例如 cd /d D:\JavaCode),然后执行:
javac HelloWorld.java
如果代码没有错误,命令不会输出任何信息,但会在当前目录生成一个 HelloWorld.class 文件(字节码文件)。
5.3 运行(java)
继续在命令行输入:
java HelloWorld
注意:这里不要加 .class 后缀,只要类名 HelloWorld。
如果一切顺利,你会看到输出:
Hello, World!
恭喜!你已经成功运行了第一个 Java 程序!
6. Java 程序执行流程分析
我们来梳理一下刚才经历了哪些步骤,这有助于理解 Java 的运行机制。
- 编写源代码:我们创建了
.java文件,这是人类可读的代码。 - 编译(javac):Java 编译器将
.java文件编译成.class文件(字节码)。字节码是 JVM 能理解的指令集。 - 类加载:当我们运行
java HelloWorld时,JVM 启动,并通过类加载器将HelloWorld.class加载到内存中。 - 字节码验证:JVM 对字节码进行安全校验,确保不会危害系统。
- 执行引擎:
- 解释执行:逐行将字节码翻译成机器码并执行(启动快,但执行慢)。
- JIT 编译:热点代码(频繁执行的代码)会被即时编译器编译成本地机器码,提高执行效率。
- 运行输出:最终程序输出结果。
整个流程可以概括为:
源代码 (.java) --(javac编译)--> 字节码 (.class) --(java命令启动 JVM)--> 类加载 -> 执行 -> 输出
7. 常见问题与提示
- 找不到或无法加载主类:通常是因为运行时类名写错,或者当前目录不在 classpath 中。初学者直接运行
java HelloWorld并确保在 .class 文件所在目录执行即可。 - javac 不是内部或外部命令:环境变量 PATH 配置有误,重新检查。
- 类名与文件名不一致:Java 要求 public 类的类名必须与文件名相同,否则编译报错。
8. 总结与下期预告
今天我们学习了:
- JVM 的作用与跨平台原理
- JDK 和 JRE 的区别与关系
- 如何下载安装 JDK
- 配置 PATH 环境变量
- 编写、编译、运行第一个 Java 程序
- Java 程序从源码到执行的完整流程
下一篇文章我们将深入 打Java 基础,DOS 命令、转义字符、注释、代码规范,开始真正写更多有趣的代码!如果你在安装配置过程中遇到问题,欢迎留言讨论。
动手实践:尝试修改 HelloWorld 中的字符串,比如改成你的名字,重新编译运行,看看效果。
加油,你已经迈出了 Java 学习的第一步!🚀