志在指尖
用双手敲打未来

javajre(javajre和jdk的区别)

javajre

JRE自身也是一个运转在CPU上的程序,用于解释履行Java代码。
一般像是施行的工作,会在客户现场装置JRE,由于这是运转Java程序的最低要求。javajre
JRE目录结构lib、bin
bin:有java.exe但没有javac.exe。也便是无法编译Java程序,但可以运转Java程序,可以把这个bin目录了解成JVM。lib:Java根底&核心类库,包含JVM运转时需要的类库和rt.jar。也包含用于安全办理的文件,这些文件包括安全策略(securitypolicy)和安全属性(securityproperties)等。

javajre和jdk的区别

1.定义
JRE(JavaRuntimeEnviroment)是Java的运转环境。面向Java程序的运用者,而不是开发者。假如你仅下载并装置了JRE,那么你的体系只能运转Java程序。JRE是运转Java程序所必须环境的集合,包括JVM规范完成及Java中心类库。它包括Java虚拟机、Java渠道中心类和支撑文件。它不包括开发东西(编译器、调试器等)。
JDK(JavaDevelopmentKit)又称J2SDK(Java2SoftwareDevelopmentKit),是Java开发东西包,它供给了Java的开发环境(供给了编译器javac等东西,用于将java文件编译为class文件)和运转环境(供给了JVM和Runtime辅佐包,用于解析class文件使其得到运转)。假如你下载并装置了JDK,那么你不仅能够开发Java程序,也一起拥有了运转Java程序的渠道。JDK是整个Java的中心,包括了Java运转环境(JRE),一堆Java东西tools.jar和Java规范类库(rt.jar)。java
2.差异
JRE首要包括:java类库的class文件(都在lib目录下打包成了jar)和虚拟机(jvm.dll);JDK首要包括:java类库的class文件(都在lib目录下打包成了jar)并自带一个JRE。那么为什么JDK要自带一个JRE呢?并且jdk/jre/bin下的client和server两个文件夹下都包括jvm.dll(阐明JDK自带的JRE有两个虚拟机)。
记住在环境变量path中设置jdk/bin路径麽?老师会告知咱们不设置的话javac和java是用不了的。确实jdk/bin目录下包括了全部的指令。可是有没有人想过咱们用的java指令并不是jdk/bin目录下的而是jre/bin目录下的呢?不信能够做一个试验,咱们能够把jdk/bin目录下的java.exe剪切到别的地方再运转java程序,发现了什么?全部OK!(JRE中没有javac指令,原因很简单,它不是开发环境)那么有人会问了?我分明没有设置jre/bin目录到环境变量中啊?试想一下假如java为了供给给大多数人运用,他们是不需要jdk做开发的,只需要jre能让java程序跑起来就能够了,那么每个客户还需要手动去设置环境变量多麻烦啊?所以装置jre的时分装置程序主动帮你把jre的java.exe增加到了体系变量中,验证的办法很简单,去Windows/system32下面去看看吧,发现了什么?有一个java.exe。
3.难点
假如装置了JDK,你的电脑就有两套JRE(JRE自身和JDK中的JRE),前面这套比后面那套少了Server端的Java虚拟机。
(1)为什么Sun要让JDK装置两套相同的JRE?这是由于JDK里边有许多用Java所编写的开发东西(如javac.exe、jar.exe等),并且都放置在/lib/tools.jar里。假如咱们将tools.jar改名为tools1.jar,然后运转javac.exe,显现如下结果:Exceptioninthread”main”java.lang.NoClassDefFoundError:com/sun/tools/javac/Main。这个意思是说,你输入javac.exe与输入java-cpc:/jdk/lib/tools.jarcom.sun.tools.javac.Main是相同的,会得到相同的结果。从这里咱们能够证明javac.exe仅仅一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。并且能够发现/lib目录下的程序都很小,不大于29K,从这里咱们能够得出一个定论。便是JDK里的东西几乎是用Java所编写,所以也是Java应用程序,因此要运用JDK所附的东西来开发Java程序,也必需要自行附一套JRE才行,所以坐落JDK目录下的那套JRE便是用来运转一般Java程序的。
(2)假如一台电脑装置两套以上的JRE,谁来决定呢?这个重大任务就落在java.exe身上。java.exe的作业便是找到适宜的JRE来运转Java程序。java.exe按照以下的次序来查找JRE:1)自己的目录下有没有JRE;2)父目录有没有JRE;3)查询注册表:[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JavaRuntimeEnvironment]。所以java.exe的运转结果与你的电脑里边哪个JRE被执行有很大的关系。
(3)JDK–>JRE–>Bin目录下有两个文件夹:server与client,这是真实的jvm.dll地点。jvm.dll无法单独作业,当jvm.dll发动后,会运用explicit的办法(便是运用Win32API之中的LoadLibrary()与GetProcAddress()来载入辅佐用的动态链接库),而这些辅佐用的动态链接库(.dll)都必须坐落jvm.dll地点目录的父目录之中。因此想运用哪个JVM,只需要设置PATH,指向JRE地点目录下的jvm.dll。
4.最干流的JDK是Sun公司发布的JDK,除了Sun之外,还有许多公司和安排都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU安排开发的JDK等等。

未经允许不得转载:IT技术网站 » javajre(javajre和jdk的区别)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载