一图解释JDK,JRE,JVM,源程序,字节码文件关系。JDK1.8安装与环境变量配置与Java初识。已有其他版本JRE情况下安装JDK1.8(JDK8.0)注意事项。各解释器java.exe一样吗?


前言

初识Java和JDK1.8安装过程记录,尝试总结一些规律,产生一些经验和疑惑。


一、Java

Java是一门面向对象语言,且有只需编译一次即可跨平台运行的好处。但是要是想要实现“编译一次,到处运行”的目标需要Java运行环境即JRE(Java Runtime Environment)才能运行字节码(文件后缀.class)文件,而想要将我们用高级语言写的Java源文件(文件后缀.java)编译成Java虚拟机即JVM(Java Virtual Machine)Java解释器(Java.exe)能运行的字节码文件(文件后缀.class),需要Java开发环境JDK(Java Development Kit)提供的编译器。(关系见下图)Java SE是Java标准平台,它可以提供JDK,用该平台可以开发Java桌面应用程序和低端的服务器应用程序。除此以外还有企业平台Java EE。作为初学者可以先用Java SE提供的JDK进行Java学习。

下图为网上找的C语言的从产生到可执行的过程

 可以与Java的进行对比 (图中红字有误

更正我上图一个错误哪个解释器解释字节码运行与环境变量配置顺序有关,详见文尾环境变量配置为什么要删掉先前的单独安装JRE自动配置的Path值

按照大部分网上的环境变量配置顺序若是在命令提示符窗口运行则其实应该是JDK中的解释器先起作用或者是单独安装的JRE中的解释器(java.exe)先起作用

Java正是由于有了各种平台(Windows,Linux,安卓...)上的JVM(用于不同平台的JVM不同,每个JVM相当于一个操作系统,字节码在解释器的解释下变为JVM可识别的机器码),源程序只需编译一次产生的字节码文件就可以在各平台上的JVM运行。

而C语言在Windows平台上走一遍编译流程产生的可执行.exe文件并不能在Linux上运行(因为两个平台的上的相同机器码表达意思不同),所以得在Linux下再走一遍整个编译流程产生Linux平台下的可执行文件。

二、JDK1.8安装

1.官网下载

各版本Java SE、Java EE、Java ME下载地址

注意JDK8.0(即JDK1.8)与JDK18不同 关于为什么还在用老版本JDK8所以建议使用JDK8或JDK17

JDK8或者JDK1.8是由于自从JDK1.5/JDK5命名方式改变后遗留的新旧命令方式问题。所以JDK8或者JDK1.8也是同一个东西。

选择你要的版本 

选择你要的小版本,注意是下载的是jdk不是jre,我系统是64位所以下x64的。Java17以前的版本下载时需要同意一个许可协议,而且需要注册和登录Oracle账号。

创建账户,除了邮箱收个验证信息,其他可以瞎填 

2.安装

 下载后如图所示,运行.exe。点下一步,点击 更改 可以选择jdk的安装路径(路径应避免中文和空格,最好只含英文和_),选好后点下一步

然后会弹出下图窗口,这是在选择一个JRE的安装路径,这个JRE与JDK同版本,而且注意这不是JDK下面包含的那个JRE。相当于独立于JDK单独新装的JRE。

这里我就按照默认路径安装了。安装好就可以查看一下是否安装到预想的位置了。

这里有两个jre是因为由于我之前已有单独安装的JRE(jre1.8.0_361是之前单独安装的)。351是这次安装的。

jdk也安装到我选定的路径了。

但是现在的jdk下的各种功能还不能被命令提示符在任何时候都找到。所以还有下面步骤

3.环境变量配置3个

环境变量在设置-系统-高级系统设置里找到,如图建议更改系统变量,因为用户变量更改只作用于单个用户。如图可以看到系统变量分为变量名和。先按如下步骤操作,待会解释我们做的事情。

第一,新建一个变量名为JAVA_HOME的变量,值为JDK安装到的地方。

还记得自己选择的JDK安装路径吗

 

 新建或编辑完了记得点确定以保存更改。

第二,Path中添加JDK的bin文件夹到变量值

最终结果如下图

 

但是如果以前安装过其他版本的JRE此时要注意,如果没有上移新的JDK目录\bin,则此时命令提示符窗口运行java -version发现还是之前361版本,命令提示窗口还是找的是之前单独安装的JRE自动配置的环境变量下的java.exe

解决办法如下图 

 

JDK目录\bin下的文件,注意解释器java.exe为351小版本。除此之外还有好多其他应用比如javac,jconsole......功能相较于JRE\bin更齐全,所以把它写进Path值里,当然如果需要JRE或其他文件夹下的某些特殊功能也可以仿照JDK的\bin文件夹添加方式往环境变量Path里加值

 如上图,根据环境变量设置里现在这个JDK目录\bin下的解释器会被先被命令提示窗口找到

  

结合上面三张图片的MD5值和文件路径可以看出,361版解释器与351版解释器不同,而且361版单独安装的JRE安装目录\bin下的解释器和它自动生成Path值路径下的解释器是相同的拷贝。351版JDK安装目录\bin下的解释器与351版JDK安装器安装的JRE中的解释器在大小上有不同,而跟JDK自身包含的JRE中的解释器大小上虽然相同但竟然也有差异?注:修改时间变化不会引起MD5变化。 

第三,与JAVA_HOME同理,新建一个classpath变量名如图填变量值

 点击确定保存更改

最后一定要新开一个命令提示符(已经打开的命令提示符窗口还未应用新的环境变量配置)分别输入java,java -version,javac,jacac -version命令,注意核对版本号是否与预期一致。

配置环境变量的解释

当命令提示符窗口执行指令或运行程序时会先在当前所在目录下查找(比如C:\Users\12345>              ‘>’之前的就是显示当前所在目录),如果查找不到该命令或文件就会去环境变量Path声明的目录中查找,所以当Path里添加了某文件的路径后在任何没有它的目录下也可以运行它。Path中添加过大过多的目录可能导致开机或命令提示符窗口打开速度变慢。那么只需将G:\Java\jdk1.8.0_351\bin(即JDK安装目录\bin)添加到Path中不就可以让命令提示窗口找到\bin下的java.exe和javac.exe.....(大部分常用命令位于JDK的bin目录下),为什么还要配置一个JAVA_HOME的变量名变量值为G:\Java\jdk1.8.0_351(即JDK安装目录)?原因一个是便于JDK版本更新时只需要改JAVA_HOME的值到新版本的JDK目录位置就可以同时改变%JAVA_HOME%\bin(Path中Java编译器和解释器等等JDK\bin下的内容所在的目录)和%JAVA_HOME%\jre\lib\tr.jar;.;(classpath的值,classpath可以帮助Java找到要加载的正确的类库版本,值应该是JDK包含的自带JRE的lib文件夹下,JDK1.5之后其实不必再配置该值也能正常运行)的值,另一个更重要的原因是一些Java相关开发工具(Eclipse,Tomcat,Maven,JMeter)约定俗成的会去引用JAVA_HOME这个变量名下的值,如果JAVA_HOME变量不存在也就是你没有配置,这些工具就会报错无法使用。

如有还有疑问可以参考

Windows版Java17开发环境搭建 环境变量配置与旧版稍有不同解释详细

为什么配置环境变量需要JAVA_HOME JAVA_HOME的必要性

Java开发环境,同时安装jdk和jre 简洁明了解释3个变量的配置及原因

jdk与jre版本冲突错误 JDK与JRE版本冲突问题实例

JDK8安装配置教程 环境变量原因解释

Windows系统环境变量path详解  关于Path等环境变量配置这篇文章比我解释的更清楚

JDK及JRE目录结构

 新人难免有许多错误,欢迎各位质疑并指正我的问题。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值