零基础学Java|第二篇:Java 核心机制与第一个程序:从 JVM 到 Hello World

1 阅读8分钟

本篇内容: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 → 各自操作系统)

Java 跨平台原理示意图

2. JDK 与 JRE:开发工具包与运行环境

在下载 Java 之前,你一定会遇到两个缩写:JDKJRE。它们有什么区别呢?

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、JRE、JVM 包含关系图

对于我们初学者,必须安装 JDK,因为我们既要写代码,又要运行和调试。


3. 下载与安装 JDK

3.1 选择版本

目前 Java 的版本更新非常快,每六个月发布一个新版本。对于初学者,推荐使用 长期支持版(LTS),比如 JDK 8JDK 11,这两个版本最稳定,资料也最丰富。
本教程以 JDK 8 为例(你也可以选择 11 或 17,安装步骤类似)。

3.2 下载地址

为了演示方便,我们以 Oracle JDK 8 为例,找到对应操作系统的安装包(Windows x64,macOS,Linux)。

3.3 安装步骤(Windows 示例)

  1. 双击下载的 .exe 文件,启动安装向导。
  2. 点击“下一步”,可以选择安装路径,建议保持默认(例如 C:\Program Files\Java\jdk1.8.0_xxx),但要记住这个路径,后面配置环境变量会用到。
  3. 安装过程中会弹出一个独立窗口安装 JRE,同样可以保持默认路径,继续下一步。
  4. 完成安装。

注意:安装路径中尽量不要包含中文或空格,否则可能引起一些不必要的麻烦。


4. 配置环境变量 PATH

4.1 为什么要配置 PATH?

安装完 JDK 后,我们需要在命令行(CMD 或终端)中使用 javacjava 命令来编译和运行程序。
如果不配置 PATH,每次使用这些命令时都要输入完整路径,比如 C:\Program Files\Java\jdk1.8.0_xxx\bin\javac,这非常麻烦。

PATH 环境变量的作用是告诉操作系统:当你在命令行输入一个命令(如 javac)时,去哪些目录下寻找对应的可执行程序。
我们把 JDK 的 bin 目录添加到 PATH 中,就可以在任何路径下直接使用 javacjava 了。

4.2 如何配置 PATH(Windows 10/11)

  1. 找到 JDK 的 bin 目录
    例如 C:\Program Files\Java\jdk1.8.0_202\bin
    可以打开资源管理器确认该目录下是否有 javac.exejava.exe

  2. 打开环境变量设置

    • 右键“此电脑” → 属性 → 高级系统设置 → 环境变量。
    • 或者在开始菜单搜索“环境变量”直接进入。
  3. 在系统变量中编辑 PATH

    • 在“系统变量”列表中找到 Path 变量,选中并点击“编辑”。
    • 点击“新建”,把刚才的 bin 目录路径粘贴进去。
    • 点击“确定”保存所有窗口。

注意:Windows 7 用户需要用分号 ; 分隔已有路径,然后把新路径加在后面。

4.3 验证配置是否成功

  1. 打开新的命令行窗口(CMD 或 PowerShell)。
  2. 输入 java -version,如果显示 Java 版本信息,说明 java 命令可用。
  3. 输入 javac -version,如果显示 javac 1.8.0_xxx,说明编译工具也可用。

image.png

如果提示“不是内部或外部命令”,请检查 PATH 路径是否正确,或者重新打开命令行窗口。


5. 第一个 Java 程序:Hello World

环境准备好了,我们来写第一个 Java 程序!按照惯例,输出 “Hello, World!”。

5.1 编写源代码

  1. 在你喜欢的位置创建一个新文件夹,比如 D:\JavaCode
  2. 在该文件夹中新建一个文本文件,重命名为 HelloWorld.java
    注意:文件名必须与代码中的类名完全一致(包括大小写),这里类名为 HelloWorld,所以文件名为 HelloWorld.java
  3. 用记事本或任何文本编辑器(推荐 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 程序!

image.png


6. Java 程序执行流程分析

我们来梳理一下刚才经历了哪些步骤,这有助于理解 Java 的运行机制。

  1. 编写源代码:我们创建了 .java 文件,这是人类可读的代码。
  2. 编译(javac):Java 编译器将 .java 文件编译成 .class 文件(字节码)。字节码是 JVM 能理解的指令集。
  3. 类加载:当我们运行 java HelloWorld 时,JVM 启动,并通过类加载器HelloWorld.class 加载到内存中。
  4. 字节码验证:JVM 对字节码进行安全校验,确保不会危害系统。
  5. 执行引擎
    • 解释执行:逐行将字节码翻译成机器码并执行(启动快,但执行慢)。
    • JIT 编译:热点代码(频繁执行的代码)会被即时编译器编译成本地机器码,提高执行效率。
  6. 运行输出:最终程序输出结果。

整个流程可以概括为:

源代码 (.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 学习的第一步!🚀