JDK环境变量
JDK&环境变量
前景
昨天帮同学配置Tomcant环境变量的时候,需要查看他 JDK 的安装路径,他突然问我为什么 Java 需要安装 JDK,之前学习的 C 不需要呢,直接安装就可以编译运行了,Java 为什么这么复杂?
突然我也不清楚该怎么回答,所以今天我决定寻找其中的答案再探索一下配置环境变量是在干嘛?有什么作用?
JDK(Java Developing Kit)Java开发中的工具包
通过上网浏览,得到一下信息。
我们知道电脑的操作系统(OS)是由汇编和 C 语言写的,因此 OS 无法直接识别其他的语言,这个时候我们就需要添加一个编译环境,将其他的语言编译为 OS 能够识别的语言。
当我们在电脑编译 Java 语言的时候就需要一个翻译的平台,所以有了一个可以跨系统的 JDK,他的初步作用也就出来了。
Java的编译过程大概为:
Java 源程序 ⟶ \longrightarrow ⟶ JDK把 Java 翻译为.class 的文件 ⟶ \longrightarrow ⟶ JDK中包含的jre运行.class文件解释为中间代码 ⟶ \longrightarrow ⟶ 传送给OS(C 语言识别、汇编语言识别) ⟶ \longrightarrow ⟶ 转变为二进制
JDK是Java语言的软件开发工具包,在JDK的安装目录下面有一个jre目录,里面有两个文件夹 bin 和 lib,我们可以认为 bin 里的就是jvm(真正对Java进行编译的),lib则是jvm工作所需要的类库,jvm和lib合起来称为jre。
通俗来讲:JDK是整个Java的核心,包括了Java运行环境和Java基础的类库。
JRE (Java Runtime Environment) Java执行的环境
我们上面提到的JRE指的是Java的运行环境,包含 JVM 和 Java 核心类库。简单来说,如果你只是想要运行一个已经开发好的 Java 程序,那么只需要安装 JRE 就可以了。
JVM(Java Virtual Machine)Java虚拟的机器
即Java虚拟机,是 Java 程序的运行核心。它是一个抽象的计算机,有自己的指令集和内存管理机制。JVM 负责加载字节码文件,并将字节码解释或编译成机器码,在不同的操作系统上提供统一的运行环境,实现了 Java 程序 “一次编写,到处运行” 的特性。
环境变量
先从定义来看
环境变量是操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序将使用到的信息。可以把环境变量理解为操作系统在运行过程中能够访问的一些 “全局变量”,系统或应用程序可以通过读取这些变量的值来确定某些操作的行为或路径。
也就是说,环境变量先当与程序中的全局变量,我们配置他就是为了在任意位置都可以使用他,不需要再返回到他所在的路径下再去打开使用他。
配置环境变量的原因
1、方便程序的调用
当你安装了某个软件或者工具后,其可执行文件通常位于特定的目录下。如果不配置环境变量,每次想要使用这个软件或者工具时,都需要在命令行中输入其完整的路径。
例如,在 Windows 系统中,如果 JDK 安装在 C:\Program Files\Java\jdk1.8.0_271\bin
目录下,不配置环境变量的话,每次使用 javac
命令编译 Java 程序时,都需要输入完整路径 C:\Program Files\Java\jdk1.8.0_271\bin\javac
。而配置了环境变量后,只需要输入 javac
命令即可,系统会自动在环境变量指定的路径中查找该命令对应的可执行文件。
2、支持多个工具的协同工作
很多时候,一个软件或工具可能依赖于其他软件或工具的存在。通过配置环境变量,可以让这些软件或工具能够找到彼此所需的资源和库文件,从而实现协同工作。
例如,在 Java 开发中,一些第三方库可能需要知道 JDK 的安装路径才能正常工作,通过配置 JAVA_HOME 环境变量,这些库就可以根据该变量的值找到 JDK 的相关文件。
3、提高系统的灵活性和可维护性
配置环境变量可以将软件或工具的路径等信息集中管理,当软件或工具的安装位置发生变化时,只需要修改环境变量的值,而不需要修改所有依赖该软件或工具的程序中的路径信息。这样可以大大提高系统的灵活性和可维护性,减少因路径变更带来的错误和麻烦。
4、实现多版本软件的切换
在开发过程中,有时可能需要同时使用同一个软件的不同版本。通过配置环境变量,可以方便地在不同版本之间进行切换。例如,在 Java 开发中,可以通过修改 JAVA_HOME 环境变量的值来切换不同版本的 JDK。