第一次接触Java的新手们,往往会被各种缩写和专业术语搞得晕头转向。作为一个从2008年就开始写Java的老码农,我清楚地记得自己当年安装完JDK后,面对bin目录里那一堆exe文件时的茫然。今天,我们就从最经典的"Hello World"程序入手,帮你彻底理清JDK、JRE和JVM这三者的关系。
为什么Java能实现"一次编写,到处运行"?这背后正是JVM的功劳。但JVM又从哪来?它和JDK、JRE是什么关系?这些概念对于Java开发者来说,就像厨师要了解锅碗瓢盆一样基础。搞明白它们,不仅能帮你解决环境配置中的各种坑,更能深入理解Java的运行机制。
目前Oracle JDK和OpenJDK是最主流的两个选择。对于初学者,我推荐直接使用OpenJDK 11 LTS版本,它完全免费且长期支持。安装过程很简单:
注意:很多教程会教你同时配置CLASSPATH,但在Java 6之后这已经不是必须的了。现代Java项目更推荐使用构建工具管理依赖。
安装完成后,打开命令行输入java -version,看到类似下面的输出就说明安装成功了:
bash复制openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7)
OpenJDK 64-Bit Server VM (build 11.0.12+7, mixed mode)
找个喜欢的文本编辑器(Notepad++、VS Code都行),新建HelloWorld.java文件:
java复制public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
保存后,在文件所在目录打开命令行,依次执行:
bash复制javac HelloWorld.java # 编译
java HelloWorld # 运行
如果看到终端打印出"Hello World!",恭喜你,Java之旅正式开始了!
JDK(Java Development Kit)是Java开发的核心套件,它包含了:
简单说,JDK = 开发工具 + JRE。要做Java开发,必须安装JDK。
JRE(Java Runtime Environment)是运行Java程序的最小环境,包含:
如果只是运行Java程序(比如使用别人开发的Java软件),安装JRE就够了。但自从Java 9引入模块化系统后,Oracle不再提供独立的JRE安装包,而是建议使用jlink工具为应用创建定制化的运行时镜像。
JVM(Java Virtual Machine)是Java跨平台能力的核心,它负责:
不同平台(Windows、Linux、Mac)有各自的JVM实现,但都遵循相同的规范。这就是为什么同一份.class文件能在不同系统上运行。
code复制+-----------------------------------+
| JDK |
| +---------------------------+ |
| | JRE | |
| | +-------------------+ | |
| | | JVM | | |
| | +-------------------+ | |
| +---------------------------+ |
+-----------------------------------+
从包含关系看:
这说明系统找不到Java编译器,通常是:
解决方案:
运行时报错"找不到主类"可能有以下原因:
用高版本JDK编译,低版本JRE运行时会报"Unsupported major.minor version"。解决方法:
除了Oracle/OpenJDK自带的HotSpot VM,还有:
想看看编译后的.class文件长什么样?使用javap工具:
bash复制javap -c HelloWorld.class
这会显示字节码指令,帮助你更深入理解Java如何工作。
从Java 9开始引入的模块化系统改变了传统的JRE结构。现在可以使用jlink创建只包含所需模块的定制化运行时:
bash复制jlink --module-path %JAVA_HOME%\jmods --add-modules java.base --output myruntime
虽然用记事本也能写Java,但好的IDE能极大提升效率:
对于初学者,我强烈推荐IntelliJ IDEA,它的智能提示和错误检查能帮你快速上手。
掌握基础概念后,可以继续深入:
记住,Java生态庞大,不要试图一口吃成胖子。从基础开始,循序渐进最靠谱。