JDK/JRE/SERVER/CLIENT/JAVA/JAVAC/JAVAW等等

几个概念


一、

SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。

JDK是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。

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


二、

JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升。

原因是:当虚拟机运行在-client模式的时候,使用的是一个代号为C1的轻量级编译器, 而-server模式启动的虚拟机采用相对重量级,代号为C2的编译器。C2比C1编译器编译的相对彻底,,服务起来之后,性能更高。java -version 可以直接查看出你使用的是client还是server。

java version "1.6.0_38"
Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.13-b02, mixed mode)

两种模式的切换可以通过更改jvm.cfg配置文件来实现或者在启动参数后面加上-server或者-client:

32位的虚拟机在目录JAVA_HOME/jre/lib/i386/jvm.cfg,

64位的在JAVA_HOME/jre/lib/amd64/jvm.cfg, 目前64位只支持server模式,  配置内容大致如下

32位                                                           64位
-server KNOWN                                                  -server KNOWN
-client KNOWN                                                  -client IGNORE
-hotspot ALIASED_TO -client                                    -hotspot ALIASED_TO -server
-classic WARN                                                  -classic WARN
-native ERROR                                                  -native ERROR
-green ERROR                                                   -green ERROR

一般只要变更 -server KNOWN 与 -client KNOWN 两个配置位置先后顺序即可,前提是JAVA_HOME/jre/bin 目录下同时存在 server 与client两个文件夹,分别对应着各自的jvm。


三、

java:执行java字节码文件,通过控制台运行,关闭控制台也会关闭java程序。
javaw:和java的功能一样,但是不通过控制台启动,也就不关联控制台,一般用来启动gui程序。
javac:用来编译java源文件。


细节一、


安装JDK时一定会在其子目录下面安装一个JRE,同时在安装的过程也会询问你是否要安装一个外部的JRE。如果我们选择安装,则就同时拥有了两个jre。这两个JRE其实本质上是没有任何分别的。最主要的区别在于:JDK目录里面的JRE主要是设计用来运行JDK自带的那些工具的(Bin目录下)。而外部的JRE在安装的时候会自动拷贝到操作系统的某个路径下面,一般是:C:\Windows\system32文件夹下,该文件夹下包含:java.exe、javaw.exe、javaws.exe 三个文件。因此我们只要安装了外部的JRE,即使JDK没有安装,环境变量没有配置,则运行Java程序时都是用的外部JRE的java.exe程序来运行的。这是因为,默认情况下,system32这个path写在我们自己配置的path前面,当然这个顺序我们可以手动修改。

所以,这里要注意的是,如果在没有修改path的顺序的情况下,C:\Windows\system32里有这三个程序,那么单单修改我们的java环境变量是不够的,还要把C:\Windows\system32里的这三个程序删除才可以保证修改的环境变量有效。


细节二、

现在的jdk不需要配置classpath了,默认会去找javac等目录的上级目录下的jre里面的jar包。
发布了40 篇原创文章 · 获赞 36 · 访问量 23万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章