JRE与JVM、JDK的区别
- 格式:pdf
- 大小:206.54 KB
- 文档页数:6
JRE与JVM、JDK的区别一、详细介绍1、JVM--javavirtualmachineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
JVM是Java平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行时操作不同的内存区域。JVM通过抽象操作系统和CPU结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方法、主机硬件、主机操作系统无关。但是在一些小的方面,JVM的实现也是互不相同的,比如垃圾回收算法,线程调度算法(可能不同OS有不同的实现)。
JVM的主要工作是解释自己的指令集(即字节码)到CPU的指令集或OS的系统调用,保护用户免被恶意程序骚扰。JVM对上层的Java源文件是不关心的,它关注的只是由源文件生成的类文件(classfile)。类文件的组成包括JVM指令集,符号表以及一些补助信息。
2、JRE--javaruntimeenvironmentJRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。(jre里有运行.class的java.exe)
JRE是Sun公司发布的一个更大的系统,它里面就有一个JVM。JRE就与具体的CPU结构和操作系统有关,我们从Sun下载JRE的时候就看到了不同的各种版本。同JVM一起组成JRE的还有一些API(如awt,swing等)。JRE是运行Java程序必不可少的。
JRE(JavaRuntimeEnvironment),是运行Java程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。
JRE里面有一个JVM,JRE与具体的CPU结构和操作系统有关,我们从Sun下载JRE的时候就看到了不同的各种版本,,同JVM一起组成JRE的还有一些API(如awt,swing等),JRE是运行Java程序必不可少的.
3、JDK--javadevelopmentkitJDK是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。
bin:最主要的是编译器(javac.exe)include:java和JVM交互用的头文件lib:类库jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。
eclipse、idea等其他IDE有自己的编译器而不是用JDKbin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了。
二、三者联系Java喊出的带有标志性的口号“WriteOnce,RunAnywhere(一次编写,到处运行)”,正是建立在JRE的基础之上。何以实现?就是在Java应用程序和操作系统之间增加了一虚拟层——JRE。
程序源代码不是直接编译、链接成机器代码,而是先转化到字节码(bytecode)这种特殊的中间形式,字节码再转换成机器码或系统调用。前者是传统的编译方法,生成的机器代码就不可避免地跟特殊的操作系统和特殊的机器结构相关。
而Java程序的字节码文件可以放到任意装有JRE的计算机运行,再由不同JRE的将它们转化成相应的机器代码,这就实现了Java程序的可移植性。这样程序员也不用去关心程序运行的具体环境,而可以专心编写软件。这种分层抽象、隐藏细节的思想在计算机科学中处处可见,比如机器组织结构的设计、网络协议的实现等。Pascal语言的发明者NiklausWirth,就富有预见性地指出应该有这样一种可移植的语言,其生成的中间代码可以在一台假想的机器(ahypotheticalmachine)上运行。
而Java虚拟机(Javavirtualmachine或JVM)就是这样的一台机器,它模拟实际处理器的结构,解释字节码。怎么一会说是JRE,一会儿又成了JVM,两者是否同物不同名?回答是否定的。
JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。
要运行Applet,在客户端必须安装有JRE,即“运行时”,容易一点理解,就象所谓的“插件”,要开发JAVA应用程序\Web应用,就必须在服务器端安装相应的JVM+JDK了(开发应用Javaweb应用时,客户端不需要安装任何的JVM)
如果你使用JAVA开发应用,就需要安装JRE+JDK,就是J2SE.如果在客户端运行Applet,客户端浏览器必须嵌有JAVAJVM,如果没有,就需要安装,即:在客户端创建JRE(运行时,包含JVM),而客户端是不需要做开发的,所以,JDK就没有必要安装了。
不同版本的Applet在不同的JVM下可能无法正常运行,而MicrosoftJVM只是SunJVM的“低版本”,微软在windowsxp/2003中干脆将JVM去掉了.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JAVA字节码到底是怎么一回事,是什么时候生成的,起什么作用,和JVM的关系如何?
字节码是在编译的时候生成的。它是与系统无关的。任何平台下只要有JVM就能运行字节码。
可以认为JVM将java程序翻译成了另一段文字。而不是想其他的语言一样直接编译成了机器码。
机器码可以直接运行,而字节码需要JVM的支持。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~jre;jdk;jvm的区别?jdk是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境JREJRE是JAVA程序运行时需要的运行环境,就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。起内部都包含JAVA虚拟机JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请详细说明JDKJREJVM之间的关系
JDK是JAVA的核心,包括JRE(JAVA虚拟环境)、编译器等,JDK的主流产品是由SUN公司开发的,JDK本身是用JAVA编写的,安装包的SRC.ZIP就是JDK的源码
JVM(JAVA虚拟机),是可以运行JAVA代码的假想计算机,主要任务是把JAVA字节码编译成特定计算机的机器指令,是JAVA实现“一次运行,处处运行”的关键
JRE是JAVA运行环境,包括JVM、JAVA平台核心类和支持文件,如果只是运行JAVA程序的话,可以下载JRE就可以了,如果要开发的话,就要下JDK了。
JAVA运行顺序,先编写JAVA程序块,然后通过JDK的编译器把JAVA程序编译成字节码生成class文件,然后通过JVM运行,主要指令有javaca.java,javaa
MFC,微软基础类(MicrosoftFoundationClasses),提供一组通用的可重用的类库供开发人员使用,用于在C++环境下编写应用程序的一个框架和引擎,是一种ApplicationFramework,一般与VC++绑定的作为ApplicationFramework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32程序设计。但是由于简单性,好多人认为VC++开发必须用MFC,其实这是不对的
VC++是个集成开发环境,不需要再下载别的软件~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
编译器JVMJDKJREJSE是什么关系?都有什么用,都怎么样工作的?
面向对象和面向过程有什么区别?对象又指什么?Java里的类是否可以看作C语言的头文件?方法看作函数?“不推荐使用Netbeans,现在公司里都用Eclipse”都是把程序做出来这个还有区别么?不同的开发工具开发出来的程序还有不同么???我安装了NetBeansIDE是否还需要另外安装JVMJDKJREJSE?安装JDK似乎需要修改环境变量。这是为什么?在JDK里面是不是包含了JVMJREJSE?类库和库又有什么区别么JVMJDKJREJSE的概念我知道的,我想知道他们间有什么联系,工作的这个过程是怎样的今天才学问题比较多~
java是面向对象编程,一切皆对象。这个观念要以后慢慢才能了解,无论怎么样讲都是初学者理解不了的。所以还需要多多练习。
C语言是面向过程编程的。所以没有“类”的概念,而java的类却更符合人类的思维方式,C语言更符合机器的思维方式。
还有就是,千万不要把C语言的一些概念和java混淆,这是两种不同类型的语言,java是纯的面向对像的编程语言,而C是面向过程的。以后的学习中你会发现java比C更有优势。再重申一下,最好不要把C的概念和java做对比。你把java当作一门新的语言来学。唯一可以借鉴C的就是语法和编程的一些基本概念如数据类型,设计模式之类的。
jvm是java虚拟机,将java的class字节码文件翻译成二进制可执行程序。jdk是java的开发包javasdk,java的开发工具,包含SUN公司提供的javaAPI,将java源码编译为class字节码文件,通常jdk中就包含了jre。
jre是java运行时,用于执行java程序。jse是java标准开发,jse就是java开发的一种,标准开发,例如开发桌面程序。