简述jdk和jre的区别,jDK和JRE的区别是什么?
jdk和jre的区别
1.定义
JRE(Java运行时环境)是Java的运行环境。针对Java程序的用户,而不是开发者。如果你只下载安装JRE,那么你的系统只能运行Java程序。JRE是运行Java程序的必要环境的集合,包括JVM标准实现和Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等。).
JDK(java Development Kit),又称J2SSDK (java 2软件开发工具包),是一个Java开发工具包,提供Java开发环境(提供编译器javac等工具用于将Java文件编译成类文件)和运行环境(提供JVM和运行时辅助包用于解析类文件运行)。如果下载安装JDK,不仅可以开发Java程序,还可以有一个运行Java程序的平台。JDK是整个Java的核心,包括Java运行时环境(JRE),一堆Java工具tools.jar和Java标准类库(rt.jar)。
推荐:《java学习》
2.差异
JRE主要包括:java类库的类文件(全部打包成jar放在lib目录下)和虚拟机(JVM . dll);JDK主要包括:java类库的类文件(都打包成jar在lib目录下)并自带一个JRE。那么,为什么JDK要带自己的JRE呢?此外,jdk/jre/bin下的客户机和服务器文件夹都包含jvm.dll(表明jdk中包含的jre有两个虚拟机)。
记得在环境变量path中设置jdk/bin路径吗?老师会告诉你javac和java不设置是不能用的。确实,jdk/bin目录包含了所有的命令。但是有没有人想过,我们用的java命令不是在jdk/bin目录而是在jre/bin目录?不信你可以做个实验。你可以把jdk /bin目录下的java.exe剪切到另一个地方,然后运行java程序。你发现了什么?一切都好!(JRE中没有javac命令,原因很简单,它不是一个开发环境。)所以有人会问?我显然没有在环境变量中设置jre/bin目录。试想一下,如果大多数人都有java,他们不需要jdk进行开发,但是只有jre可以让java程序运行起来。每个客户都要手动设置环境变量有多麻烦?因此,在安装jre时,安装程序会自动将jre的java.exe添加到系统变量中。验证方法很简单。去Windows/system32下看看。你发现了什么?有一个java.exe。
3.困难
如果安装了JDK,你的电脑会有两套JRE(JRE本身和JDK的JRE)。前一组在服务器端的Java虚拟机比后一组少。
(1)为什么Sun希望安装两套相同的JRE设备?这是因为有许多用Java编写的开发工具(如javac.exe、jar.exe等。)在JDK,并且都放在/lib/tools.jar中,如果我们将tools.jar重命名为tools1.jar,然后运行javac.exe,会显示以下结果:线程 main 中的异常Java . lang . noclassdefounderror:com/sun/tools/javac/main。也就是说,如果输入javac.exe,和输入Java-CP C:/JDK/lib/tools . jarcom . sun . tools . javac . main是一样的,会得到一样的结果。从这里可以证明,javac.exe只是一个包装器,制作它的目的是为了让开发者不用输入太长的指令。而且可以发现/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 _本地_机器/软件/javasoft/Java运行时环境]。所以java.exe的运行结果跟你电脑里执行的是哪个JRE有很大关系。
(3)在JDK-JRE-bin目录下有两个文件夹:server和client,这是真正的jvm.dll所在的地方。Jvm.dll不能独自工作。jvm.dll启动时会使用显式方法(即Win32 API中的LoadLibrary()和GetProcAddress()来加载辅助动态链接库),而这些辅助动态链接库(。dll)必须位于jvm.dll目录的父目录中。因此,如果要使用任何JVM,只需要设置路径指向JRE所在目录下的jvm.dll即可。
4.最主流的就是孙发行的了。除了Sun之外,许多公司和组织都开发了自己的JDK,如IBM开发的、BEA开发的Jrocket、GNU开发的等等。以上是jdk和jre区别的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。