java基础篇(一)

简单来说jdk、jre、jvm的区别就是:

        jdk:Java DevelopmentKit, 它提供了Java的开发环境和运行环境,主要用于开发JAVA程序,面向Java程序的开发者,类似面向开发人员使用的SDK。SDK是Software Development Kit一般指软件开发包,可以包括函数库、编译程序等。

        jre:全称Java RuntimeEnviroment,它是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

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

     JDK是JRE的超集,即父集,JRE所包含的一切东西JDK里面都有,JRE只是JAVA程序运行时候所需要的环境,而我们开发者程序员来说还需要编译器,调试器等工具,API这些都是JRE所没有的。而JRE是包括JVM,还有库,组件等。

JDK中的jre和独立的jre的区别?

        安装JDK时,如果选择安装独立的jre,这时候Java目录下就会出现两套非常相似jre,比如:D:\Java\jdk1.8.0_40\jre和D:\Java\jre1.8.0_40(即独立的jre)。存在两套jre的原因是:JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,即D:\Java\jdk1.8.0_40\jre。而D:\Java\jre1.8.0_40目录下的JRE是用来执行我们自己编写(或外部安装)的JAVA程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序,但是JDK里面的工具一般只会由D:\Java\jdk1.8.0_40目录下的jre来执行。(这个个人猜测应该和java.exe的寻找jre目录的顺序有关系,java.exe的查找jre的目录的顺序下面会介绍)。


两套jre,Java程序具体执行时最后使用哪个,这个机制是什么?

系统存在多套jre时,那么由谁来决定使用哪一套jre呢?这个重担就落在java.exe的身上。

比如如果在命令行中输入java xxx的时候,java.exe的任务就是在我们电脑系统中众多的jre中找到合适的jre来执行xxx。java.exe依据以下顺序来寻找jre:

    (1)自己的目录下有没有jre目录;

    (2)父目录下有没有jre目录;(D:\Java\jdk1.8.0_40\bin中的java.exe执行时只会使用D:\Java\jdk1.8.0_40\jre的jre,就是出于这个原因);

    (3)查询注册表HKEY_LOCAL_MACHINE\Software\JavaSoft\JavaRuntime Environment\。

所以java.exe的执行结果与我们电脑里哪一个java.exe(搜索一下就会发现我们电脑里面也不止一个java.exe)被执行以及哪套jre来执行JAVA程序有很大的关系。

    另外,java.exe在找到合适的jre以后,还有一个验证版本的程序,也就是java.exe与jre的版本一致才可以执行。如果出现版本不一致的问题,一定要记得两件事情:

    (1)哪一个java.exe被执行;

    (2)java.exe找到哪一套jre。

只要这两件事情确定了,我们就抓住了问题的来龙去脉,理解起来也就轻而易举了。


存在多个java.exe时,怎么知道哪个java.exe被执行?

在cmd中输入where+空格+java,如果系统环境变量path中存在,就会输出相应的路径。

不手动配置jdk的环境变量,为什么在cmd中输入java,同样可以调用java命令?

这是因为在安装过程中,安装程序默认在已用的path路径下,设置了默认的java.exe。比如我的电脑:


我们跟踪这个程序文件,发现它是一个快捷方式,如下图:


进而跟踪具体路径,如下:


通过这个我们也能验证D:\Java\jre1.8.0_40这个jre主要是为外部JAVA程序服务的(此时还没有配置JDK的环境变量)。


JDK环境变量的配置?

配置分为2个部分,1,java命令路径。2,java加载类。

1、先配置JAVA_HOME,这个主要是为方便以后需要配置其他程序的java路径。比如JAVA_HOME配置为:D:\Java\jdk1.8.0_40。

2、配置java命令。比如如何知道java和javac的位置;配置如下:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。这个不知道为什么配置jre\bin。

3、配置加载类的路径。CLASSPATH为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。注意不要忘了当前路径“.”,因为程序运行时不止需要系统类,同时也会加载自己写的类。



原文网址:https://blog.csdn.net/syx19930206/article/details/44244027







猜你喜欢

转载自blog.csdn.net/qq_36522306/article/details/80095018
今日推荐