前些日子有朋友面试时被问到如题所示的问题,由于他之前没有准备到这些最最基础的知识,没有考虑过这个问题,所以被问到时竟一脸萌币,回答的不是很好。这道题主要考的是对 Java 基础知识的了解,现在我们一起来分析下。
01 JDK和JRE是什么?
在回答这个问题之前我们先来看看什么是JDK什么是JRE?以及JDK和JRE的关系。
我们看一下来自百度百科的解释:
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。--百度百科 JRE是Java Runtime Environment缩写,指Java运行环境,是Sun的产品。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。--百度百科
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》:
我们可以把Java程序设计语言、Java虚拟机、Java API 类库这三部分统称为 JDK(Java Development Kit),JDK 是用于支持 Java 程序开发的最小环境...另外,可以把 Java API 类库中的 Java SE API 子集和 Java 虚拟机这两部分统称为 JRE(Java Runtime Environment),JRE 是支持 Java 程序运行的标准环境。-《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》
书中同样提到了Java 技术体系所包含的内容及 JDK 和 JRE 所涵盖范围:
02 二者的关系
根据如上所说,我们可以总结出如下图所示的 JDK 和 JRE 的关系图:
也就是说JDK包含了JRE,这一点我们可以证实,在安装JDK的目录下找到JRE的文件夹:
JDK(Java Development Kit)是我们学习 Java 首先要安装的软件,值得注意的是 JDK 安装完成之后,安装向导会询问你是否安装 JRE(Java Runtime Environment),还要不要安装呢?知道 JDK 和 JRE 是什么关系后回答这个问题就不难了吧。也就是说,当你安装 JDK 完成后已经默认安装了 JRE ,因为安装完 JDK 肯定是要开发的吧,开发就要运行 Java 程序,所以 JDK 包含了 Java 的运行环境 JRE。如果你只是单纯的要运行 Java 程序而不进行开发、调试等,那么就只需要安装 JRE 就行了。
所以上文提到的问题,对于开发人员来说安装完JDK后就不需要再安装JRE了。
03 服务器上是否只安装JRE就可以了?
另外一个问题,既然如此,那么在服务器上是否只安装JRE就可以了?
理论上是可以的,但是有前提条件。
(1)服务器上只安装JRE的前提
发布到服务器上时所有文件都是编译好的文件,包括JSP文件
后期不在服务器上直接修改(因为导致修改后的文件未重新编译)
如果部署的项目都是编译后重新部署,不在服务器上直接修改的话是可以只安装 JRE 的。
注意:如果存在未编译的 Java 源文件,或者在服务器上修改源文件,服务器就需要安装 JDK。
(2)在服务器上安装JDK的好处
- 可以编译java文件,方便后期维护
- 保证JSP文件修改后稳定运行
综合考虑,为避免以后这样那样的麻烦事发生,服务器上还是安装JDK吧!毕竟项目后期维护才是主要的事情。
有了以上的分析,相信面试官再问你这样的问题你该知道怎么回答了吧。