jdk与jre的区别 很形象,很清晰,通俗易懂

简单的说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" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac.exe与输入 java -cp c:\jdk\lib\tools.jar com.sun.tools.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中String类设计成final的原由

    最佳答案: 主要是为了 " 效率 " 和 " 安全性 " 的缘故. 若 String 允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以 String 被定义成 final. 其它答案一: String 和其他基本类型不同 , 他是个对象类型. 既然是对象类型 , 如果是在静态方法下是必须调用静态方法或值的 , 如果是非静态的方法 , 就必须要实例化. main 函数是个 static 的. 所以 String 要能像其他的基本类型一样直接被调用. 这

  • win2003 jsp运行环境架设心得(jdk+tomcat)

    我的环境是win2003+jdk+tomcat,版本如下 JDK:jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe tomcat: apache-tomcat-6.0.35.exe 我只要这2个软件就可以,都不用创建环境变量什么的,我看过我的环境变量都没有.网络上都是抄来抄去,我这些都是自己实践出来的. 步骤: 1.先装JDK,如装在D:\JDK目录 2.第二再装tomcat,在装tomcat时,会自动找jdk目录,所以我们要先装jdk,不然

  • jdk中密钥和证书管理工具keytool常用命令详解

    -genkey      在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥.私钥和证书 -alias       产生别名-keystore    指定密钥库的名称(产生的各类信息将不在.keystore文件中-keyalg      指定密钥的算法    -validity    指定创建的证书有效期多少天-keysize     指定密钥长度-storepass   指定密钥库的密码-keypass     指定别名条目

  • 安装多个版本JDK后使用时的切换方法总结

    前言 因为刚到新公司,自己安装了jdk1.7和开发工具myeclipse10,但是由于公司项目的需要(具体原因不详细描述了),需要使用myeclipse6.5和jdk1.6.于是在切换jdk1.7和jdk1.6之前出现了一些小障碍,下面描述出来以便部分初级程序员和自己以后处理相类似问题. 具体操作和描述如下 1.原本安装了jdk1.7,环境变量也是配置的1.7相关路径,在cmd下输入[java -version]后,显示 [ C:\Users\Administrator>java -versio

  • JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版整理

    JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境.它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成. JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品.自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit). JDK包含

  • jdk8的datetime时间函数使用示例

    JDK8已发布,写了一个datetime时间函数使用方法的小示例 复制代码 代码如下: package datetime; import static java.time.temporal.TemporalAdjusters.lastDayOfMonth;import static java.time.temporal.TemporalAdjusters.previousOrSame; import java.time.DayOfWeek;import java.time.Duration;im

  • Shell脚本实现在Linux系统中自动安装JDK

    A:本脚本运行的机器,Linux B:待安装JDK的机器, Linux 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在A上运行本脚本: 复制代码 代码如下: $ ./install-jdk.sh B的IP or: 复制代码 代码如下: $ ./install-jdk.sh "B的IP" "JDK的URI" 就可以在机器B上安装JDK.jdk使用的tar包需要用户自己设定DEFAULT_JDK_SRC=?,保证可以wget得到即

  • 解决java 查看JDK中底层源码的实现方法

    1.点 "window"-> "Preferences" -> "Java" -> "Installed JRES"2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE)3.选中rt.jar文件的这一项:"c:\program files\ja

  • UBUNTU手动安装JDK的详细步骤

    先去 Oracle下载Linux下的JDK压缩包,我下载的是jdk-7u4-linux-i586.tar.gz文件,下好后直接解压 Step1:# 将解压好的jdk1.7.0_04文件夹用最高权限复制到/usr/lib/jvm目录里sudo cp -r ~/jdk1.7.0_04/ /usr/lib/jvm/ Step2:# 配置环境变量 复制代码 代码如下: sudo gedit ~/.profile 在末尾加上: 复制代码 代码如下: export JAVA_HOME=/usr/lib/jv

  • java中sdk与jdk的区别详细解析

    SDK是Software Development Kit的缩写,中文意思是"软件开发工具包".这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档.范例和工具的集合都可以叫做"SDK".SDK是一系列文件的组合,它为软件的开发提供一个平台(它为软件开发使用各种API提供便利). JDK(Java Development Kit,Java开发工具包)是Sun Microsystems针对Java开发员的产品.自从Java推出以来,JDK已经成为使用最

随机推荐