Java面试001-请说一下JDK和JRE的区别

createh52个月前 (01-29)技术教程28

前言

面试是类似演讲演说的过程,网上的资料都是文字的,没法让面试者直观的体验到面试过程,本人已经将相关内容制作成音频节目,有兴趣的朋友可以去喜马拉雅搜索《2020年Java面试208题》收听音频版节目。

《2020年Java面试208题》整理了208个Java程序员的面试题,主要是针对三年以内开发经验的JAVA程序员提出的问题。

题目

今天要说的是《2020年Java面试208题》的第1题,面试官提问:请说一下JDK和JRE的区别。

知识点分析

这个问题比较简单,同时,这个问题其实我是存在真实性的疑问,因为我确实从来没听说哪个面试官提过这个问题的。不过不要紧,这可能不是一道真实的面试题,但一定是一个真实的问题,你可以当做一个Java冷知识来听,相信对你理解Java这个产品有所帮助。


下面我就演示回答一下这个问题:

演示面试

好的,面试官,我来说说JDK和JRE的区别,。

JRE:是英文Java Runtime Enviroment的缩写,中文是Java运行时环境,就是Java运行时需要的环境。

JDK:是英文Java Development Kit的缩写,中文是Java开发工具包。


从字面意思就可以理解JRE是JAVA程序在运行时候用的,也就是JAVA代码都编译好生成了class后缀的文件了,在生产环境下运行的时候需要的环境。因此,JRE是提供给最终使用者的。


而JDK是给开发者用的,其实JDK是完整包含JRE,也就是说JRE是JDK的子集,JDK相对于JRE多了一些编译和开发工具,比如编译器javac,监控工具jconsole,内存查看工具jps等,这些都是用于编译和辅助开发的。


对于应该安装JDK还是JRE,需要看具体的应用场景。在开发阶段一定要安装JDK,这个不需要讨论。而在生产环境,如果确信运行时不需要再执行编译的话是可以安装JRE的,因为一般来说生产环境下所有的java文件都被编译成最终的class文件。但也有特殊情况,比如项目中采用jsp文件作为前端页面,因为jsp是需要在运行的时候动态编译成class文件,这时候就必须存在编译环境,也就是需要安装JDK。当然,如果所有的jsp文件也已经完成了编译,那也是可以只安装JRE的,但其实真实项目是不会这么做的,因为jsp文件的编译普遍并不是采用maven编译生成class文件,而是在tomcat容器中运行的时候编译到work文件夹下面,因此不太可能有团队采用手动编译jsp的方式。


另外在项目运行中,有时候是需要监控查看生产环境下的内存、堆栈等,这个时候没有JDK会很不方便。反正我一般在服务器部署的时候也安装JDK,记忆中只曾经在一个客户那里部署JRE而没有安装JDK。


好了,以上就是我的演示面试,不知道是否让你满意。


我对自己答题的点评:

1 我说到JDK包含JRE的时候,用到了子集这个词,这个词儿是数学里面的,在面试的时候尽量用些能装B的词儿。口语化的谈话让你的语言组织更容易流程,但高大上的词儿让你的逼格与众不同。类似的,假如你想要说一个x轴、y轴的坐标系的时候,你可以说笛卡尔坐标系,是否感觉自己都有点儿数学系大二学生的饱满感了?


2 核心问题答完了,能多说点儿就多说点儿,只要不是特别跑题,面试官不会觉得你偏题,而是觉得这家伙真的对这类问题游刃有余,又有实际经验。我在这个题目中就扩展了在开发时候和最终生产环境部署的时候应该安装JDK还是JRE的个人理解。

下期再见

本人技术有限,凭借热情希望给程序员面试提供一点帮助,必有不足之处,希望业内人士积极批评指正,在留言区留言就是对我的最大鼓励。希望批评中肯一些,不要存在人身攻击,更不要波及到家人,善意中肯的批评我都能够虚心接受。 我们下期再见。



相关文章

什么是JAVA?想学习却不知道从哪开始?

可能很多人都不知道JAVA是什么,做什么用的?Java是一门面向对象的编程语言,Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用...

推荐几个硬核 Java 学习网站(学java哪个网站好)

LearnJava 在线这是一个非常不错的学习 Java 的在线网站,纯免费。这是一个个人项目,旨在通过简单有效的在浏览器中进行练习让你快速掌握 Java 编程语言。通过直接从网络浏览器运行实际代码,...

那些年,Java程序员用过的开发工具

子曰:工欲善其事,必先利其器。说的是,工匠想要使他的工作做得好,一定要先让自己手中的工具锋利。对于程序员来说,若想高效地编写出漂亮的代码,第一个需要利的“器”就是编辑(编译)器——一个好用的开发工具。...

JAVA中如何使用正则表达式(java正则表达式教程)

/*** 正则匹配数字和字母* @param str* @return*/private static Matcher matcherNumAndChar(String str) {Pattern p...

JAVA里的英文 每日点点词汇(java里的英文 每日点点词汇是什么)

Random ['raen dm] 随机的Scanner [‘skaen] 接收输入import [im’ p:t] 导入,输入、if [if] 如果else [els] 否则switch [...

软件开发平台之争:NET VS Java,谁是更好的选择?

全文共3370字,预计学习时长9分钟作为软件开发新手,为自己选择未来职业生涯中将使用的平台并不容易。掌握任何一种编程语言都会花费大量的时间和精力,而这些恰恰是你最不想浪费的。选错平台可能会需要改变知识...