深入分析JDK的安装与配置
作者:ithuangqing
来源:编码之外
链接: https:// url.cn/5RwjiMt
我们在前两篇文章中分别向大家通俗易懂的介绍了什么是Java,以及有关Java的一些趣事,相信你已经迫不及待的想要正式学习Java了,毕竟之前的介绍只是一些概念,并没有真的去接触Java,比如如何运行一个Java程序。
那么,如何运行一个Java程序呢?我们先来看一个例子:
PS:作为一个Java程序员,你一定要在初学的时候牢牢记住以下这段代码。
这是非常经典的一段代码,意味着你即将开启Java的代码,进入使用Java编织的代码世界,所以这段代码一定要记住,我记得我在刚开始学习Java的时候,网上认识一个做程序员的,我跟他说我学过Java,他有点不信,我就把这段代码敲给他了,他立马说“还真的学过Java啊”,看吧,知道这段代码的作用了吧。
因为你刚接触Java,你也许并不明白上面这段代码啥意思以及为啥要这样写,没事,这个现在不重要,这个到以后我们会详细的讲解的。
实例操作运行HelloWorld
接下来我将使用最原始的方式给大家运行这段代码:
首先,我在桌面上新建一个txt文件,然后把这段代码复制进去,接着我将文件的扩展名从txt改成java(这是Java文件的扩展名),也就是这个样子:
对了,这里一定要记住,文件的名字要命名成
HelloWorld
,你暂时不用管为什么,接下来我们按住
win+r
打开Windows的运行窗口,然后在里面输入
cmd
打开我们的命令行窗口,也就是这个样子:
打开命令行窗口之后,我们在命令行输入
cd desktop
也就是进入到我们的桌面路径。这个时候我们要知道,我们刚才已经把写好的Java文件(也就是HelloWorld.java)放到桌面上了,接下来我们开始使用如下的命令去编译这个文件:
大家要注意上图中的操作,那些不仔细看的同学不要再问,
cd desktop
怎么操作的啊,图上已经很清楚了哦。
这个时候你会发现,当我们执行完上述命令之后,在文件的下方随之会产生一个
HelloWorld.class
的文件。
这个文件叫做Java字节码文件,也就是我们使用javac这个命令将HelloWorld.java编译之后生成的文件,你目前先知道这些就行,那么我们接下来继续操作,使用如下命令:
这个时候我们注意看,当执行完这个命令之后,底下随之产生了一个Hello World!的字样,这是啥,我们再回过头来看看这段经典代码:
我们是不是看到这么一句代码了:
意思可能你也猜到了,这就是在屏幕上打印出
Hello World!
以上我们就简单的演示了一下如何运行一个java程序,可能这里有跟着我的步骤操作的同学,但是你会发现,你的不行,你的操作早就出错了,这是为什么呢?
为什么我的就不行?
行了,别疑惑啦,我来告诉你怎么回事吧,你在操作的时候,当你在命令行输入:
javac HelloWorld.java
的时候,是不是出现了以下的错误:
这是为啥啊?什么不是内部或外部命令,其实啊,这个简单点说就是找不到这个javac这个命令,也是啊,你现在直接就在自己的电脑上去编译java程序,那怎么行,我们想要听歌,也要下载个听歌软件呢,所以啊,你这里是缺少运行java的一些东西了,比如这个javac命令,它其实是一个可执行程序,我们Windows上的可执行程序一般就是exe结尾的,所以这几个javac其实就是
javac.exe
看看,你电脑里是不是没有它?那怎么办?不着急,我们接下来就进行java运行环境的的搭建,也就是常规的jdk的安装与配置。
正式开始搭建java开发环境(jdk安装与配置)
想当年我在学java的时候,安装这个jdk,配置环境变量啥的,足足花了我一个周啊,其实现在也有很多人说,搭建环境什么的是最麻烦,而且容易出错的,我当时就觉得java环境变量配置这块真难,搞得我云里雾里的。
你可能会说,有问题找百度啊,百度上关于jdk安装与环境变量配置的有很多教程啊,是的,我当初也是跟着网上教程搭建的,很多就是一上来就教你如何下载,然后怎么配置,就是一顿猛如虎的操作,然后就完了,那些给你讲为啥这样做的很少,导致自己当时理解的并不是很透彻,所以经常出现小错误。
所以,在今天的这次讲解中,我不仅教你怎么操作,很多比较重要的点我也会告诉你为啥这样做,
也就是不仅知其然,还要知其所以然!
jdk和jre是个啥
那么jdk和jre到底是个啥呢?首先你需要知道的是这俩货其实都是缩写,什么缩写呢?如下:
JRE:Java Runtime Environment JDK:Java Development Kit
就是这了,JDK就是Java Development Kit,也就是java开发者工具的意思,也就是你如果需要编写一些java程序的话,是需要这个jdk中提供的一些工具的,比如我们上面说的javac命令和java命令,那就是jdk提供的开发工具,所以说啊,如果你要开发java的话,就一定要安装JDK了。
那啥又是jre呢?jre的全名是Java Runtime Environment,意思也就是java运行时环境,这个也好理解,就是说,你虽然可以使用jdk提供的工具去开发java程序,但是如果你要是想要在你的电脑上去运行java程序的话,那就需要安装jre了,因为jre是提供了一个可以供java程序运行的环境。
另外一点需要特别说明的就是,其实jdk已经包含了jre,在你下载安装jdk的过程中就会提示你安装jre的,不过jre也是可以单独安装的,可能有人不明白,为啥jre可以提供java的运行环境呢?这里多说一点,那是因为jre中包含jvm,也就是java虚拟机,除此之外jre还包含一些java基础类库,java程序是运行在java虚拟机中的,这个你现在不理解也没事,关键你得记住jdk和jre大概是个啥。
它们之间的关系大致是这个样子的:
所以,先有个基本的认识就ok了,接下来我们开始安装JDK。
JDK的安装与配置
我们在做这个操作之前默认你之前是没有安装过的,所以我们会一步步的操作每一个安装与配置的过程,所以,你是可以跟着操作的。
我们上面大致解释了什么是jdk和jre,在正式下载安装jdk之前,我还需要补充一点额外知识,我们知道Java最初是有sun公司开发的,后俩sun公司被Oracle收购,Java也就是成了Oracle的,那么伴随Java的jdk也就从当初的sun公司跑到了现在的Oracle,要知道这才是正宗的Java啊,提供的jdk也是最原汁原味的,所以我们现在常用的jdk就是Oracle公司的。
说这个啥意思呢?那是因为jdk可不止Oracle公司一家有,其他公司可能也会去自己实现jdk,包括jre也是,不同公司都可以自己实现来满足自己的个性化业务的,好了,说这个就是为了告诉你,我们用Oracle的Java相关工具,毕竟这是主流!
下载JDK
接下来我们就去下载JDK,首先我们去搜索JDK:
然后我们点击进去,就来到jdk的下载界面:
在这个下载界面,我们看到了最新的jdk现在已经是13了,我们这里要使用的是jdk1.8,我们继续往下找,找到1.8的下载位置:
这里会不会有人不知道从哪里看Jdk的版本啊,你仔细看左上角,是不是有一个Java SE 8u231,这个就是指的jdk版本是1.8的啊,你在看看其他的,是不是有13,11,7等等,其实1.8就是8,这个只是叫法不同,在jdk1.4之前都叫什么1.X这种形式,但是到了1.5的时候,由于这个版本更新幅度很大,为了突出这个,就不叫1.5,改叫5.0了,所以后面就是6.0啊,7.0和8.0之类的,而这个0一般不读,也就是jdk8或者jdk11,不过我们依然可以叫成jdk1.8,其实就是jdk8.
好了,我们开始下载,当我们点击下载按钮之后,会出现如下的界面:
这里要注意的首先在最上方你要先“Accept”,你不接受,人家不让下载啊,点击接受之后,在下方找到自己适应的版本,比如我的是Windows64位的,我就下载最后一个,点击即可:不过这里会跳转到Oracle登录界面,需要你注册Oracle才可以下载,记得之前好像不行的,不过现在人家让注册才能下载,没办法,那你就注册一下就行了,比如我这里注册好了,我直接登录:
点击登录之后就开始下载了(如果你这里有问题搞不懂的话,可以发邮件给我,我帮你解答,我的邮件地址:ithuangqing@163.com[1])。
安装JDK
下载之后我们双击这个文件就会进入安装界面:
我们接着下一步:
到了这一步我们就需要注意几点了,首先第一点发现没有,中间那个框有个公共jre,这个公共jre是什么啊,这里你先不用管,我后面会单独说说这个的,这也是个细节问题。
另外要注意的点就是安装的位置,这里是可以更改的,不过改与不改,都是无关紧要的,但是,有两点,你必须记住:
1.安装路径中不能包含中文
2.安装的位置你一定要记住在哪,因为后面配置环境变量需要用到。
比如我这里将路径更改一下,点击更改:
这里如何改变路径内容?看图:
你可以点击上面的向下箭头展开本地路径列表去选择一个合适的路径,当然,你也可以直接在下面的路径栏中输入你要存放的路径,这里有个小细节,路径最后面要不要加上这个反斜杠呢?就是“\”,这个是要加的,那要是你忘了加怎么办,没事,当你点击确定的时候它会自动添加上,不信你试试。
点击确定之后就是这样了:
ps:为了检验大家看的是否认真,我上面故意犯了一个小错误,不过这个错误没什么影响,不知道你看出来了嘛?
紧接着,我们下一步:
这已经在开始安装了,我们等一会,不过这里对大家来说可能会有一个小问题,什么问题呢?你是不是疑惑怎么在这里不动了?
出现这个情况怎么回事啊,你看看你的桌面是不是又弹出这么一个框:
这是啥?看到jre了没,这个是让我们安装jre的,这里你先记住,这个不是jdk中包含的jre,这是一个单独的jre安装,这里也改变一下jre的安装位置,让它与jdk处在同一个层级下,方便查找使用(有些工具可能需要单独的jre)
注意这里在更改位置的时候必须为jre指定一个空文件夹,所以我这里新建了一个空的文件夹jre:(其实这里更好的操作应该是将空文件夹命名成jre的完整名字,包括版本号,这里应该就是jre1.8.0_231)
然后下一步就开始安装java了(包含jre的安装):
安装完成程序就退出了,这个时候我们去看看我们安装之后的文件夹,你还记得你把java安装到哪里了吧,我的在这里:
箭头所指的是我们刚刚安装好的jdk和jre(注意这里的命名其实不推荐,上面说过了),所以我们先把这个jre的文件名字改成jre1.8.0_231,另外上面提到过我这里有个小错误,不知道大家发现没,其实就是jdk的文件夹名称后面的应该是231,我却写成了321,现在我们来做一个统一的修改吧。
现在我们就正式把jdk和jre安装完成了,接下来我们打开jdk你会发现还有一个jre:
这个其实是jdk自带的jre,我们之前就说过jdk是包含jre的,所以在安装jdk的时候会自动把jre也给安装上的,不过我们上面是不是还单独装了一个jre,这是咋回事?
公共jre
还记得这张图嘛?
我们之前在安装的时候并没有在意这个公共JRE,那这是个啥玩意儿,我之前在学习的时候就没有注意这个,网上看的很多教程也没有讲这个,尤其是那种说傻瓜安装的,就直接告诉你下一步下一步就可以了,顶多提醒你要记住jdk的安装位置,后面要配置环境变量用。
那这个公共JRE是个啥?简单点说就是这是一个独立的JRE安装程序,如果这里你不做什么处理,那么在后续的安装过程中会提示你安装JRE,也就是这个:
其实我们的jdk已经自带jre了,安装jdk之后就已经安装了jre,不信你看:
所以,这里的公共JRE相当于另外单独装一下JRE,一般情况下是不需要的,因此我们在这里可以这样做:
点击这个公共JRE的下拉箭头,展开之后选择
此功能将不可用
,也就是成了这个样子:
这样就不会单独安装一个JRE了。这是个小细节,大家注意就行了。
配置Java环境变量
到了这里我们已经安装好了JDK(jre也以随jdk的安装而安装),接下来我们就需要去配置Java的环境变量了。
接下来我先带大家去配置Java环境变量,使得我们可以编译Java程序以及运行Java程序,至于为什么要配置,其中涉及的有些概念是什么意思以及有什么区别,我们呢暂时先不管,等我们把环境变量配置好之后,那个单独说。
首先我们先到我们下载的jdk中看一下:
这里面的文件看起来不少啊,不过作为初学者的你,目前仅仅需要了解下bin目录就行,这个bin目录中就是存放了各种开发java程序需要用到的工具集等,我们之前说的javac命令和java命令就是在这个bin目录,不信你看看:
我们要编译Java程序的话就需要使用到javac这个命令,你之前操作的不行那是你电脑中根本就没有这个命令了,当然不行了,不过你会说,现在有啦,可以了嘛?
我们来试试,打开cmd命令行窗口,然后进入到桌面,因为我们之前的代码文件是放在桌面的,接着,我们输入:
javac HelloWorld.java
好吧,还是不行,那是怎么回事啊,别着急,我们再来看下面的操作你就会明白了:
怎么样,看明白了吗?要知道为什么不行,那是你没有javac这个命令啊,那你说现在我不是已经安装jdk已经有javac这个命令了吗?这倒是不假,可是你直接在命令行去输入
javac HelloWorld.java
电脑也不知道这个javac在哪啊,所以你得去写个绝对路径才可以。就像上面那样。
可能你也想到了,这样的话就麻烦了,要写那么长,不能直接写javac就能编译吗?这个当然可以啦,这就需要进行我们常说的java环境变量配置了。
首先,我们复制javac所在的路径,其实也就是bin的路径,我的如下:
接下来我们右键点击
我的电脑
选择
属性
就来到了这里:
然后我们就进入了环境变量配置,也就是在这里:
进入到环境变量之后我们找到系统变量中的Path,然后双击就会弹出“编辑环境变量”,然后我们点击新建:
然后将我们复制的bin路径复制进去,然后点击确定即可,这里要注意,之前打开的窗口也需要都点击确定,直到所有的都关闭,这样我们就简单的把Java环境变量给搭建起来了,那我们再来试试之前的
javac HelloWorld.java
这里要注意了,之前的dos命令窗口必须关闭重新打开:
还真的可以了,你那里呢?是不是也操作成功了呢?这个看起来也挺简单的啊,那是不是也可以运行java呢?我们再来试试:
看到没,可以了,不过我上面好像除了个错误啊,仔细看是我写的太快,把单词打错了,这其实也是很多新手的一个问题,就是觉得我明明是照着做的,怎么到我这里就不行了呢?有的时候就是因为自己的马虎,说不定就是哪个单词写错了。
现在我们差不多已经把Java环境给配置好了,为什么说差不多呢?其实还有一个更有的配置,接下来我们一起来操作,这次我们不复制bin的路径了,而是复制jdk的安装路径,我的是这个:
然后我们还是之前的编辑环境变量的操作,由于跟上面的打开方式一样,我这里就不贴图了,不知道的返回上面看,首先我们在系统环境变量中点击新建变量:
在新建系统变量中,按照图中所示操作,变量值就是jdk的安装位置,变量名有人问可以改吗?答案是不能,就要命名成JAVA_HOME,然后点击确定,接着我们再双击打开Path,然后还是新建:
这里不知道有人看懂没,上面的新建系统变量其实就是个映射,这里的:
%JAVA_HOME%其实就等价于jdk的路径,后面再加上个“\bin”不就跟之前的一样了嘛,那为什么要这样做呢?因为我们后面可能还要用jdk11,那么我们这样设置环境变量的话就可以直接去更改JAVA_HOME而不用再去更改Path中的变量了,这样设置之前的那个就可以删掉了。
到此,我们就配置好Java的环境变量啦!
关于JDK的那些个概念解惑
以上我们安装了jdk,而且也配置好了Path环境变量,现在我们可以正常去编译和运行Java程序了,那么关于jdk的安装配置这就结束了嘛?当然不是,这其中还涉及很多的概念性问题,比如说什么是Path环境变量,什么是环境变量和系统变量以及classpath是什么等等,接下里我们一起再来看看。
什么是Path环境变量,为什么要配置?
Path环境变量在Windows中其实就是去记录一些可执行文件的,在Windows中的可执行文件如xxx.exe等,当我们要执行这样的一个可执行文件的话,会首先在当前路径下去寻找这个可执行文件夹,比如我们之前在桌面使用javac命令,但是桌面并没有这个命令,也就是当前路径没有,那么就会去Path路径下去找,如果Path路径下也没有的话,那就会报错。
如果我们把需要用到的命令工具都配置到(这里配置的而是工具的路径地址)Path环境变量中,那么我们就可以在任意位置去使用这个命令工具,因为虽然说我们当前路径没有,但在Path环境变量中可以找到这个命令工具的地址。
就像我们写的Java源程序,需要使用javac命令去编译,但是javac命令只能在其bin目录下才能运行,但是我们平常做开发又不能把程序保存到bin的安装目录中,所以为了让我们可以把我们的程序保存在电脑上的任意位置,那么就需要将javac设置成在电脑的任何位置都可以运行,那么怎么办呢?解决办法就是配置环境变量。
在我们没有配置环境变量之前,javac命令只存在与bin目录,所以我们想要使用javac命令,那就必须在javac所处的目录下进行,如果你在其他目录下运行javac,那也找不到javac这个命令工具啊,有人说,那不可以在你要执行的那个程序的目录下添加上jacac命令工具吗(比如说把javac.exe复制到桌面),这个还真不可行,因为java很多命令是互相依赖的,单独的一个javac是不能独自运行的,除非你再复制一个完整的jdk目录过去,但是如果你又换了一个目录呢?总不能再复制一份吧,显然这是不现实的。。
所以如果不设置环境变量而你执行程序的当前路径下又没有javac这个命令,那么操作系统是不知道你这个javac.exe在哪里,所以就无法执行,另外要知道在电脑上,当我们输入一个命令的时候,它会先搜索当前路径如果没有所需要的,那就会自动去搜索PATH变量中所指定的所有目录。
path和classpath的区别,为什么要配置class path
在有的教程中会告诉大家要在配置一个classpath,其实这个我是没有配置过的,这是啥呢?
对于Path环境变量简单来说就是告诉操作系统你所需要的命令工具该去哪里找,而classpath记录的则是一些Java类文件的位置,为啥要弄这个,设置classpath主要是为了将要使用到的一些class文件与Java中的一些类库文件关联起来,这样是为了来运行一些比较特殊的Java程序,啥是特殊的文件,比如你的Java程序使用到了一些其他的类,比如使用到了别人写的一个Java类(你的Java程序引入了该类),这个时候你运行这个Java程序的时候就必须告诉系统该去哪里找这个Java类,这个classpath就是指定这个Java类文件的地址的。可以这么简单的去理解。
另外要知道的就是path是给操作系统用的,不仅仅是配置Java相关的,其他很多也需要配置path环境变量,而classpath则不同,它专门是针对Java的,是专门用于查找一些Java类路径的。
一般来说classpath并不需要配置,像那些引用其他类的程序我们都会使用一些集成开发工具了,也即是IDE,比如IDEA和eclipse这些,它们都有相关的配置,所以你即使不配置class path也没有关系,但是你总得知道有这么个东西。
环境变量,系统变量和用户变量
简单来说,环境变量就是一个路径,当你在电脑中用到一些相关的东西的时候,电脑会自动通过这个变量指定的路径去循环找你需要的东西,我们常见的就是各种命令工具了,比如我们一直在说的javac.exe 。
系统变量是环境变量的一种,我们在设置环境变量的时候会发现有两个,一个是用户变量,一个是系统环境变量,其实这个也好理解,我们知道Windows系统可以设置多用户操作,这个用户变量只针对当前用户生效,而系统变量则是所有的用户都可以使用。
再简单点来说就是,如果说设置系统环境变量和用户环境变量的话,这都可以叫做设置环境变量,如果你设置的是系统环境变量的话,那么你这个电脑上的所有用户都可以使用,但是如果你设置的是用户变量的话,其他的用户就不能使用了。