您的位置:首页 > 运维架构 > Tomcat

Eclipse +Tomcat+JDK那些事

2015-09-22 19:42 260 查看
最近开发过程和搭建Jenknis时,发现对JDK、Tomcat、Eclipse理解有些问题,具体的它们在整个开发环境中各起着什么作用。明白了之间的关系,才可以很清晰的搭建框架,或者部署开发环境。



JDK & JRE& JVM





JDK(JavaDevelopment Kit)

JDK是Java开发工具包,是SunMicrosystems针对Java开发员人的产品。

JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。

·


bin目录(javac.exe将.java编译成.class文件)

Javac.exe:即java源文件的编译工具,java源文件的扩展名为.java,如Test.java,java源文件被编译后的java字节码文件的扩展名为.class

java.exe是java字节码编译程序,负责解释执行java字节码文件,就是一个JVM(java虚拟机)

include:java和JVM交互用的头文件

lib:java和JVM交互用的类库

jre:java运行环境(java.exe运行.class文件)



小结:

写Java程序的时候需要JDK,而JDK里面已经包含了JRE,因此对J***A_HOME设置为JDK的路径时也可以正常运行Java程序。

JRE(Java Runtime Environment)




是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。



JRE中包含了Java virtualmachine(JVM),runtime class libraries和Java applicationlauncher,这些是运行Java程序的必要组件。

JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则,放在CLASSPATH前面的类库先被搜到,Java程序启动之前建议先把PATH和CLASSPATH环境变量设好。

PATH:OS通过PATH来找JRE,确定基础类库rt.jar的位置

CLASSPATH:JRE的ClassLoader通过CLASSPATH找其它类库。



JDK与JRE区别

JDK:开发环境

JRE:运行环境




为什么Sun要让JDK安装两套相同的JRE?

这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在<JDK安装目录>/lib/tools.jar 里。JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:/ProgramFiles/Java目录下的那套JRE就是用来运行一般Java程序用的。



如果一台电脑安装两套以上的JRE,谁来决定呢?

Java.exe依照底下的顺序来查找JRE:

自己的目录下有没有JRE;

父目录有没有JRE;



小结:

  JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。

JVM(java virtual machine)

JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

但只有JVM还不能执行class文件,因为在解释class文件时,JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。

所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给别人,这样别人就可以运行你写程序了。(jre里有运行.class的java.exe)从而得出结论JRE是个运行环境,运行Java程序的时候就需要JRE。



运行原理:

java编译器只需面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译器,编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行,也就是经常提起的“一次编译,到处运行”。



区别

JRE也就是Java平台,所有的Java程序都要在JRE下才能运行。

JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。

JVM是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。





Eclipse

Eclipse 也就是所说的IDE,方便程序员编写代码的工具。是一个开放源代码的、基于Java的可扩展开发平台。可以将其看成一个框架和一组服务,用于通过插件组件构建开发环境。它自带有JDK,可以不额外装JDK,一般情况下我们会使用和项目符合的JDK(自己安装)。


为什么Eclipse只有JRE就可以正常运行?

在Eclipse中内嵌了Java编译器,并且与JDK中的javac完全相容,因此无须使用JDK也可以直接编译Java程序。



小结:

Eclipse中集成了JDK、Tomcat,只需要启动Tomcat时,配置好相应的JDK,即可将项目成功发布。我们就可以在浏览器中进行访问。Eclipse内嵌了Java编译器,可直接将.java文件编译成.class文件。



Tomcat



Tomcat是一个WEB服务器软件,我们将JSP或Servlet发布在其中。当有请求时,tomcat会自动将jsp里面的java程序部分提取出来,调用jdk将java程序编译成class,然后再执行这个class.

Tomcat本身就是java写的虽然说是一个服务器,可是本质上它还是一个普通的java程序,要运行java程序就需要java虚拟机.你单独下载一个jre即可运行tomcat



注:

为什么Tomcat需要用JRE就可以启动,Weblogic用JDK才能启动呢?

原因是Tomcat已经包括了一个源代码编译器,而Weblogic没有包括这个编译器包。



为什么需要编译器?

在WEB应用中JSP文件是需要转换成Servlet,这个Servlet文件还需要编译成可以在JRE上执行的class文件,因此必须提供有编译能力的JDK,将J***A_HOME设置为JDK的路径即可。

实际开发过程中,我们可以将已完成的项目直接放在Tomcat目录下的webapps中,重启Tocmat即可发布本项目,我们就可以在浏览器中访问我们发布好的程序了。



对于java开发而言,

JVM:执行编译好的class文件

JRE:是运行环境

JDK是必需的;

Eclipse是辅助高效开发的工具;

Tomact等服务器是开发后部署所必需的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: