1 有用没用先扯几句
这里主要说明一下为什么我要写这篇,没有兴趣的可以直接从第2部分开始看
说实话,之所以会写这篇,主要原因是我一个android开发,突然想写点服务端代码玩玩,结果Spring Boot 3.0 M1 发布,正式弃用 Java 8,最低要求 Java 17,很显然我个人电脑里没有这个版本,虽然也是有年头的程序员了,还是习惯性下百度一下,结果就是:
都是各种我并不是很需要的推荐,仔细想想,可能是我输入的内容不严谨,修改一下
java17下载
好吧,还是没有,我再进一步完善一下搜索描述:
java17官网下载
显然,是一个官网都没有,手欠的我又去其他搜索引擎搜索了一下:
搜索引擎排行榜
国内的:
搜狗搜索
360搜索
国外的:
bing
这里没有崇洋媚外的意思,也不做任何引导,只是看了上面的排行榜,大多数新人想要查找资料,使用的引擎分布大概也是差不多的比例。这里就不列举每一个跳转后的是什么网站了,也不能说完全得不到我们想要的结果。只能说很难去分辨是不是我们需要的版本,或者在下载之后有没有被捆绑一些我们或许并不需要的内容,至少我个人刚入行的时候,没少吃这个亏,就算都能找到满足我们需求的内容,有时也要消耗一些时间成本去筛选。
狗头保命
所以专门写一篇文章记录一下,如果能帮助到大家最好,帮不上忙,我以后自己下载版本的时候,也能有个地方方便自己找java官网下载地址。
2 下面进正文
2.1 当前新的免费版
官网下载地址:https://www.oracle.com/java/technologies/downloads/
java 最新版本windows下载路径:
可以看到当前页面给出了两个java版本,分别是17和19,这两个版本的共同特点就是统统免费,至于用17还是19就根据个人的需要,或者项目需求来分辨了。
我这里选17的主要原因还是SpringBoot不得不升级,19因为是2022年出的,与17之间的对比网上基本没有,就暂时选择的17,而且方法知道了,其实后续换一个java版本也不难,也不用害怕安装多个java版本会有什么影响,因为一些大公司,屎山(你之前的员工编写的代码,看着不对,可一旦优化(即便你的优化逻辑没问题)就容易出大问题)过于庞大的时候,需要使用多个java版本也是很正常的事情。
2.2 历史版本
前面有提到过公司项目屎山,所以就算入职的时候下载了最新的版本,可接手公司老项目的时候,偶尔还是需要下载旧的jdk版本,不使用新版本原因如下:
- 项目会指定java版本,不匹配无法编译,如果修改了如果把配置文件提交到git上,可能会被同组同事亲切问候
- 部分旧版本的代码在新版中会过时甚至废弃,如果直接升级,可能会出现很多的警告和报错
a. 报错可能导致项目无法运行
b. 没有报错需要看公司对于项目的警告等信息有没有统计,个人有没有洁癖了
这个时候,如果没有特殊要求的时候,就需要下载历史版本,一般情况下常用的历史版本就是java7、java8、java17(因为8之后开始收费,到17才重新开始免费)。
官网下载地址:https://www.oracle.com/java/technologies/downloads/archive/
进入后页面向下滚动就能看到历史版本列表,找到项目需要的对应表版本:
以java8、windows 64位系统为例,点击后跳转到对应页面,向下滚动就能看到如下图列表,最下方是windows版本,x64是64位,x86是32位(正常来说现在很少有32位系统了)
image.png
点击图中剪头指向位置下载。
2.3 安装jdk
由于我已经安装过了,重新安装还得卸载,就偷个懒,不依次截图了。
点击下载exe文件后,打开后一直下一步安装就可以。
如果对于安装位置有要求的,点下一步需要注意一点,看到如下图页面的时候,点击“更改”自定义安装目录位置。(无论是否需要修改路径,都建议保留这个页面的截图,在文章2.4.2配置环境变量的时候需要用到这个安装目录)
2.4 配置环境变量
话痨解释一下什么是环境变量,不感兴趣可以直接看2.4.2看配置过程
2.4.1 环境变量是什么
百度百科解释如下:
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
说实话理论的我一般都看不太明白,从我个人浅显的角度尝试解释一下,有错误欢迎指正:
环境变量就可以理解成手机语音助手。
手机中有听歌、看电影、打电话等等功能,我们原本想要使用每个功能,就需要打开手机 -> 解锁 -> 找到桌面图标 -> 打开APP -> 找到对应功能。
而配置了环境变量就相当于手机装了语音助手功能(小米手机为例):
当我们想听歌的时候:小爱同学,播放《我要养一只小狗代替女朋友》
当我们想打电话的时候:小爱同学,给‘隔壁老王’打电话
如此可以让我们更便利的使用java的功能。
2.4.2 配置环境变量的原因
-
点击键盘windows按键,直接输入环境变量
image.png -
出现编辑环境变量后,直接回车即可打开对应页面
环境变量 - 配置JAVA_HOME(2.3 安装jdk 时保留的截图可以派上用场了)
3.1 如果之前没有配置过环境变量,则点击“系统变量”下方的“新建”按钮,弹出“编辑系统变量”弹窗
3.2 如果之前已经配置过环境变量,则需要找到之前配置的JAVA_HOME,双击点开,弹出弹出“编辑系统变量”弹窗
image.png
变量名:JAVA_HOME
变量值:你截图中的java的安装目录,我是放在了D盘的java目录下了
- 保存配置结果
一路点击“确定”,直到环境变量配置的所有页面都关闭掉(必须是点击“确定”关闭的,不能点“取消”或者“x”) - java环境变量是否配置成功验证
按键盘window键打开powershell
powershell
输入命令行查看java版本:
java -version
查看java版本
2.5 备注
2.5.1 为什么jdk的路径不能直接配置在path中,而是单独配置一个JAVA_HOME
答案取自:为何要配置环境变量?
因为这是Java开发过程中一个约定俗成的东西,因为Java在最开始使用的时候,是需要搭建和使用tomcat服务器的,现在也是需要的,只不过springboot集成了tomcat,不需要单独启动而已。
在tomcat中设置的变量就是JAVA_HOME,是通过这个变量去访问jdk的,因为每个人安装jdk的路径是不尽相同的,所以想要调用,只能通过变量赋值的方式提前配置好,约定大于配置,我相信都通过这句话,应该就是这个道理吧。
2.5.2 是否还需要配置classpath和path
2.5.2.1 是否需要配置classpath
答案取自:Java基础:配置环境变量(path、JAVA_HOME、CLASS_PATH)
当下版本是不需要配置的 配置是由于历史原因造成。
在JDK1.5之前,java命令要想要执行某个信息的时候需要jdk安装包中的两个类库的jar帮忙,才能完成该解释执行的功能。tools.jar和rt.jar
在JDK1.5之后classpath就不在是一个必配项了。但是如果大家要配置的话,一定记得配置当前路径。
2.5.2.2 是否需要配置path
答案取自:Java | 新版jdk不需要手动配置Path环境变量
oracle默认环境变量jdk 11 不用配置环境变量,它会自动生成环境变量
2.5.2.3 为什么在我的path中,有oracle默认环境变量了,还配置了JAVA_HOME
因为我电脑中原本安装的java版本是java 8,原本的java 8还需要在path中配置JAVA_HOME相关内容,所以当初配置了。
这次为了运行SpringBoot才升级到17的,如果不重新配置环境变量,当系统中需要使用java的时候,还会按照之前的环境变量找到java 8,而不是最新的java 17,所以我就直接把JAVA_HOME中的变量值替换成java 17的。
之所以没有删掉之前的配置模式,目的是留一个容错,需要版本降级的时候直接修改JAVA_HOME就可以,而不用重新添加JAVA_HOME以及path中的相关配置。
所以如果电脑中没有配置过环境变量,第一次安装的就是java 11以上的,可以考虑不做配置尝试一下。
如果是配置的java 11一下,例如:java 8,则需要在配置了JAVA_HOME的基础上,点开path这条环境变量添加如下两条即可
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
2.5.2.4 文章中验证是否安装成功为什么使用java -version,而不实用javac
前面列举的博客中,有使用javac验证环境变量是否配置成功的,而我博客中列举的却是java -version
首先说明一下,这两种方案,就类似前面说到的,环境变量配置就类似手机语音助手的功能,而我们输入这些命令,就类似我们让收集语音助手帮我们拨打电话或者放歌。
既然命令行成功执行,没有提示命令不存在,那就是说明环境变量配置成功了。
至于为什么我使用java -version,先对比一下分别的输出结果:
-
javac
javac -
java -version
java -version
可以看到,javac输出的结果其实就是javac命令的说明书,而java -version其实就是java版本的意思,所以可以看到输出的java版本。
其实如果尝试一下输入java命令,得到的结果与javac的结果类似
java
如果输入javac -version,得到的结果与java -version命令行的结果相似。
javac -version
所以我使用这个命令的主要目的就是查出当前的java版本,尤其是在我们需要升级java环境变量的版本的时候,可以通过这个命令查看自己是否升级成功,如果日志打印的版本与我们要得到的目标版本不通,就说明配置有问题,可以进一步调整,如今我的输出结果很显然是java 17,而不是java 8,所以就可以证明我这次升级成功了。
2.5.2.5 接上一个问题,聊聊java 和javac命令
答案来自:https://zhidao.baidu.com/question/591490608854083845.html
javac命令的作用是:编译我们编写的源代码文件,也就是.java文件,编译后得到一个.class文件。
java命令的作用是:运行我们编译后的class文件。
3 结语
总算写完了,基本是随着写随着想,废话可能有点多,望海涵。
希望对你有所帮助,如有错漏望指正。
网友评论