元数据卡
- 前置知识:无(零基础起点)
- 预计时间:20 分钟
- 完成标志:能够独立用
javac编译 Java 文件并用java运行,在终端看到 "Hello World" 输出
村口的木牌歪歪斜斜地钉在一棵老榕树上。"欢迎来到变量村——程序员的第一站",字迹已经开始褪色。我背着背包站在村口,老陈师傅从几步外的木屋探出头来。
"小子,来得正好。"他擦了擦手上的灰,"你面前这台终端,听你的。但是——你得先跟它打个招呼。计算机不会自动搭理任何人。"
我还没开口,他已经把一个空白文件推到我面前。
你的任务: 跟一台冰冷的机器打招呼——挥挥手是没用的,你得用它的语言说话。
① 确认开发环境就位
老陈师傅把终端推过来:"先看看 JDK 在不在。"
javac --version
java --version如何运行: 在终端分别敲这两条命令,按回车
预期输出:
javac 21.0.x java 21.0.x
我照做。终端回了两行版本号。
"看见了吧?javac 是编译器——把你的文字翻译成中间文件。java 是运行器——启动虚拟机执行这些中间文件。"他把两根手指立在桌上,"两个工具,缺一不可。编译一次,可以运行无数次。"
JDK 是什么? Java Development Kit(JDK)是 Java 开发工具包。它里面有编译器(
javac)、运行器(java)和一大堆现成的工具类。装一个 JDK,你的电脑就能编译和运行 Java 程序了。
如果命令没找到(command not found):
# Ubuntu/Debian
sudo apt install openjdk-21-jdk
# macOS (Homebrew)
brew install openjdk@21
# Windows
# 去 https://jdk.java.net/21/ 下载,解压后设置 PATH 环境变量装完再跑一次 javac --version,确认版本号出现。
② 写你的第一行代码
"坐。打开编辑器。"
我随便用 nano 开了一个空文件——对,就是那个黑底白字、看起来像八十年代的编辑器。
// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}如何运行:
- 用任何文本编辑器(nano、vim、VS Code、记事本都行)写入上面的代码
- 保存为
HelloWorld.java(文件名必须和class后面的名字一致,大小写也要一样)- 编译:
javac HelloWorld.java- 运行:
java HelloWorld预期输出:
Hello World!
我敲完这几行,手还悬在键盘上,盯着屏幕看了五秒钟——就这么点?
"对,就这么点。"老陈师傅读出我的表情,"先跑跑看。"
终端上出现了 Hello World! 三个词。
"恭喜你,"他拍了拍桌子,"你已经是个程序员了。"
小贴士: 如果你的终端报错
Error: Could not find or load main class,检查你是不是运行了java HelloWorld而不是java HelloWorld.class。java命令自动找.class文件,不需要写后缀。
③ 这条路的关键思维
今天你做了三件事,以后无论多复杂的程序,这三个步骤永远不会变:
写 → 编 → 跑flowchart LR
A[写 .java 文件] --> B[javac 编译成 .class 字节码]
B --> C[java 启动 JVM 执行]
C --> D[在终端看到输出]写: 用编辑器写一个 HelloWorld.java 文件。
编: javac HelloWorld.java —— 编译器把人类可读的源码翻译成计算机能理解的中间文件(字节码/.class 文件)。
跑: java HelloWorld —— 运行器启动 Java 虚拟机(JVM),加载编译后的字节码并执行。
即兴对比:Python 和 C++ 怎么写
Python 差异
老陈瞥了一眼隔壁桌阿花的屏幕,"她那个 Python 不用过编译这关。"
Python 不需要编译这一步。你写一个
.py文件,直接用python hello.py就能跑。编译器和运行器合二为一了。这让起步更快,但也失去了编译期发现错误的机会——Java 在你运行之前就能抓住很多语法错误,Python 要跑到那句才知道。bash# Python 写法——没有编译步骤 python hello.py
C++ 差异
老陈从柜子深处翻出一本积灰的手册,"C++ 跟你在做的事最像,但结局不一样。"
C++ 也需要编译,但编译方式不一样。Java 编成中间文件/字节码(跨平台,虚拟机执行),C++ 编成机器码(直接给 CPU 跑,不跨平台)。命令是
g++ hello.cpp -o hello然后./hello。Java 你只写一次.java文件就能在任何有 JVM 的机器上跑;C++ 换个操作系统就得重编。bash# C++ 写法——需要编译和链接两步 g++ hello.cpp -o hello ./hello
旅人笔记
"Hello World!" 这个传统比很多人想象的要老。1972 年,Brian Kernighan 在 B 语言的教程里第一次用它——后来 C 语言继承了这个传统,Java 又带了进来。
每个程序员——不管用哪种语言写了几十年代码——都写过 "Hello World"。它是你的出生证明。
验收标准
- [ ] 你能在终端运行
javac --version和java --version,看到版本号 - [ ] 你能写出一个
.java文件,用javac编译不报错 - [ ] 你能用
java运行编译后的程序,并看到终端打印文字 - [ ] 你能口述:
javac做什么,java做什么
→ 下一步
你跑通了你的第一个程序,看到 "Hello World" 在终端亮起来。但那段代码里每一行在说什么?public static void main(String[] args) 为什么非要写成这样?
下一步:ch01-code-explained.md —— 逐行拆解你的第一段 Java 代码。