小言_互联网的博客

JDK为什么需要配置环境变量呢?(完美解答)

392人阅读  评论(0)

首先我们要清楚,我们编写程序最终的结果是要在电脑上运行的,那我们不配置环境变量就不能运行程序吗?
带着这个问题,我们开始好好分析分析

1. 我们知道Java程序的执行离不开三样东西:JDK、JRE、JVM

  • JDK:是Java程序开发工具包,包含JRE和开发者用的工具。 可以运行也可以开发Java程序
  • JRE:Java程序的运行环境,包含JVM标准实现和运行时所需的核心类库。 可以运行Java
    程序
  • JVM:Java虚拟机,是运行所有Java程序的假想计算机,是Java程序的运行环境。 Java的虚拟机
    本身不具有跨平台的性能,每个操作系统下有专属的JVM。 所有编写的Java程序都运行在JVM上,可将.class文件解释
    为机器码(…\jdk\jre\bin\java.exe)

2.解释完这三个重要的名词之后,下面分析一下JDK的目录结构

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

  • 疑问:JDK目录下有bin、lib、jre文件夹,而其中的jre文件夹下又有bin、lib----有什么不同?
    答:

    1. jdk是开发时环境,jre是运行时环境。就是编写java文件用jdk,运行java文件用jre;
    2. jdk的bin下有各种java程序需要用到的命令,与jre的bin目录最明显的区别就是jdk下才有javac


  • 用下幅图表示真的直观明了

3. 那Java程序的执行过程呢?

  • 我们从官网上可以得知,Java的运行过程是如下图所示

  • 由上图可知,Java程序的运行是先将xxx.java文件(使用 javac 编译指令)编译成xxx.class文件(字节码文件),在将字节码文件(使用 java 执行指令)解释成电脑所能认识的机器指令并运行的

4. 我们为什么要配置环境变量?

  • 首先说一下java相关的环境变量有哪些吧:path / CLASSPATH / JAVA_HOME

    path(环境变量):

    • path 是 dos 以前的内部命令,windows继续沿用至今。用作运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找
    • 环境变量可以简单的理解为路径导向。例如:Windows里面的临时文件夹存放的路径导向。当要访问此类文件时可根据此环境变量找到它的存放目录。像下面讲的在我们输入Java命令如javac等的时候不用敲入它的路径,系统自动根据环境变量设置找到其实际地址。
  • 配置PATH环境变量(必需):
    前面讲到了 Java 程序的运行首先需要使用 javac 编译指令 编译成字节码文件, 继而使用 java 执行指令 解释并运行字节码文件,而 window 运行 java 编译命令 javac 或者执行指令 java 的时候,本地查找不到某个命令或文件,就会到path中去查找。那这个 javac 我们知道是存在 JDK 目录下面的 bin 目录中的,因为我们不可能在每个 java 文件所在目录放置 JDK ,故把 JDK 放置 path 环境变量中,这样每个 java 文件都可以通过 path 中设定的jdk目录找到编译命令进行编译。

  • 配置CLASSPATH环境变量(必需):
    在java开发过程中我们会用到很多开发人员已经帮我们写好的标准类库,而我们要用这些类库的话必须告诉计算机如何找到它们,CLASSPATH环境变量的作用就是指定类搜索路径,JVM就是通过CLASSPTH来寻找类的,设置CLASSPATH环境变量即可使计算机找到它们。

  • 配置JAVA_HOME环境变量(不必需):
    JDK 是我们进行 java 开发必不可少的,在开发过程中我们通常会使用一些java开发过程中用到的软件(如 eclipse、tomcat等)是通过JAVA_HOME来找到 JDK 的(环境变量JAVA_HOME的值就是 JDK 安装的路径),所以我们不配置JAVA_HOME的话那我们使用eclipse时可能要受到影响。

OK,感觉差不多已经解释清楚了,如有不对的地方欢迎下面评论交流,如果觉得不错,记得点个赞哦~~


转载:https://blog.csdn.net/Fly_1213/article/details/101750887
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场