javajre(javajre和jdk的区别)

IT技术2年前 (2022)发布 投稿用户
0

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等等。

© 版权声明
好牛新坐标 广告
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章