Java 的世界观
和编译流程
把"源码→机器码"的旧思维放下,建立"源码→字节码→JVM"的新心智模型。理解 Java 为什么能跨平台。
1
编译流程对比
点 "▶ 跑一遍" 按钮,看两种语言的代码怎么变成可执行程序。
C / C++
传统流程
hello.cpp源码
→
g++编译
→
hello.exe机器码
→
OS直接执行
⚠️ Windows 的 .exe 不能在 Mac/Linux 跑,跨平台要重新编译。
JAVA
两阶段流程
Hello.java源码
→
javac编译
→
.class字节码
→
JVM翻译
→
OS执行
✅ 同一份 .class,任何装了 JVM 的机器都能跑。
2
JDK / JRE / JVM 三层关系
你要装的就是 JDK。下面是嵌套关系,从外到内:
JDK
Java Development Kit · 开发工具包。包含 javac(编译)、java(运行)、javadoc(文档)等工具。
JRE
Java Runtime Environment · 运行时环境。普通用户装这个就能跑 .class。
JVM
Java Virtual Machine · 真正执行字节码的"翻译官",是 Java 跨平台的核心。
核心类库 (rt.jar)
预装 API · java.lang、java.util、java.io 等几千个现成类,开箱即用。
3
第一个 Java 程序
新建文件 HelloWorld.java(文件名必须和 public class 名一致):
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
编译 + 运行:
$ javac HelloWorld.java # 编译,生成 HelloWorld.class
$ java HelloWorld # 运行(注意:不要加 .class 后缀!)
4
点一下,看完整流程跑一遍
模拟终端操作。点 "▶ 跑一遍",看 Java 程序从源码到输出的完整过程。
~ zsh · ~/java-lesson-01
$ cat HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
$ javac HelloWorld.java
→ javac 把 .java 编译成字节码,生成:
HelloWorld.class (平台无关的字节码)
$ java HelloWorld
→ JVM 启动,加载字节码,开始执行:
Hello, World!
✓ 同一份 HelloWorld.class 可以在 Windows / Mac / Linux 上都跑
5
和 C/C++ 的 5 个关键差异
这些是你写 Java 第一天最容易踩坑的地方:
| 差异点 | C / C++ | Java | |
|---|---|---|---|
| 文件名 | hello.cpp | → | 必须和 public class 名一致 |
| 入口函数 | int main() | → | public static void main(String[] args) |
| 字符串 | char[] / char* | → | String 对象,不可变 |
| 头/模块 | #include <stdio.h> | → | import java.util.*;(按需引入) |
| 内存管理 | 手动 malloc / free | → | 自动 GC(垃圾回收) |
你的作业(20 分钟内搞定)
- 装好 JDK,把
java -version和javac -version的输出贴给我 - 写一个
Intro.java,打印 3 行:你的名字、专业、目标工作方向 - 故意把文件名改成
Test.java(跟类名不一致),看报什么错,把报错贴给我