JDK/JRE/JVM渗入了解及Windows系统JDK配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26125865/article/details/77998449

    为了今后在不同的机器上配置JDK思路更为清晰,整理了部分关于JDK和JRE的知识点 :

    JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。

    JRE,即Java程序运行环境Java Runtime Environment缩写,指Java运行环境,是Sun的产品。

    JVM即Java虚拟机存在于JRE中,不同的操作系统所运行的JVM就不同,因此需要下载不同系统的JDK。

                                            

    JDK,开发java程序用的开发包,JDK里面有java的运行环境(JRE),包括client和server端的。还有Javac.exe编译器和Java.exe,Java程序运行命令,需要配置环境变量。
    JRE,运行java程序的环境,JVM,JRE里面只有client运行环境,安装过程中,会自动添加PATH。

 

  

    JVM 在JRE中又分为了client版本和server版本,一般开发工具中使用的是client,针对不同的服务器使用的不同,但二者却有一定的区别:
    1、JVM server比JVM client 更优化,JVM server启动较慢但启动后运行速度较快。JVM client启动较快。-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升。JVM如果不显式指定是-Server模式还是-client模式。
    2、JVM client 中能运行的可能在JVM server中能运行的可能在JVM server中运行出错 ,所以这样的话最好在开发、测试阶段都使用JVM server ,保持和服务器相同。不过一直用client,也没出现过什么问题,服务器端用的是server的。可能这种高技术含量的bug相当不容易出现了。
 

PS:虚拟机模式切换
    你可以加参数 java -client className 进行启动,来定制自己时使用client还是server。你可以在命令行中直接输入java或java -help命令,你会看到如下的内容:

      
 
  目录JAVA_HOME/jre/bin下,会有2个目录,server与client.这个就是他们的运行环境的动态库,找到JAVA_HOME/jre/lib/i386/jvm.cfg这就是JVM默认的查找顺序,内容如下:

1.	-client KNOWN   
2.	-server KNOWN   
3.	-hotspot ALIASED_TO -client   
4.	-classic WARN   
5.	-native ERROR   
6.	-green ERROR   
  默认启动的时候是使用第一行的启动,这时你只需要把-server和-client换个位置就行了.就可以切换他们的启动顺序,如下所示:
1.	-server KNOWN   
2.	-client KNOWN   
3.	-hotspot ALIASED_TO -client   
4.	-classic WARN   
5.	-native ERROR   
6.	-green ERROR   
这个时候再输入java -version,可以看到是默认的使用服务器端了。

    如果机子里安装了多个版本的jdk,如下:

  BEA Weblogic Server 7.0 自带一套 JDK1.3.1_02
    下载了一套最新的JDK1.4.1_02
    JBuilder9自带一套JKD1.4.1_02
    Oracle8.1.7自带一套JRE1.1.7
    Ration Rose自带一套JDK1.3
    DreamWeaver自带一套JDK1.3

  6套JRE,每套JRE都被各自安装到不同的目录,不会互相影响。当在控制台执行java.exe,操作系统寻找JRE的方式如下:

    先找当前目录下有没有JRE
    再找父目录下有没有JRE
    接着在PATH路径中找JRE(一般运行时从path中查找,按照path设置前后顺序,以前面为准)

    注册表HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\ 查看CurrentVersion的键值指向哪个JRE(一般XP下是这个:C:\Program Files\Java\jre6)

    JRE只是一个运行环境而已。与开发无关,正因为如此,具备开发功能的JDK自己的JRE下才会同时有client性质的JVM和server性质的 JVM,而仅仅作为运行环境的JRE下只需要client性质的jvm.dll就够了。

介绍JVM client模式与server模式的文章有:

http://phl.iteye.com/blog/857587

http://rednaxelafx.iteye.com/blog/1007251

http://developer.51cto.com/art/201009/228035.htm

JDK路径下各个文件夹的作用:

1.bin(二进制文件类型的简称 binary)文件夹:
    存放jdk附带的实用的工具。JDK中所包含的开发工具的可执行文件,PATH环境变量应该包含一个指向此目录的项。书中是这样说的:一些命令行工具,包括Java编译器的启动命令。
2.include文件夹:
    java和JVM交互用的头文件,include:本地的方法文件。编写JNI等程序需要的C头文件。
3.jre文件夹:
    jre是jdk本身的运行环境,客户端只要运行环境就能运行编写的程序了。java程序运行环境的根目录,JAVA要想运行少了它可不行。里面一边包括两个文件:bin和lib。bin:平台所用工具和库存的可执行文件和DLL文件。
lib:java运行环境的代码库,属性设置和资源文件,默认安装目录,安全管理。
4.lib(library)文件夹:类库
    开发工具使用的文件。里面有个tool.jar,它包括支持JDK的工具和实用程序的非核心类。里面还有个dt.jar,它是BeanInfo文件的DesignTime归档,BeanInfo文件用来告诉交互开发环境〔IDE〕如何显示Java组件以及如何让开发人员根据应用程序自定义它们。

环境变量设置时的各项:

1.JAVA_HOME:
    该环境变量的值就是 Java 所在的目录,一些 Java 版的软件和一些 Java 的工具需要用到该变量,设置 PATH 和 CLASSPATH 的时候,也可以使用该变量以方便设置。

    在“系统变量”(也可以配置在用户变量上)区域点“新建”按钮,如上图。在“变量名”文本框中输入JAVA_HOME,在“变量值”文本框中输入JDK的安装路径 D:\Java\jdk1.7.0(这个是你所安装的JDK路径所决定的,路径下包括lib,bin,jre等文件夹,运行tomcat,Eclipse等都需要依靠此变量)。单击确定

2.PATH:
    指定一个路径列表,用于搜索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找 PATH 中的每一个路径,直至找到。或者找完 PATH 中的路径也不能找到,则报错。Java 的编译命令 (javac),执行命令 (java) 和一些工具命令 (javadoc, jdb 等) 都在其安装路径下的 bin 目录中。因此我们应该将该路径添加到 PATH 变量中。

    设置PATH,使得系统可以在任何路径下识别java命令,这项一般原来就有,找到它,选中后点编辑,在变量值前面多添加一个:
.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
如果不存在,则新建变量PATH,设定变量值为:
.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意:前面要加“.”表示当前路径。)
(注:%JAVA_HOME%代表刚才你设置的JAVA_HOME的值D:\Java\jdk1.7.0。所以,此入输入.;D:\Java\jdk1.7.0\bin;D:\Java\jdk1.7.0\jre\bin 也是一样滴。)下同。

3.CLASSPATH:

    指定一个路径列表,是用于搜索 Java 编译或者运行时需要用到的类(lib里的东西)。在 CLASSPATH 列表中除了可以包含路径外,还可以包含 .jar 文件。Java 查找类时会把这个 .jar 文件当作一个目录来进行查找。通常,我们需要把 JDK 安装路径下的 jre/lib/rt.jar (Linux: jre/lib/rt.jar) 包含在 CLASSPATH 中。

    设置CLASSPATH:为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,这项一般也莫有,和新建JAVE_HOME一样,设定变量值为:
.;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;





没有更多推荐了,返回首页