Java 开发入门:环境、工具与 Hello World
这是 Java 入门系列的第一天。这一篇解决三个问题:计算机软硬件的基本常识、Java 凭什么”一次编写,到处运行”,以及如何亲手把第一个 Hello World 从源代码变成屏幕上的一行输出。
本篇目标
- 了解计算机硬件的五大部件与软件分类,建立”程序跑在哪里”的直觉
- 讲透 JDK、JRE、JVM 三者的关系与跨平台原理
- 理解 Path、JAVA_HOME 环境变量背后的原理,而不是照抄配置步骤
- 完整走通”编写 → 编译 → 运行”Hello World 的全流程,并能排查常见错误
先懂一点计算机常识
计算机由硬件和软件组成,没装任何软件的机器称为”裸机”。硬件按冯·诺依曼体系结构分为五大部件:
- 运算器 + 控制器:合称 CPU,是计算机的核心。运算器做算术与逻辑运算,控制器负责取指令、译码并发出控制命令,CPU 内部还有高速寄存器暂存数据。
- 存储器:分内存与外存。内存(RAM)速度快、容量小、断电即失,用于存放正在执行的程序和数据;外存(硬盘、SSD)相反,用于长期保存。程序必须先装入内存才能被 CPU 执行——这解释了为什么”内存大小”直接影响电脑的流畅度。
- 输入设备 / 输出设备:键盘、鼠标、显示器等,统称 I/O 设备。
软件分两类:系统软件(Windows、Linux、macOS、Android)负责管理硬件资源;应用软件(QQ、浏览器)面向具体需求。所谓软件开发,就是借助计算机语言,把人的意图翻译成机器能执行的指令序列。
从机器语言到 Java
计算机语言经历了三个阶段:
- 机器语言:直接用 0 和 1 组成的指令,CPU 能执行,人几乎无法读写。
- 汇编语言:用助记符(如
ADD、MOV)代替二进制串,需要汇编器翻译成机器码,仍然贴近硬件。 - 高级语言:用接近英语的语法写源代码,由编译器或解释器翻译成机器指令。C、C++、Java、Python 都在此列。
Java 由 Sun 公司的 James Gosling 团队在 1995 年正式推出(前身是 1990 年”绿色计划”中的 Oak 语言),2009 年 Sun 被 Oracle 收购后由 Oracle 继续维护。它的设计目标就是简单、面向对象、跨平台。
跨平台的秘密:JVM
“Write once, run anywhere” 是 Java 最著名的口号。它的原理是:Java 源码不直接编译成某个平台的机器码,而是编译成一种中间格式——字节码(.class 文件),再由各平台上的 Java 虚拟机(JVM)把字节码翻译成本机指令执行。
换句话说,跨平台的不是 Java 程序本身,而是 JVM:Windows、Linux、macOS 各自安装自己的 JVM,字节码不变,运行效果一致。JVM 充当了程序与操作系统之间的”翻译官”,把平台差异全部屏蔽掉了。
JDK、JRE、JVM 的关系
三者是层层包含的关系:
- JVM:运行字节码的虚拟机,跨平台的核心。
- JRE = JVM + 核心类库。只想运行别人开发好的 Java 程序,装 JRE 就够。
- JDK = JRE + 开发工具。开发工具包括编译器
javac、打包工具jar、文档工具javadoc等。
为什么 JDK 里要自带一个 JRE?因为开发者写完程序总要运行验证。所以安装了 JDK 就不必单独安装 JRE。顺带一提:从 JDK 9 引入模块化之后,JDK 安装目录里不再有独立的 jre 子目录,运行时被整合进模块系统;需要精简运行镜像时可以用 jlink 自行裁剪。
下载、安装与验证
学习阶段建议安装长期支持版(LTS),如 JDK 17 或 JDK 21,可从 Oracle 官网或 Adoptium 等开源发行版下载。安装时有两条老规矩依然有效:路径不要包含中文和空格;所有开发软件放在统一目录下,便于管理。
装完后打开命令行验证:
java -version |
两条命令都能输出版本号,说明安装与配置成功。
环境变量为什么这样配
很多教程只告诉你”点哪里”,这里讲清楚为什么。
Path 的原理:在命令行输入一个命令(如 javac)时,操作系统先在当前目录查找,找不到就按 Path 里配置的目录列表依次搜索。把 JDK 的 bin 目录加进 Path,本质是把 javac、java 等工具的位置告诉系统,这样在任何目录下都能使用它们——也就不用把源代码文件混进 JDK 的安装目录,避免误删工具或污染 JDK。
JAVA_HOME 的约定:单独建一个 JAVA_HOME 指向 JDK 根目录,再在 Path 里写 %JAVA_HOME%\bin(macOS/Linux 写 $JAVA_HOME/bin)。好处有二:一是 JDK 升级时只需改 JAVA_HOME 一处;二是 Maven、Tomcat 等大量第三方工具默认读取 JAVA_HOME 来定位 JDK。注意 Path 中的条目有先后顺序,系统取第一个匹配项,机器上装了多个 JDK 时,要把想用的版本排在前面。
classpath 不需要配:早期教程常让配置 classpath 指定 .class 文件的搜索路径,从 JDK 5 起类加载器默认就会搜索当前目录,乱配 classpath 反而是新手”找不到或无法加载主类”报错的常见根源。
Hello World 全流程
新建文件 HelloWorld.java。注意文件名必须与 public 类名完全一致;Windows 默认隐藏扩展名,要防止存成 HelloWorld.java.txt:
public class HelloWorld { |
在命令行进入文件所在目录,执行两步:
javac HelloWorld.java # 编译:生成 HelloWorld.class 字节码文件 |
逐行拆解这段代码:
public class HelloWorld:定义一个公开类,类是 Java 程序的基本组织单位。public static void main(String[] args):程序入口。public保证 JVM 能访问,static让 JVM 不用创建对象就能调用,void表示没有返回值,String[] args接收命令行参数。这一行是 JVM 与程序员之间的固定契约,一个单词都不能错。System.out.println(...):调用标准输出,打印一行文本并换行。
新手常见错误几乎集中在几处:把 class、String、System、main 写错大小写(Java 严格区分大小写);中英文标点混用(分号、引号必须是英文符号);大括号不配对;运行时多写了后缀(java HelloWorld.class 是错的)。
注释、关键字与标识符
注释是写给人看的,编译器直接忽略,用来解释代码、辅助调试:
// 单行注释 |
关键字是被 Java 赋予特定含义的单词(如 class、public、static),全部小写,不能用作名字;goto 和 const 是保留字,目前未启用。标识符是给类、方法、变量起名的字符序列,规则是:由字母、数字、$、_ 组成,不能以数字开头,不能使用关键字。
约定俗成的命名规范(语法不强制,但必须遵守,否则别人读不懂你的代码):
- 包名:全部小写,常用域名倒写,如
com.example.demo - 类名:大驼峰,如
HelloWorld、StudentService - 方法与变量:小驼峰,如
getName、studentAge - 常量:全大写加下划线,如
MAX_VALUE
关于开发工具
第一天先用记事本加命令行是有意义的:亲手敲 javac 和 java,才能理解编译与运行是两个独立阶段,出了问题知道去哪一层排查。但日常开发请直接使用 IDE——目前业界主流是 IntelliJ IDEA(社区版免费),它在代码提示、重构、调试上的体验远超当年的 Eclipse。等命令行流程跑通之后,就果断切换到 IDEA。
小结
- 计算机 = 硬件(五大部件)+ 软件;程序必须装入内存才能运行。
- Java 跨平台靠 JVM:源码编译为字节码,各平台的 JVM 负责翻译执行。
- JDK = JRE + 开发工具,JRE = JVM + 核心类库,装 JDK 即可覆盖一切。
- Path 让系统在任何目录找到 javac/java;JAVA_HOME 便于升级和第三方工具引用;classpath 不需要配置。
- Hello World 三步走:写
.java→javac编译出.class→java启动 JVM 执行main。 - 命名遵守驼峰规范,注释写给人看;入门用命令行,之后切换到 IntelliJ IDEA。

