JRE、JDK和JVM之间的关系
Java学了有两年了,要让详细说说JRE、JDK、JVM,确实不能脱口而出。下面在别人博客的基础上,总结一下。
JVM(Java Virtual Machine 即Java虚拟机)
它是整个Java实现跨平台的核心部分。所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
也可以理解为是一个虚拟出来的计算机,具备着计算机的基本运算方式,它主要负责将Java程序生成的字节码文件解释成具体系统平台上的机器指令。让具体的平台如Windows/Linux运行这些Java程序。
JRE(Java Runtime Environment 即Java运行环境)
光有JVM还不能执行class文件,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里可以看到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是JVM,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。所以,在写完Java程序编译成.class之后,可以把.class文件和jre一起打包发给别人,这样别人就可以运行你的程序了。如果想要运行一个开发好的Java程序,只需要给计算机安装JRE即可。
JDK(Java Development Kit 即Java开发工具包)
在jdk的安装目录下有6个文件夹、一个src类库源码压缩包和其他几个声明文件。其中,真正在运行java文件时起到作用的是一下四个文件夹:bin、include、lib、jre。JDK包含JRE,而JRE包含JVM。bin:最主要的是javac(编译器);include:java和JVM交互用的头文件;lib:类库;jre:java运行环境;
总的来说,JDK用于Java程序的开发,而JRE是运行class文件的运行环境不具备编译Java文件的功能。JDK提供Java开发人员使用,其中主要包含了Java的开发工具,其次也包括JRE。所以安装了JDK也就有了JRE。
三者的关系
JVM:将字节码文件转换成具体系统平台的机器指令。
JRE:JVM+Java语言的核心类库。
JDK:JRE+Java开发工具包。
在实际开发的过程中:我们利用JDK(调用Java API)开发了属于我们自己的Java程序后,通过JDK中的编译程序(javac)将我们的java文件编译为java字节码文件(.class文件),然后在JRE上运行这些Java字节码文件,最后JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
最新文章
- WordPress基础:小工具的使用
- pojBuy Tickets2828线段树或者树状数组(队列中倒序插队)
- 提供给Android和iOS开发人员的UWP移植向导
- java多线程编程--基础篇
- iOS-开发技巧-页面布局
- CI加载流程小结
- HDU 5572 An Easy Physics Problem (计算几何+对称点模板)
- 使用iframe框架后的页面跳转时目标页面变为iframe的子页面的问题
- Chessboard POJ - 2446(最大流 || 匹配)
- window.open() 打开的子页面 往主页面传参问题
- SpringMVC接受JSON参数详解及常见错误总结我改
- 如何使用js判断当前页面是pc还是移动端打开的
- C语言:结构体,共用体
- 在java代码中执行js脚本,实现计算出字符串“(1+2)*(1+3)”的结果
- 195 Tenth Line
- Linux网络通信
- posix进程间通信
- jQuery EasyUI教程之datagrid应用-2
- GLSL 在OpenGL中向shader传递信息【转】
- 编辑器——sublime