✨放低姿态,空杯心态✨
目录
一、Java编译过程
Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节码组成的与平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时 JVM 会将字节码转换成平台能够理解的形式来运行。
Java的编译和运行离不开JDK,JDK除了提供必要的运行环境外,最主要的工具就是编译和运行,那么JDK中JVM、JRE三者的关系如何?
二、JDK/JVM/JRE关系
✅ 什么是JVM?
答:JVM是一种用软件模拟出来的计算机,用于执行JAVA程序,有一套严格的技术规范,是JAVA跨平台特性的依赖基础,JAVA虚拟机有自己想象的硬件,如:处理器、堆栈、寄存器等,还有相应的指令系统。JAVA虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
✅ JDK中JVM、JRE三者的关系如何?
答:JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译 器javac与自带的调试工具Jconsole、jstack等。
JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程 序运行的所需环境。 JVM:Java虚拟机,运行Java代码
三者之间关系:
JDK是Java开发工具,它不仅提供了Java程序运行所需的JRE,还提供了一系列编译,运行等工具,如javac 、Java 、Javaw等。JRE只是Java程序的运行环境,它最核心的内容就是JVM及JavaSE核心类库
✅什么是字节码?采用字节码的好处是什么?
答: 在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。
所以, Java 程序运行时相对来说还是高效的(不过,和 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行,即java的跨平台性。
✅ Java和C++在编译和运行上有什么区别?
答:对于C/C++源文件,此类语言都是把源码直接编译成计算机可以认识的机器码,如.exe.dll之类的文件,然后再运行。
对于Java源文件,需要用javac命令把源文件编译成class文件(字节码文件),这些字节码文件需要放在JVM(Java虚拟机)下运行,而JVM有多个平台版本,因此Java具有跨平台性,而C++没有。
三、JDK环境变量的配置
1)找到系统变量,新建一个。变量名JAVA_HOME(代表你的JDK安装路径),值对应的是你的JDK的安装路径
2)继续在系统变量里面新建一个CLASSPATH变量,其变量值如下图所示(此处需要注意:最前面有一个英文状态下的小圆点):
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
3)在你的系统变量里面找一个变量名是PATH的变量,需要在它的值域里面追加一段如下的代码:
%JAVA_HOME%\bin; %JAVA_HOME%\jre\bin;
最后点击确定,此时JDK的环境变量配置就完成了。
验证:WINDOWS+R键,输入cmd,进入命令行界面,输入java -version命令,可以出现如下图的提示,你可以看你安装的JDK版本,若如图所示 显示版本信息 则说明安装和配置成功。
注意:如果使用过程当中JDK的路径发生了变化,一定要去重新修改环境变量
✅环境变量CLASSPATH和PATH 的作用是什么?
答:
-
CLASSPATH环境变量保存的是一些目录和jar文件的地址,这些路径是为JAVA程序在编译和搜索类而使用的,也就是为JAVA程序所依赖的接口类指定一个搜索路径。
-
将%JAVA_HOME%\bin添加到PATH路径, 我们则可以在任何路径下直接用java来执行命令了,操作系统会在当前目录和PATH变量目录里查找相应的应用程序, 并且执行。
💖如果文章对你有帮助,请多多点赞、收藏、评论、关注支持!!💖