JDK 与 JRE 之间的区别是什么?

“二哥,之前的文章里提到 JDK 与 JRE,说实在的,这两个概念把我搞得晕乎乎的,你能再给我普及一下吗?”三妹咪了一口麦香可可奶茶后对我说。

“三妹,不要担心,二哥这篇文章一定会让你把它们搞得一清二楚。确实有不少初学的小伙伴对这两个概念很困惑,我当年也困惑了很久。”说完最后这句话,我脸上忍不住泛起了一阵羞涩的红晕。

01、JDK

JDK 是 Java Development Kit 的首字母缩写,是提供给 Java 程序员的开发工具包,换句话说,没有 JDK,Java 程序员就无法使用 Java 语言编写 Java 程序。也就是说,JDK 是用于开发 Java 程序的最小环境。

想要成为一名 Java 程序员,首先就需要在电脑上安装 JDK。当然了,新版的 Intellij IDEA(公认最好用的集成开发环境)已经支持直接下载 JDK 了。

JDK 和 JRE 有什么区别 - 图1

并且支持下载不同版本的 JDK,除了 Oracle 的 OpenJDK,还有社区维护版 AdoptOpenJDK,里面包含了目前使用范围最广的 HotSpot 虚拟机。

JDK 和 JRE 有什么区别 - 图2

如果下载比较慢的话,可以直接在 AdoptOpenJDK 官网上下载。

JDK 和 JRE 有什么区别 - 图3

如果还是比较慢的话,通过 Oracle 官网下载吧!

https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

JDK 安装成功后,就可以编写 Java 代码了,小伙伴们可以参照上一篇文章《Hello World》。

JDK 包含了 JRE,同时还包含了编译 Java 源码的编译器 javac,以及其他的一些重要工具:

  • keytool:用于操作 keystore 密钥;
  • javap:class 类文件的最基础的反编译器;
  • jstack:用于打印 Java 线程栈踪迹的工具;
  • jconsole:用于监视 Java 程序的工具;
  • jhat:用于 Java 堆分析的工具
  • jar:用于打包 Java 程序的工具;
  • javadoc:用于生成 Java 文档的工具;

02、JRE

JRE 是 Java Runtime Environment 的首字母缩写,是提供给 Java 程序运行的最小环境,换句话说,没有 JRE,Java 程序就无法运行。

Java 程序运行的正式环境一般会选择 Linux 服务器,因为更安全、更高效、更稳定。我们只需要在 Linux 服务器上安装 JRE 就可以运行 Java 程序,而不必安装 JDK,因为我们不需要在服务器上编译和调试 Java 源代码。

刚好我有一台闲置的阿里云服务器,这里就给小伙伴们演示一下 JRE 的安装过程。

第一步:使用以下命令列出服务器上可以安装的 Java 环境:

yum list java*

可以看到有这么一些(只列出 Java 11 的部分——最近一个 LTS 版本):

JDK 和 JRE 有什么区别 - 图4

其中 JRE 为 java-11-openjdk.x86_64,JDK 为 java-11-openjdk-devel.x86_64。

第二步,使用以下命令安装 JRE:

yum install java-11-openjdk.x86_64

第三步,使用以下命令测试是否安装成功:

java -version

如果出现以下结果,则表明安装成功:

JDK 和 JRE 有什么区别 - 图5

由于 JRE 中不包含 javac,所以 javac -version 的结果如下所示:

JDK 和 JRE 有什么区别 - 图6

那既然服务器上的 JRE 环境已经 OK 了,那我们就把之前的“Hello World”程序打成 jar 上传过去,让它跑起来。

第一步,Maven clean(对项目清理):

JDK 和 JRE 有什么区别 - 图7

第二步,Maven package(对项目打包):

JDK 和 JRE 有什么区别 - 图8

可以在 Run 面板中看到以下信息:

JDK 和 JRE 有什么区别 - 图9

说明项目打包成功了。

第三步,使用 FileZilla 工具将 jar 包上传到服务器指定目录。

JDK 和 JRE 有什么区别 - 图10

第四步,使用 iTerm2 工具连接服务器。

JDK 和 JRE 有什么区别 - 图11

第五步,执行以下命令:

java -cp TechSister-1.0-SNAPSHOT.jar com.itwanger.five.HelloWorld

可以看到以下结果:

JDK 和 JRE 有什么区别 - 图12

“搞定了,三妹,今天我们就学到这吧。”转动了一下僵硬的脖子后,我对三妹说,“开发环境需要安装 JDK,因为既需要编写源代码,还需要打包和测试;生产环境只需要安装 JRE,因为只需要运行编译打包好的 jar 包即可。”

“好的,二哥,能把你的服务器账号密码给我一下吗,我想上去测试一把。”三妹似乎对未来充满了希望,这正是我想看到的。

“没问题,随便倒腾。”