JDK环境变量配置及Java运行机制

JDK是Java Development Kit,简称java开发工具包。

JDK是java的核心。它包括java运行环境、一堆java工具盒、java基础的类库(rt.jar)。

JDK包含JRE的全部内容外,还包含开发者用以编译、调试和运行java程序的工具。
JDK、JRE(Java运行时环境)、JVM(Java虚拟机)之间是包含关系。范围由大到小依次为JDK、JRE、JVM。

JDK下载地址:点击打开链接

   环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。

   JAVA_HOME=jdk安装路径

   JRE_HOME=jre安装路径

   PATH=.;%JAVA_HOME%\bin;%JRE_HOME%\bin;

   CLASSPATH=.;%JAVA_HOME%\lib;%JRE_HOME%\lib;

   CLASSPATH变量的作用是指定类搜索路径,JVM就是通过CLASSPATH来寻找类的。

   java是编译型与解释型语言的结合体,java的运行首先是通过通用的Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。Java字节码具有平台无关性,可以在各种不太系统平台运行,但是需要有不同版本的Java虚拟机,不同系统平台的的Java运行环境其Java虚拟机是不一样的。

   JVM(Java virtual machine)是Java字节码执行的引擎,为Java程序的执行提供必要的要求,还能优化Java字节码,使之转换为效率更高的机器指令。程序员编写的指令最终都要在JVM上执行,JVM中类的加载是由类加载器(ClassLoader)及其子类来完成的。ClassLoader是Java运行时一个重要的系统组件,负责在运行时查找和装入类文件的类。JVM屏蔽了与具体操作系统平台相关的信息,从而实现了java程序只需生成在JVM上运行的字节码文件(class文件),就可以在多种平台上不加修改地运行。不同平台对应着不同的JVM,在执行字节码时,JVM负责将每一条要执行的字节码送给解释器,解释器再将其翻译成特定平台环境的机器指令并执行。java语言最重要的特点就是跨平台运行,使用JVM就是为了支持与操作系统无关,实现跨平台运行。

   

ClassLoader

(1)是JVM实现的一部分,包括bootstrapclassloader(启动类加载器)

(2)ClassLoader在JVM运行的时候加载java核心的API,通过java程序实现两个ClassLoader:

①ExtClassLoader,它的作用是用来加载java的扩展API,也就是lib\ext类;

②AppClassLoader,用来加载用户机器上CLASSPATH设置目录中的Class.

(3)ClassLoader加载流程:当运行一个程序的时候,JVM启动,运行bootstrapclassloader,该ClassLoader加载java核心API,然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class.

JRE是JavaRuntimeEnvironment,java运行时环境,它是java程序运行所必须的环境集合,主要由java虚拟机、java平台核心类和若干支持文件组成。其不包含开发工具、编译器、调试器以及其他工具。

在执行java程序的时候,操作系统会按照下面顺序寻找JRE环境。

(1)先查找当前目录下有没有JRE

(2)再查找父目录下有没有JRE

(3)接着在环境变量PATH制定的路径中查找JRE

(4)注册表查看CurrentVersion的键值指向哪个JRE

JRE自带的基础类库主要在JRE\LIB\rt.jar文件中。在程序运行时,JRE由ClassLoader(类加载器)负责查找和加载程序引用到的基类库和其他类库。基础类库,Classloader会自动到rt.jar的位置;其他的类库,ClassLoader在环境变量CLASSPATH制定的路径中搜索。




猜你喜欢

转载自blog.csdn.net/wulibabywenyu/article/details/79532851