【J2SE】JRE JDK和SDK的介绍

 

JRE:Java 的运行环境。
JDK:是一切java应用程序的基础,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class
SDK:软件开发工具包
http://java.sun.com/products/
1. SDK(Software Develop Kit,软件开发工具包),用于帮助开发人员的提高工作效率。各种不同类型的软件开发,都可以有自己的SDK。Windows有Windows SDK,DirectX 有 DirectX 9 SDK,.NET开发也有Microsoft .NET Framework SDK。JAVA开发也不含糊,也有自己的Java SDK。
2. JDK,Java SDK最早叫Java Software Develop Kit,后来改名为JDK,即Java Develop Kit。JDK作为Java开发工具包,主要用于构建在Java平台上运行的应用程序、Applet 和组件等。
3. JRE(Java Runtime Environment,Java运行环境),也就是Java平台。所有的Java程序都要在JRE下才能运行。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
4. JVM(Java Virtual Machine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

所以,JAVA虚拟机JVM是属于JRE的,而现在我们安装JDK时也附带安装了JRE(当然也可以单独安装JRE)。

开始接触Java的时候觉得Java虚拟机很麻烦,不明白JRE与JDK的区别是什么?

后来搞清楚JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此对JAVA_HOME设置为JDK的路径时也可以正常运行Java程序,但是JDK比较大包括了许多与运行无关的内容,因此运行普通的 Java程序无须安装JDK。

     但是用了Eclipse又有了疑问,为什么这个开发环境JRE就可以正常运行呢?其实在Eclipse中内嵌了Java编译器,并且与JDK中的javac完全相容,因此无须使用JDK也可以直接编译Java程序。

     学习J2EE的时候又开始不明白,为什么Tomcat和Apusic用JRE就可以启动,Weblogic用JDK才能启动呢?原因是Tomcat和Apusic 4都已经包括了一个源代码编译器,而Weblogic没有包括这个编译器包。

     那么为什么需要编译器呢?因为在WEB应用中JSP文件是需要转换成Servlet,这个Servlet文件还需要编译成可以在JRE上执行的class文件,因此必须提供有编译能力的JDK,将JAVA_HOME设置为JDK的路径就可以了。

     那么新出现的Apusic 5.0呢?这个版本为了使大家可以灵活调整JVM的版本,因此不再提供自带的Java编译器,而是通过用户安装的JDK来完成JSP的编译工作,这个也就是为什么Apusic 5.0必须通过JDK启动的原因。

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。

The distinct between jdk and jre:

The JDK includes a Java compiler (javac), a Java virtual machine (java), and all of the standard Java library components -- in other words, everything you need to write Java programs in a wide variety of problem domains, and more than enough firepower for the assignments we'll be giving you. (The JRE is the Java Runtime Environment, which includes the necessary code to allow you to run Java programs, but not to write and compile them! The JRE will not be sufficient for our work in this course.)

the job of the PATH and classpath environment variable:

You can execute programs from a Command Prompt (or, as Windows 95/98 call it, an "MS-DOS prompt") by simply typing their names, such as javac or java. But there's a catch: Windows has to know where it can find these programs. This is the job of the PATH environment variable. PATH is a list of folders, separated by semicolons, in which Windows will look for a program whenever you try to execute one.

Similarly, whenever the Java compiler or Java virtual machine need to be able to use a Java class (such as when you import a class from the Java library), the compiler or virtual machine needs to be able to know where to find it. This is the job of the CLASSPATH environment variable. CLASSPATH is a list of folders, separated by semicolons, in which the Java compiler or virtual machine will look for a Java class whenever it's trying to find one.

So, to make the JDK work, you have to modify the PATH and CLASSPATH environment variables on your system, so that Windows will be able to find javac and java, and so that javac and java will be able to find all of the necessary Java classes.

环境变量pathclasspath是什么东东
path
是您用的操作系统提供的环境变量,
您一定试过在命令行输入一个命令然后它就执行了,很好玩吧。你输入的比如说是〉ffff
可这个文件明明在D:/****/***/ffff.exe那个路径下,在命令行中,不管在那个路径下输入都能执行呢,
这就是因为,再path中设置了这个路径。
classpath有什么作用呢?编java程序的时候都知道import的作用吧!
当要用的class,在某一个.jar下是,你需要在编译时引入,jvm自动去找classpath环境变量引入下面的jar包,
这就是classpath环境变量的作用


Path=.;C:/j2sdk 1.4.2 _05/bin;D:/DownLoads/oracle/bin;D:/DownLoads/oracle/Apache/Perl/5.00503/bin/mswin32-x86;C:/Program Files/Oracle/jre/1.1.7/bin;%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;D:/DownLoads;C:/Program Files/Symantec/pcAnywhere/;C:/Program Files/Microsoft SQL Server/80/Tools/BINN

JAVA_HOME=C:/j2sdk 1.4.2 _05

CLASSPATH=./;%JAVA_HOME%/lib/tools.jar
(Path
没有用到JAVA_HOME变量)

path classpath区别 环境变量pathclasspath是什么东东path是您用的操作系统提供的环境变量,您一定试过在命令行输入一个命令然后它就执行了,很好玩吧。当要用的class,在某一个.jar下是,你需要在编译时引入,jvm自动去找classpath环境变量引入下面的jar包,这就是classpath环境变量的作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值