re、JDK、SDK、JVM区别

jreJDKSDKJVM区别详解

一、JDKjre

JDKJava Development Kit)就是开发人员使用的SDK,它提供可Java的开发环境和运行环境。

jreJava Runtime Enviroment)是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

 

如果安装了JDK会看到电脑中有两套jreC:\ProgramFiles\Java\jdk1.6.0_45\jreC:\Program Files\Java\jre6,后面的比前面少了server端的虚拟机,不过在安装jdk是可以选择是否安装C:\Program Files\Java\jre6目录下的虚拟机

 

1Sun为什么要让JDK安装两套jre呢?是因为JDK里有很多java编写的开发工具(javac.exe,jar,exe),而且都放置到\bin\tools.jar里。从下例子我们可以看出,将tools.jar改为tool1.jar,,后运行javac.exe,显示结果:Exception in thread "main" java.lang.NoClassDefFoundErrorcom/sun/tools/javac/Main,这个意思是说输入javac.exe与输入java -cp c:\jdk\lib\tools.jar是一样的,会得到相同结果。从而我们这里可以证明javac.exe是一个包装器(Wrapper),而制作目的是为了免于开发者输入太长的指命。JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。

 

2、两个jar与三个lib的功能简单概要的解释:

安装JDK后,java目录下有jarjdk两个文件夹,但是jdk下还有个jar文件夹,而且这个jar比前面的那个jarbin目录下多了个server文件夹。

普通用户装jar即可。开发人员需要安装jdk,其中包括jar,所以jdk下有jar,两个大致相同,有细微差别。

两套jar,是针对不同的工作职责,不同的jar负责各自的范围内容。

当用户只需执行java程序时,java下的jarOK

当用户是java程序员,则需要java开发环境。编译时,系统就会优先去找jdk\bin目录下的javajavac这些命令所在的目录或者他们目录的jar.发环境下运行的是jdk下的jar.

3、说三个lib目录

JDK下的lib包括java开发环境的jar包,是给JDK用的,例如jdk下有一些工具,可能要用到改目录中的文件。例如编译器等。

jre下的lib只是运行java程序的包,是为JVM运行时用的。包含所有的标准类库和扩展类。

jdk\jar\lib是开发环境中,运行需要的jar包,典型例子就是导入的外部驱动的jar包。应为编译时系统找的是jdk下的jre,而不是最外层jar

 

3、如果一台电脑安装两套以上的JRE,谁来决定呢?这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行 Java程序。 Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JavaRuntime Environment] 所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

4jarjdk目录下的bin目录有两个目录:server,client,这是真正的jvm.dll所在。jvm.dllll无法单独工作,当jvm.dll启动后会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll

 

二、SDKJDK

SDKSoftware Development Kit)中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。SDK是一系列文件的组合,它为软件的开发提供一个平台(它为软件开发使用各种API提供便利)

可以认为jdk只是sdk的一种(子集),因为它是开发java程序的一个平台,开发其他程序的sdk可以没有jdk
比如你下载了一个软件开发平台 eclipse-SDK-3.2.2-win32.zip,它本身里面是没有jdk的。但是只要开发java程序就必须使用jdkjavaeejavase)。

 

三、JVM

JVMJava Virtual Mechinal(JAVA虚拟机)JVMJRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。jre、JDK、SDK、JVM区别详解
一、JDK与jre
JDK(Java Development Kit)就是开发人员使用的SDK,它提供可Java的开发环境和运行环境。
jre(Java Runtime Enviroment)是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

如果安装了JDK会看到电脑中有两套jre,C:\Program Files\Java\jdk1.6.0_45\jre;C:\Program Files\Java\jre6,后面的比前面少了server端的虚拟机,不过在安装jdk是可以选择是否安装C:\Program Files\Java\jre6目录下的虚拟机

1、Sun为什么要让JDK安装两套jre呢?是因为JDK里有很多java编写的开发工具(javac.exe,jar,exe),而且都放置到\bin\tools.jar里。从下例子我们可以看出,将tools.jar改为tool1.jar,然,后运行javac.exe,显示结果:Exception in thread "main" java.lang.NoClassDefFoundError:com/sun/tools/javac/Main,这个意思是说输入javac.exe与输入java -cp c:\jdk\lib\tools.jar是一样的,会得到相同结果。从而我们这里可以证明javac.exe是一个包装器(Wrapper),而制作目的是为了免于开发者输入太长的指命。JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。

2、两个jar与三个lib的功能简单概要的解释:
安装JDK后,java目录下有jar和jdk两个文件夹,但是jdk下还有个jar文件夹,而且这个jar比前面的那个jar在bin目录下多了个server文件夹。
普通用户装jar即可。开发人员需要安装jdk,其中包括jar,所以jdk下有jar,两个大致相同,有细微差别。
两套jar,是针对不同的工作职责,不同的jar负责各自的范围内容。
当用户只需执行java程序时,java下的jar就OK。
当用户是java程序员,则需要java开发环境。编译时,系统就会优先去找jdk\bin目录下的java、javac这些命令所在的目录或者他们目录的jar.发环境下运行的是jdk下的jar.
3、说三个lib目录
JDK下的lib包括java开发环境的jar包,是给JDK用的,例如jdk下有一些工具,可能要用到改目录中的文件。例如编译器等。
jre下的lib只是运行java程序的包,是为JVM运行时用的。包含所有的标准类库和扩展类。
jdk\jar\lib是开发环境中,运行需要的jar包,典型例子就是导入的外部驱动的jar包。应为编译时系统找的是jdk下的jre,而不是最外层jar。

3、如果一台电脑安装两套以上的JRE,谁来决定呢?这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行 Java程序。 Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。
4、jar、jdk目录下的bin目录有两个目录:server,client,这是真正的jvm.dll所在。jvm.dllll无法单独工作,当jvm.dll启动后会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll。

二、SDK与JDK
SDK(Software Development Kit)中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。SDK是一系列文件的组合,它为软件的开发提供一个平台(它为软件开发使用各种API提供便利)。
可以认为jdk只是sdk的一种(子集),因为它是开发java程序的一个平台,开发其他程序的sdk可以没有jdk。
比如你下载了一个软件开发平台 eclipse-SDK-3.2.2-win32.zip,它本身里面是没有jdk的。但是只要开发java程序就必须使用jdk(javaee和javase)。

三、JVM
JVM:Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值