jdk和jre的区别!

来源:互联网 发布:初中生学编程考试 编辑:程序博客网 时间:2024/05/16 01:38

什么是jdk和jre的区别。

1先看一个问题:

问题:tomcat + jre 可以跑web项目吗?还是必须tomcat+jdk才可以? 

答案:tomcat6.0以上可以不再依赖JDK运行,直接使用JRE即可。

           但tomcat5.5以下,是必须安装JDK的。 

           这主要是由于,tomcat5.5及以下版本主要是依赖JDK去编译JSP文件生成class的。但Tomcat6.0使用了Eclipse的JDT技术,因此不再依赖JDK运行。


我的总结:原来tomcat 6.0以上版本只需要安装jre,而不用安装jdk!!

                   tomcat5.5以下需要jdk,因为需要使用jdk的编译工具即javac.exe文件,去编译jsp文件。

                   所以jdk和jre的区别是:jdk包含jre,jdk比jre包含编译工具,jre是运行环境(即用来运行class文件的),不能编译。

2 只要搞清楚j2ee工程在tomcat下的运行过程是怎么样的,就完全明白jdk和jre有什么区别了。就会明白到底需不需要安装jdk了。

我前面的文章说过,j2ee工程在tomcat下运行,加载jar包的顺序是:


1. $java_home/jre/lib 目录下的java核心api 
2. $java_home/jre/lib/ext 目录下的java扩展jar包
3. 环境变量CLASSPATH中的jar和class文件。
4. $CATALINA_HOME/common目录下按照文件夹的顺序从上往下依次加载
5. $CATALINA_HOME/server目录下按照文件夹的顺序从上往下依次加载
6. $CATALINA_BASE/shared目录下按照文件夹的顺序从上往下依次加载
7. 我们的项目路径/WEB-INF/classes下的class文件
8. 我们的项目路径/WEB-INF/lib下的jar文件
 
在同一个文件夹下,jar包是按顺序从上到下依次加载
由ClassLoader的双亲委托模式加载机制我们可以知道,假设两个包名和类名完全相同的class文件不再同一个jar包,如果一个class文件已经被加载java虚拟机里了,那么后面的相同的class文件就不会被加载了。


这样,就完全明白jdk和jre有什么区别了,并且明白到底需不需要安装jdk,什么情况下需要安装jdk

1jdk有编译工具javac.exe;jre只是执行环境,可以执行class文件,但没有编译工具。

2jdk中包含jre。

3所以jdk是给开发人员用的,jre是给部署环境用的。开发人员编写java文件,要编译成class文件才可以运行。而部署环境拿到的就是编译后的class文件和jsp文件。class文件可以直接运行,但是jsp文件要渲染成HTML才可以执行,这时tomcat就需要编译工具将jsp文件编译成class文件。

tomcat6.0以上的版本自带编译工具,可以将jsp文件编译成class文件,只需要安装jre就可以。而tomcat5.5以下版本版本主要是依赖JDK去编译JSP文件生成class,所以需要安装jdk(jdk中包含jre,并且比jre多了编译工具javac.exe)。



0 0