Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作

简介

​ 本文主要讲述,Path环境变量是什么?有什么用?怎么工作的?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作的?JDK安装包文件结构?有没有必要设置Path环境变量?Eclipse和IDEA开发工具的各自运作大概。还有博主是啰嗦型的,见谅见谅。

什么是Path环境变量?

​ 首先声明博主对所有名词定义均是按自己理解,大家可以结合百度等搜索名词的解释。环境变量是指在操作系统中用来指定操作系统运行环境的一些参数,说白了,就是一些参数。这些参数用来做什么呢?举个例子,如Path环境变量,这个参数里面设置的值的目的是为了能够方便在任何目录下运行你的.exe程序,再举个例子,如QQ.exe,倘若你没有在Path中设置QQ.exe所在路径的时候(D:\DownLoads\QQ\Tencent\QQ\Bin;)

Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作

上图是设置了Path环境变量的方法(只需要找到.exe执行程序的目录,然后加在Path里面就好了,注意这里配置Path并不是说直接删除之前的值,而是在已有的值后面追加.exe程序的目录,多个文件目录之间用 ; 间隔。)。

跑题,回来,当没有设置上图的环境变量的时候,将QQ文件目录中的.exe文件直接拖到(不要采用创建快捷方式,因为快捷方式是增加了路径映射的)任意目录下,单击打开,发现直接报错。
Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作
当我配置了Path环境变量之后(下图),变成了初始化失败(暂不讨论),观察上下报错提示的标题头,可以得到在没有配置Path环境变量的时候报的是QQ.exe系统错误,而设置了Path环境变量之后报错的内容发生了变化,是D盘下的QQ.exe发生了错误,说明我们的Path环境变量起作用了。一个是没有路径,第二个是有路径的。
Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作
通过上面可以知道,当不配置环境变量的时候,在任意目录下(除了快捷方式和本地bin目录下(含有qq.exe的目录))执行qq.exe会报找不到路径的错误(丢失dll文件);当配置环境变量之后,在任意目录下均可以找到路径,而这里的报错是别的原因(暂时不具体展开)。

相信到这里大家还会有疑惑,你这个解释的不全面,不细致,不具体,没有运行结果不成立。那么接着看,上面的例子是使用的Windows操作系统,也就是图形化的操作系统,当我不使用Windows系统,使用DOS操作系统(即控制台,一般电脑都会有dos,因为内存占用量小,也因为dos是最初的操作系统,所以延用至今;可以说dos就是操作系统的鼻祖,Windows操作系统是在dos的基础上发展起来的)的时候就会很明显有体会了,下图是在设置环境变量的时候。很明显在C:\Users\lichen 这个工作目录下执行qq是成功了的。
Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作
qq正常启动了,我的操作路径是C盘下的Users\lichen。同样的操作路径下,当我取消掉环境变量Path的时候,看下图,很明显qq不再被识别为命令了。
Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作
​ 最后说明了什么呢,Path环境变量的作用就是为了能够在任何目录下操作可执行程序命令(.exe结尾)。这就是环境变量里面Path环境变量的作用。

​ 总结:举个例子,你现在想让qq.exe可以在任意目录下执行,也就是单击这个图标就可以运行,那么就需要设置Path环境变量,具体设置不再赘述。也就是说Path环境变量的作用就是让【你想使哪个可执行程序命令.exe在任意目录下都能够执行都能够调用.exe命令,那么你就需要配置Path环境变量(配置到.exe所在目录),达到在哪个目录下操作这个.exe命令都能够操作】实际上就是说,.exe执行程序的时候,首先在当前工作目录,也就是当前所在文件夹中找是否有可以执行.exe的相关条件(相关条件指与.exe配套的配置文件),如果没有,就会去Path环境变量里面找,当找到了设置之后,就说明拥有.exe执行的相关条件了。

Java中Path环境变量的作用?

​ 大部分人都会说,开发java项目;首先下载jdk,然后就是配置环境变量(这里的环境变量就是设置jdk/jre的Path环境变量的),然后下载开发工具…。事实上,从上面分析来看,对于JAVA配置环境变量的目的无非就是为了能够使得在任意目录下都能够执行java.exe程序(用来将.class文件执行),也就是运行每一个.class文件都得先启动java.exe程序,那么我们考虑的当然是.class文件不可能说永远和java.exe程序都放在bin同一个目录下,所以这就需要考虑一个问题了,当我们的.class文件想要在任意目录下执行怎么办呢?当然就是使得java.exe程序在任意目录下都可以执行,就是说.class文件的运行依赖于java.exe,java.exe不能运行的话,.class文件又怎能运行呢?所以要使得java.exe在任意目录下运行,那么自然而然就需要配置Path环境变量了,以达到在任何目录下都可以执行java.exe程序,从而达到在任何目录下都可以执行.class文件。

​ 这里大家都肯定会说,那这么说,肯定得配置Path环境变量了,答案是又不是-----,是(是因为必须有这种机制来使得java.exe在任何地方都可以运行)。不是(是因为如果通过别的途径实现java.exe在任何目录下都可以执行,是不是就不需要去Path环境变量那里设置环境变量了呢)。

​ 具体看各个开发工具的使用便可清晰明了。在叙述各个开发工具之前,先要了解的是JDK的目录结构,为什么要安装JDK。

JDK是什么?JDK的作用,JDK安装目录结构,集成开发工具是什么,JRE又是什么?JVM又是什么?

JDK是什么?JDK的作用?集成开发工具?

​ JDK是java语言的开发工具包(java开发工具),注意这里是工具包,而不是集成开发工具。(工具包其实就是一堆零件(普通螺丝刀等),举例你可以使用这些零件完成一项修水管工作;集成开发工具是将这些零件组装成一个更高级更方便的机器(电动螺丝刀加吸附功能等等等)。仅仅只有JDK工具包完全是可以开发java项目了,只是麻烦了些;所以就有了集成开发工具IDE(Eclipse,MyEclipse,IEDA等)这些集成开发工具就是为了方便我们开发而已)。

JRE是什么?JRE的作用?

​ JRE是java的运行环境(java运行环境),当你使用JDK写好一个java程序之后,需要执行吧,这时候就需要一个平台来支持它,这里主要的平台实际上就是JRE中的JVM(后面讲,先有个印象),举个例子,你要运行QQ.exe,那么当你没有操作系统又如何运行QQ呢?所以说QQ运行得有一个载体来支持他,而这个载体就是操作系统,也就是说QQ运行得有操作系统支持,而java运行也需要平台环境来支持,【我们的java为了适应不同的操作系统,使得能够在Windows,Linux,Unix等操作系统下都可以运行,所以采用了JVM技术,后面具体说JVM技术】,这里暂时理解为现在支持java运行的操作系统即为JRE(说法不准,后面细说)。所以说JRE的作用就如同操作系统一般给予对应应用程序一个运行的平台。java运行平台-JRE;QQ,YY,浏览器等运行平台-操作系统。

JVM是什么?JVM的作用?

​ JVM是java虚拟机,后面配图会理解更加深刻的。JVM就是一个类似于你使用的笔记本电脑等,就是一台计算机,只不过这台计算机是虚拟出来的,非实体,但具有实体一样的效果(读写操作等)。这台虚拟机是拥有计算能力的。用来做什么呢?看下个内容JDK安装包的目录结构图。

JDK安装目录结构图

​ 这里注意目录结构中的JDK(整个大的安装包)和jdk(JDK下的子文件夹)是不同的,JRE(JDK(大写)下的子文件夹)和jre(jdk(这里是小写的jdk)下的子文件夹)是不同的。因为安装包中有相同的文件名。
Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作

总结

​ 通过上图,我相信大家应该对JDK安装包有了大概的了解,jdk其实就是用于开发java程序的,而jre就是为运行java程序提供环境平台的。注意jre文件夹和JRE文件夹的作用是一样的。下个知识点会具体说明。

各个开发工具对于Path环境变量的需求

Eclipse

​ 通过上文可以知道安装Eclipse就是为了方便我们开发java而已,那么大家都会遇到一个问题,就是当你安装了JDK之后,然后在不设置环境变量的时候(JDK1.8以及之后的版本是在安装了JDK之后自动设置了Path环境变量的—就是这个C:\ProgramData\Oracle\Java\javapath;在JDK1.7以及之前的版本是没有自动设置的),(我安装的JDK1.8,然后将环境变量Path删除后)紧接着安装Eclipse,然后打开Eclipse会发现报错,启动失败。见下图。
Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作
​ 然后当我设置了Path环境变量后,可以正常运行了,并且可以正常的写java程序,并且运行。

补充:

我为了知道jdk1.8给我自动设置的path里面有什么,所以打开了C:\ProgramData\Oracle\Java\javapath,查看,这里ProgramData文件夹是被隐藏的,在查看里面打开显示隐藏文件即可。java.exe,javaw.exe,javaws.exe。很明显没有javac.exe,说明了配置环境变量的时候没有配javac编译器,在没有javac的情况下,在拥有以上3种exe的情况下是可以运行eclipse,那我们可以知道javac是仅仅存在于jdk(下文中的jdk均指小字母的jdk,JRE均指大字母的JRE(在目录结构图中声明了))中的,意思就是说在没有jdk的情况下也是可以运行eclipse的,于是我卸载掉jdk,然后仍然可以打开eclipse,并且可以正常开发java和运行java,那么我们知道JDK其实是开发java必不可少的,所以只有一种可能,那就是eclipse自带有自己的jdk,不需要我们额外安装jdk。而不存在自己自带的jre,因为没有jre的环境变量是报错了的。jdk是用于开发的,jre是用于运行的,所以得知eclipse提供了自带的jdk开发工具,但没有提供对应的运行环境jre。具体的java.exe,javaw.exe,javaws.exe的区别。接着跑题到这三者的区别。
Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作
参考博客https://blog.****.net/topwqp/article/details/8595936 叙述这三者的区别和共同点

补充2

java.exe用于启动window console 控制台程序

javaw.exe用于启动 GUI程序

javaws.exe用于web程序。

jvm.dll就是java虚拟机规范在windows平台上的一种实现

细节实现参考上面的博客即可,这里我再具体解释一下:

java.exe 这个进程出现的情况,是要满足一个条件即可,那就是使用控制台执行,并且输入的命令是:

​ java xx 如java helloWorld

javaw.exe 这个进程出现的情况是,只需要满足一个条件即可,在Eclipse中运行java程序的时候。(当使用控制台运行这个命令 注意是javaw.exe命令,而不是java.exe命令 : javaw hellWorld 进程中也只有javaw.exe)

javaws.exe 这个进程出现的情况是,当你在做web项目的时候会用到。

回归正题

​ 之后我又删除了Path环境变量,琢磨是不是可以在启动Eclipse之前通过某种配置跳过这种启动前检验(运行错误,一般是缺少参数,或者路径不对,或者环境问题,很明显这里是路径环境问题),所以就打开了Eclipse文件夹下的Eclipse.ini文件,将里面的配置进行了更改,更改操作如下:
Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作
​ 在-vmargs 参数的前面,一定是前面,添加如下代码:C:\Program Files\Java\jre1.8.0_131\bin\javaw.exe,只要添加你所对应的javaw.exe对应的路径即可。这里为什么加javaw.exe而不加java.exe,通过上面的具体解释,自然而然就可以想明白了,因为我们用的eclipse,而eclipse执行java,用到的就是javaw.exe而不是java.exe,java.exe只有在控制台使用java命令的时候才会被启用。当然本质上javaw和java是一样的。

​ 在实际开发中,大多数开发者是不会使用控制台命令行java.exe去测试运行代码的,而是通过集成开发工具,所以配置java.exe的环境变量可以有可以无。而为什么jdk1.8会为我们自动配置Path环境变量呢?究其原因,就是为了方便开发者,因为我们的开发工具或者开发条件可能随时改变,可能有时候就觉得控制台的方式更快一些,那配置了环境变量就有其用途了,而且javaw.exe,javaws.exe也是同样的道理,配置好是为了在开发更方便,不易出错,当然不配置也是可以的。所以我的建议呢,就是要配置Path环境变量。

IDEA开发工具

​ IDEA在启动之前没有检查jre环境的,它呢,是在启动IDEA之后,创建工程设置选项那里直接配置的jdk(为什么是小jdk呢,因为小jdk里面就有jre的,可以看文件目录结构),所以说IDEA没有自带的JDK,也没有自带的JRE,所以在我们设置JDK,JRE的时候,IDEA也将自动将java.exe,javaw.exe,javaws.exe设置在了相关配置里面以达到Path环境变量的作用,这也就是IDEA在不设置环境变量的情况下也可以正常运行java程序的原因了。

总结

​ Path环境变量不是必须的,但是必须的是要拥有和Path环境变量一样能力(可以在任意目录下执行java.exe,javaw.exe等)的配置。建议是设置Path环境变量,因为谁也不知道下一刻会使用什么集成开发工具去开发,对于未知的集成开发工具,它去怎么调用都一无所知的情况下,设置环境变量就可以起到很大的作用力了,因为你只要设置了Path环境变量,那以后不论换什么开发工具,都不需要去考虑此刻用的开发工具有没有对jre进行默认配置什么的了。说白了,配置了Path环境变量之后,集成开发工具,打开开发即可。当然还有一个好处就是有时候想用控制台执行也是可以的。