大数据必学Java基础(九):JDK,JRE,JVM的区别
source link: https://blog.51cto.com/lansonli/5507483
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
大数据必学Java基础(九):JDK,JRE,JVM的区别
原创JDK,JRE,JVM的区别
一、JDK,JRE,JVM的关系
二、 先说JDK和JRE
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也就是常常听到Java虚拟机。JDK是面向开发者的,JRE是面向使用JAVA程序的用户,上面只是简单的区别
通过上图发现发现有两个JRE文件夹,如果细看里面的内容基本上是一样的,如果是只是Java程序使用者,那么只会有最外层的那个JRE目录,JDK中是JRE自带的,你如果安装了JDK必然里面会有一个JRE.那么问题来了,为什么会有两套JRE呢?
从侧面证明:
利用javac.exe进行编译:
然后我将C:\Program Files\Java\jdk1.8.0_151\lib\tools.jar改个名字,再去编译:
证明:dt.jar和tools.jar是两个java最基本的包,里面包含了从java最重要的lang包到各种高级功能如可视化的swing包,是java必不可少的。而path下面的bin里面都是java的可执行的编译器及其工具,如java,javadoc等,报错的原因就是输入的javac的命令不是去JDK中bin目录去找的javac.exe,而是去JDK中lib目录中的tools.jar中com.sun.tools.javac.Main中执行,因此javac.exe只是一个包装器(Wrapper),存在的目的是为了让开发者免于输入过长的指命。这个时候发现JDK里的工具几乎是用Java所编写,同属于Java应用程序,因此要使用JDK所附的工具来开发Java程序,所以自身需要附一套JRE才能运行。上图中与jdk同级目录下的JRE就是用来运行一般Java程序用的。
两套JRE运行的时候究竟运行哪一个呢,这个时候JDK中java.exe先从自身目录中找,然后父级目录中找,如果都没有就去注册表中找
三、再说JRE和JVM
JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,class文件并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行,类似于C#中的CLR。
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。
JVM+Lib=JRE,如果讲的具体点就是bin目录下的jvm.dll文件, jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位 于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录下的jvm.dll。
- 1赞
- 1收藏
- 评论
- 分享
- 举报
Recommend
-
14
掌握这15个概念,相信可以帮助你了解区块链是什么、它的运作原理以及相关特征等信息。 世界上唯一不变的就是变化的存在。 ...
-
15
java-version.com: What's new in Java 16? 15? Keep up to date! Change the JRE / JDK in Eclipse on Mac OS X and access the sources...
-
8
持续坚持原创输出,点击蓝字关注我吧 作者:小傅哥博客:https://bugstack....
-
7
什么是 JDK?JDK 的英文全称是 Java Development Kit。JDK是用于制作程序和Java应用程序的软件开发环境。Java 开发人员可以在 Windows、macOS、Solaris 和 Linux 上使用,是一个跨平台编程语言。JDK 帮助他们编写和运行 Java 程序。可以在同一台计算机...
-
9
JDK, JRE, JVM | 深入了解 Posted on 2019-03-20 In Java Views: 1 了解 JDK, JRE, JVM 之间的区别,JVM 是如何工作的?什么是
-
6
Difference between JVM, JRE & JDKDifference between JVM, JRE & JDKLoaded: 0.49%00:03Remaining Time -20:23...
-
3
聊一聊关于JDK、JRE 和 JVM 的区别-51CTO.COM 聊一聊关于JDK、JRE 和 JVM 的区别 作者:y, xz 2022-06-27 08:24:34 开发
-
7
程序中常见问题和编译方式一、程序中常见问题【1】最低级的错误:单词拼写错误【2】要求源文件名字和类名必须一模一样:
-
3
变量和常量丽丽的年龄:去年17岁,今年18岁,明年19岁年龄:17--》18---》19 --》值不断变化 年龄---》变量常量: 17 , 18 , 19 ----》 常量中的字面常量一、字面常量
-
10
大数据必学Java基础(十三):基本数据类型的转换 原创 Lansonli 2022-07-2...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK