简单谈谈JVM、JRE和JDK的区别与联系
为了学习数据库,重装了系统,之前前一直在用eclipse,现在准备换成myeclipse,这之前当然需要重新设置环境变量,顺手写下有关jdk、jre与jvm的区别与联系以供交流参考。
首先来说一下jdk
jdk(java development kit) 是 java 语言的软件开发工具包(sdk)。
jdk是整个java的核心,包括了java运行环境(java runtime envirnment),一堆java工具(javac/java/jdb等)和java基础的类库(即java api )。
有以下三种版本:
se(j2se),standard edition,标准版,是我们通常用的一个版本,从jdk 5.0开始,改名为java se。
ee(j2ee),enterprise edition,企业版,使用这种jdk开发j2ee应用程序,从jdk 5.0开始,改名为java ee。
me(j2me),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从jdk 5.0开始,改名为java me。
再来谈谈jre
jre为java runtime environment的简称,java runtime environment(包括java plug-in)是sun的产品,包括两部分:java runtime environment和java plug-in。javaruntimeenvironment(jre)是可以在其上运行、测试和传输应用程序的java平台。它包括java虚拟机(jvm)、java核心类库和支持文件。它不包含开发工具(jdk)--编译器、调试器和其它工具。jre需要辅助软件--java plug-in--以便在浏览器中运行applet。
没有jdk的话,无法编译java程序,但在有jre环境的系统上可以运行程序。所以当你只需要运行java程序或applet,下载并安装jre即可。如果你要自行开发 java软件,请下载jdk。
最后再来了解一下jvm
jvm即java virtual machine(java虚拟机),jvm是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
java语言的一个非常重要的特点就是与平台的无关性。而使用java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入java语言虚拟机后,java语言在不同平台上运行时不需要重新编译。java语言使用java虚拟机屏蔽了与具体平台相关的信息,使得java语言编译程序只需生成在java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是java的能够“一次编译,到处运行”的原因。
这是三者的关系图:
我们开发的实际情况是:我们利用jdk(调用java api)开发了属于我们自己的java程序后,通过jdk中的编译程序(javac)将我们的文本java文件编译成java字节码,在jre上运行这些java字节码,jvm解析这些字节码,映射到cpu指令集或os的系统调用。
jvm(java virtual machine),即java虚拟机
jvm屏蔽了与具体操作系统平台相关的信息,使java程序只需生成在java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。jvm在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似。
jvm是java语言跨平台(这里的“平台”是指不同的操作系统)的基础,要想在不同的操作系统上运行java程序,就需要在不同操作系统上安装对应的jvm。所以,jvm有windows版本、mac版本、linux版本等。
jre(java runtime environment),即java运行环境
jre包括java虚拟机和java程序所需的核心类库。如果要想运行一个开发好的java程序,只需要在计算机中安装jre即可。
总结:jre=jvm+java类库
jdk(java development kit),即java开发工具包
jdk是提供给java开发人员使用的,包含了jre和一些java开发工具,如编译工具(javac.exe)、打包工具(jar.exe)等。所以安装了jdk就不需要再安装jre了。
作为java语言的学习者,我们必须安装jdk,没有jdk,我们是没有办法编译和运行java代码的,这也是几乎所有的java入门教程推荐我们安装jdk的原因。
总结:jdk=jre+java开发工具
如何作出选择
选择的标准是按需选择,如果我们仅仅想运行现成的java程序,安装jre即可;如果我们想开发java程序,必须安装jdk。
推荐阅读
-
简单谈谈JVM、JRE和JDK的区别与联系
-
JDK,JRE,JVM三者之间的联系和区别?
-
JDK、JRE、JVM三者间的联系与区别
-
JDK、JRE、JVM的联系和区别
-
int与integer的区别-Java四大特性-修饰符访问的范围-Java与c++区别-JDK和JRE-StringBuilder和buffer
-
JDK与JRE与JVM的区别
-
JDK,JRE,JVM三者之间的联系和区别?
-
JDK、JRE、JVM三者间的联系与区别
-
int与integer的区别-Java四大特性-修饰符访问的范围-Java与c++区别-JDK和JRE-StringBuilder和buffer
-
JDK、JRE、JVM的联系和区别