JDK还是JRE:新手该如何选择?一次彻底搞懂
如果你刚刚开始学习Java,迟早会遇到这样一个问题:“我到底该下载什么?JDK、JRE,还是只需要一个JVM?”这个问题非常常见,在Stack Overflow上已有数千次浏览和数十个回答。这并非偶然——这些缩写之间的混淆足以让你的第一个项目在起步阶段就夭折。
想象一下,Java就像一间厨房。JRE是一个已经开业的餐厅,你可以直接进去吃饭。而JDK则是配备了炉灶、刀具和菜谱的厨房,你可以在这里烹饪任何东西。感受到区别了吗?让我们逐一梳理,让你再也不用为下载什么而犹豫不决。
核心要点:JVM、JRE、JDK
在深入细节之前,我们先了解基本层次结构。许多新手认为这是三种不同的产品。实际上,它们就像套娃一样,一个组件嵌套在另一个之中。
- JVM(Java虚拟机)——核心。执行字节码的虚拟机。它本身毫无用处,就像没有汽车的发动机。
- JRE(Java运行时环境)——JVM + 标准库集合(例如
java.lang、java.util)。这是运行已编译Java程序的环境。 - JDK(Java开发工具包)——JRE + 开发工具:编译器
javac、调试器jdb、文档生成工具javadoc等。
一个需要记住的简单公式:
JDK = JRE + 开发工具JRE = JVM + 库现在,当你在Oracle网站上看到“Download JDK”时,你就知道它包含了运行和编写代码所需的一切。
既然有了JDK,为什么还需要JRE?
问得好。如果JDK已经包含了JRE,为什么还要单独下载“运行时环境”呢?原因在于大小和目标用户。
想象一下,你用Java编写了一个超级游戏,想让朋友玩一下。你的朋友不是程序员。他不需要编译任何东西。他只需要一个能运行.jar文件的“盒子”。给他下载一个近300MB的JDK毫无意义。JRE占用空间更小(约100-150MB),并且不包含会让普通用户困惑的多余工具。
正因如此,在面向普通用户的Java下载页面上,提供的是JRE。而面向开发者的则是JDK。在最新版本(Java 11+)中,Oracle更进一步,实际上将两者合并,使JDK成为一个“自包含”模块。但概念上的区别依然存在。
如何检查你安装了哪个?
最简单的方法是打开终端(命令行)并输入几条命令。当出现问题,这能为你节省数小时的搜索时间。
步骤1. 检查Java版本(JRE):
java -version如果安装了JRE,你会看到类似这样的信息:
java version "17.0.2" 2022-01-18 LTSJava(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)步骤2. 检查编译器(JDK):
javac -version如果你看到:
javac 17.0.2恭喜!你已经安装了JDK。如果命令未找到——说明你只有JRE,或者Java没有配置到环境变量(PATH)中。
实际案例:为什么没有JDK你无法编写代码
让我们设想一个场景。你只安装了JRE(例如,为了玩Minecraft)。你打开记事本,写下你的第一个“Hello, World!”程序:
public class HelloWorld { public static void main(String[] args) { System.out.println("Привет, мир!"); }}将文件保存为HelloWorld.java。