发布时间:2026-02-26
浏览次数:0
这么一道面试题目,应当算作是面向Java开发者的基础类面试题目了,要是连这样一道题目都不甚知晓的话,或许真的是需要从头再来重新学习打造一番的了。
简单聊聊
首先,当大家看到这个面试题时,或许会觉着面试官脑子有病症,竟问出这样的问题,然而反过来思考,本人当年曾目睹一名硕士研究生,连电脑上的Java环境变量都不会去配置,好似是从未学过亦或是从未见过那般。
另外,存在一些一到三年的开发情况,有些人或许知晓二者之间概念上的差异,然而却并未深入去了解二者究竟有何区别。为何本地开发环境采用的是JDK?而运行环境所用到的却是JRE。为何众多高手在开发跨平台应用时,能够不在电脑上单独安装JDK就让自己的应用在电脑上直接运行,所以说这当真绝非是个简单的问题。
如何回答?
首先,咱们必须得先弄明白 JDK 和 JRE 在 Java 体系当中的基础定位,这可是理解两者差异的前提条件。从 Java 的运行以及开发逻辑层面来讲,JRE 的全称是 Java ,也就是 Java 运行时环境,它主要是为 Java 程序提供运行的基础环境。简而言之,要是你仅仅是打算于电脑之上运行其他人已然开发好的Java程序,诸如一些运用Java所编写的客户端软件,像早期的客户端那般,以及Web应用的客户端部分,宛若某些用Java来写的浏览器插件这一类的,那么安装JRE那就足够了。它里头涵盖了Java虚拟机(JVM),包含核心类库,像是java.lang包下的各类、java.util包下的集合类等等etera,还有一些支持Java程序运行的必备组件,例如运行时配置文件、资源文件之类,有了它,Java程序才能够跨越操作系统的差异,正常在、Linux或者macOS上得以顺利运行起来——这同样也是Java“一次撰写,处处运行”特性的关键支撑所在。
JDK 乃是 Java Kit 的简称,所说的就是 Java 开发工具包,光借着名字便能够晓得,它是供咱们开发者来使用的。要是你打算自行去编写、编译、调试 Java 程序,那么 JDK 就是绝对不可或缺的工具。它不但含有完整的JRE,毕竟开发出的程序要可以运行,才可调试修改,总不能写完代码后,还得单独安装个JRE来测试吧,而且还多了一堆开发相关的工具,诸如编译器javac,其作用是把咱们所写的.java源文件编译成JVM能够识别的.class字节码文件,比如将Test.java编译成Test.class,调试工具jdb,在程序运行时设置断点,一步步去查看变量值的变化,比如确定“空指针异常”究竟出在代码的哪一行,文档生成工具,能够自动依据规范把代码里的注释生成HTML文档,便于团队协作之时查看接口说明等等。大体简略归纳一下,JRE乃是“用以运行的”,JDK则是“用于开发的”,这属于两者最为关键核心的定位差别之处,并且还是面试作答时的首要能得分的要点。
简要来说,JDK是供开发者用以使用的工具包,而JRE是普通用户运行Java程序时所需的环境。两者的对比情况如下表所呈现的那样。
特性
JRE(Java )
JDK(Java Kit)
全称
Java 运行时环境
Java 开发工具包
核心目标用户
最终用户,只需要运行Java应用程序的人。
Java开发者,需要编写、编译、调试Java程序的人。
核心组件
- JVM(Java虚拟机):执行Java字节码的核心。
有关Java核心类库,像java.lang、java.util等这些,它能对于程序运行,提供需要用到的基础API。
- 其他支持文件(如属性设置等)。
- 包含整个JRE(因此也包含JVM和类库)。
- 开发工具:
java编译器,是javac,它会把.java后缀的源文件编译成.class后缀的字节码文件。
- java:启动JVM运行应用程序。
- jar:打包工具。
- :生成文档的工具。
- jdb:调试器。
- 其他监控工具(如 , )。
功能定位
提供运行时环境,是Java程序运行的“土壤”。
提供全套工具,这些工具用于开发,用于调试,用于监控,它是Java程序诞生的那个“工厂”。
大小
较小,因为它只包含运行环境。
较大,因为它包含了JRE和一系列开发工具。
关系
是JDK的一个子集。
包含JRE,并且比JRE功能更全面。
3 个核心维度,拆解 JDK 与 JRE 的本质区别
紧接着,我们要从“组成成分”这一维度,详细梳理两者具体差异,再从“适用场景”这一维度,详细梳理两者具体区别,然后从“功能侧重”这一维度,详细梳理两者具体不同之处,并且在每个维度都为你整理好“面试答题话术”,以此帮你规避“说不全、说不准”的状况。
组成成分:JDK 是 “JRE + 开发工具” 的集合
不少开发者在面试之际,会遗漏提及“组成细节”,实际上,这恰恰是展现专业性之所在。
JRE的组成,仅涵盖“运行必需组件”,其核心由三部分构成,其一为Java虚拟机,也就是JVM,它作为Java程序运行的“发动机”,承担着把字节码转化成机器指令的职责,其二是Java核心类库,像rt.jar等文件,内里含有Java的基础API,程序运行之际会调用这些类库的方法,其三是运行时支持文件,例如配置文件、资源文件等,用以保障JVM能够正常启动。留意一下,JRE里面没有任何的开发工具,比如说,要是你打算去编译代码,要是你想着调试程序,使用JRE是办不到的。
JDK 的构成是,以 JRE 为基础,额外增添了“开发工具集”,常见情况有这些。
在面试这个场景当中,要是你能够讲出一至两个具体工具所具备的作用,相较于仅仅表白“JDK 存在开发工具”这种情况,那可是要增添很多分数的。
适用场景:谁该用 JRE?谁必须用 JDK?
不少开发者会将“何时用何物”弄混淆,实际上记住“角色决定需求”就行:
JRE 的适用人群:两类人用它就够了 ——
普通用户,比如说你下载了一个由 Java 编写的桌面软件,像某些股票分析工具那样,安装 JRE 之后便能够运行,无需安装复杂的 JDK。
处于服务器运维工作岗位的人员,在服务器之上开展应用部署这一操作时,例如投放项目至特定之处,仅仅只需安装 JRE 便能够使得相关程序得以运行,原因在于该项目本身源自运用 Java语言 编写形成的程序,需要借助 JRE 提供支撑,然而,执意安装 JDK 反而会造成服务器资源白白浪费,毕竟开发类工具处于此是派不上用场的。
JDK 的适用人群是这样的:唯有 Java 开发者是必须要用它的!不管你从事的是开发桌面应用,比如说 Swing 程序,还是开发移动应用,就是早期那种开发得用 JDK 的,又或者是开发 Web 应用,就是、项目,从开始写代码,到进行测代码,再到完成打包上线,这过程中的每一步都绝对离不开 JDK。举例来说,要是你借助IDEA去编写代码,那么IDEA会依照默认设置调用JDK当中的javac来对代码进行编译;若是你运用Maven实施打包操作,Maven同样需要依靠JDK的工具才能够达成打包的任务。
功能侧重:“能运行” 和 “能开发” 的本质差异
两方面的功能界限十分明晰,于面试之际讲明白“着重之处”,便能够展现出你的领会程度。
JRE具备这样的情况:有着仅有一种情况,那就是“确保Java程序运行不出现异常”。它对程序编写是如何操作的并不予以留意,仅仅是承担将已经过做好编译工作的.class文件加载至JVM,接着借助JVM予以操作,在这一进程里面调用主要类库的办法。比如说你通过双击的方式去运行一个.jar文件,JRE会促使JVM启动,加载位于.jar里面的字节码,随后执行程序的逻辑安排,这便是JRE所拥有的全部作用。
JDK具备的功能是,有着“开发与运行”这种双重功能,一方面,因它包含JRE,故而能够运行程序,就像你写完代码后,可直接运用JDK里的java命令去运行.class文件,另一方面,其核心在于“支持开发流程”,具体是用javac编译代码,能够检查语法错误,比方说少写分号就会收到提示,用jdb调试,能够定位逻辑错误,比如循环条件写错致使死循环,还用 生成文档,这对团队协作很便利。简单来讲,要是没有 JRE,那程序是没办法运行起来的,要是没有 JDK,那程序是没办法编写出来的。
面试必知:2 个高频易错点 + 1 个版本差异
不少开发者明明清楚基础方面的差异,然而在面试之际,却由于“细节上出现失误”而导致丢分,这一部分内容能够助力你避开此类陷阱。
易错点 1:“JVM 就是 JRE”?大错特错!
面试之际,常常会有开发者讲出 “JRE 就是 JVM” 这般话语,这属于典型的认知方面的误区。要牢记:JVM 乃是 JRE 的其中一部分,并非全部内容。JRE 包含了 JVM、核心类库以及运行时所需的文件,要是没有核心类库,JVM压根就没办法运行程序 —— 就好比你去编写一个形如 “.out. ()” 的内容,其中类是源自核心类库的,要是没有它,JVM 根本不清楚 “” 究竟是什么,程序就会冒出错误来。面试之际,要是被问及 “JRE 与 JVM 的关系”,务必要矫正此偏离事实之认知区域,清晰阐明 “JVM 是 JRE 的核心构成部分,JRE 是 JVM 得以运行所倚赖的环境”。
易错点 2:在安装 JDK 之后,还需要另外单独去安装 JRE 吗?答案是不需要!
较早时候的JDK,也就是像JDK 8以及在其之前版本那样的,所带有安装包会自身携带一个单独的JRE文件夹这样的情况,致使好多开发者误以为像是 “得安装两次” 这种状况。然而实际上呢,从JDK 5开始,JDK便已然涵盖完整的JRE了,在安装JDK之后,并不需要再去单独另行下载安装JRE——能够去打开JDK的安装目录,寻找到名为 “jre” 的文件夹,其中就是完整的JRE环境。面试之际,提及有关这般细节,便可彰显你对于 JDK 版本持有之了解程度,较之于仅仅表述 “JDK 涵盖 JRE” 而言,更具专业性。
版本差异:JDK 9 + 的 JRE 去哪了?
要是面试之际被问及“JDK 11这里怎么寻觅不到jre文件夹了”,莫要惊慌,这乃是JDK 9往后的版本变动,自JDK 9起始,于JDK安装目录之中不再供给独立的jre文件夹了,倒是借助“jlink”工具去生成自定义的JRE环境,缘由在于不同项目所需的JRE组件存有差异(比如说有的项目并不需要某些核心类库),运用jlink能够依照需求生成轻量化的JRE,进而降低资源占用。若有对JRE的需求,仅需于命令行当中执行,“jlink ---path jmods --add- java.base,java. -- myjre”,此其中,java.base以及java.为所需的模块,如此便能够生成自定义的JRE文件夹。于面试之际,能够讲出这个版本的变化,会致使面试官觉得你关注技术的更新,并非仅仅停留在旧版本的认知范畴之内。
面试答题模板:3 步说清,不慌不忙
接着,为你梳理出一个“万能答题模板”来,于面试之际依照这样的逻辑阐述,确保条理清晰,不会 lost 关键分数:
确定定位:首先用一句话讲明白两者的核心差异,那就是,JRE 是供 Java 程序运行所用的 Java 运行时环境;JDK 是供开发者去编写、编译以及调试 Java 程序使用的 Java 开发工具包,并且 JDK 涵盖完整的 JRE。
按构成部分、所处情境、具备效能这三个并非同一层面的方面来讲,每个方面阐述具有重要意义的一两句关键内容 ——。
补细节:增添一个版本或者实操方面的细节 —— 自 JDK 9 起始,便不再供给独立的 JRE 文件夹,该文件夹能够借助 jlink 工具予以生成;在安装 JDK 之后,并不需要单独去安装 JRE,这是由于 JDK 已然涵盖了 JRE。
依照这个模板展开表述intellij idea swing,可做到既涵盖全面又具备简洁性,如此一来,面试人员能够迅速领会你所掌握的知识要点,并且不会产生你逻辑条理紊乱的感觉。
其实呢,“JDK和JRE的区别”这件事本身并非特别困难,关键之处在于intellij idea swing,得把“定位 - 组成 - 场景 - 版本”的逻辑梳理得清晰明白,要避开那些常见的误区,然后再结合实际操作的细节,如此一来便能答出高分。要是你之前在面试的时候被这个问题难住过,又或者存在其他Java面试方面的难题,像是“JVM的内存模型”以及“和的区别”这种,欢迎在评论区进行分享,咱们一块来拆解,相互补充知识点,下次面试的时候都能够轻松应对!
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码