jdk和jre有什么区别

2小时前 (08:02:16)阅读1回复0
yk
yk
  • 管理员
  • 注册排名3
  • 经验值116655
  • 级别管理员
  • 主题23331
  • 回复0
楼主

  简单的说JDK是面向开发人员利用的SDK,它供给了Java的开发情况和运行情况。SDK是Software Development Kit 一般指软件开发包,能够包罗函数库、编译法式等。

JDK就是Java Development Kit

JRE是Java Runtime Enviroment是指Java的运行情况,是面向Java法式的利用者,而不是开发者。

假设安拆了JDK,会发同你的电脑有两套JRE,一套位于 \jre 别的一套位于 C:\Program Files\Java\j2re1。4。1_01 目次下,后面那套比前面那套少了Server端的Java虚拟机,不外间接将前面那套的Server端Java虚拟机复造过来就行了。

  并且在安拆JDK能够抉择能否安拆那个位于 C:\Program Files\Jav a 目次下的JRE。假设你只安拆JRE,而不是JDK,那么只会在 C:\Program Files\Java 目次下安拆独一的一套JRE。

JRE的地位就象一台PC机一样,我们写好的 Win32利用法式需要操做系统帮我们运行,同样的,我们编写的Java法式也必需要JRE才气运行。

  所以当你拆完JDK后,假设别离在硬盘上的两个差别处所安拆了两套JRE,那么你能够想象你的电脑有两台虚拟的Java PC机,都具有运行Java法式的功用。所以我们能够说,只要你的电脑安拆了JRE,就能够准确运行Jav a利用法式。

1、为什么Sun要让JDK安拆两套不异的JRE?那是因为JDK里面有良多用Java所编写的开发东西(如javac。

  exe、jar。exe等),并且都放置在 \lib\tools。jar 里。从下面例子能够看出,先将tools。jar改名为tools1。jar,然后运行javac。exe,展现如下成果: Exception in thread "main" ng。

  NoClassDefFoundError: com/sun/tools/javac /Main 那个意思是说,你输进javac。exe与输进 java -cp c:\jdk\lib\tools。jar ols。javac。Main 是一样的,会得到不异的成果。

  从那里我们能够证明javac。exe只是一个包拆器(Wrapper),而造造的目标是为了闪开发者免于输进太长的指命。并且能够发现\lib目次下的法式都很小,不大于2 9K,从那里我们能够得出一个结论。就是JDK里的东西几乎是用Java所编写,所以也是Java利用法式,因而要利用JDK所附的东西来开发Java法式,也必需要自行附一套JRE才行,所以位于C:\Program Files\Java目次下的那套JRE就是用来运行一般Java法式用的。

2、假设一台电脑安拆两套以上的JRE,谁来决定呢?那个严重使命就落在java。exe身上。Java。exe的工做就是找到适宜的JRE来运行 Java法式。 Java。exe按照底下的挨次来查找JRE:本身的目次下有没有JRE;父目次有没有JRE;查询注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 所以java。

  exe的运行成果与你的电脑里面哪个JRE被施行有很大的关系。

3、介绍JVM JRE目次下的Bin目次有两个目次:server与client。那就是实正的jvm。dll所在。 jvm。dll无法零丁工做,当jvm。dll启动后,会利用explicit的办法(就是利用Win32 API之中的LoadLibrary()与GetProcAddress()来载进辅助用的动态链接库),而那些辅助用的动态链接库(。

  dll)都必需位于jvm。dll所在目次的父目次之中。因而想利用哪个JVM,只需要设置PATH,指向JRE所在目次底下的jvm。dll。

0
回帖

jdk和jre有什么区别 期待您的回复!

取消