当前位置: 首页 > news >正文

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。

相关文章:

  • Spring Boot 支持政策
  • 综述类论文读后报告——重庆大学《深度学习在人类活动识别中的应用综述》
  • 第一部分:网页的骨架 —— HTML
  • 【教学类-102-19】蝴蝶三色图作品1——卡纸蝴蝶(滴颜料按压对称花纹)A4横版最大号22.85CM
  • 做的一些题目的答案和自己的一些思考
  • 【WLAN】华为无线AC双机热备负载分担—双链路热备份
  • 驱动汽车供应链数字化转型的标杆解决方案:全星研发项目管理APQP软件系统:
  • Oracle 租户、用户、模式之间的关系
  • zephyr架构下Bluetooth advertising接口
  • Ubuntu20.04部署Ragflow(Docker方式)
  • Android studio学习之路(八)---Fragment碎片化页面的使用
  • MCP 协议解读:STDIO 高效通信与 JSON-RPC 实战
  • Dify + Mermaid 实现自然语言转图表
  • 第十六届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学 A 组
  • Python 实现从 MP4 视频文件中平均提取指定数量的帧
  • 大端存储与小端存储:数据存储的镜像世界探秘
  • 【昇腾】PaddleOCR转om推理
  • 二分类任务中,统计置信区间
  • Linux下终端命令行安装常见字体示例
  • Unity任务系统笔记
  • 人民日报读者点题:规范涉企执法,怎样防止问题反弹、提振企业信心?
  • 伊朗外长: 美伊谈判进展良好,讨论了很多技术细节
  • 第三款在美获批的国产PD-1肿瘤药来了,影响多大?
  • 预订假期酒店却被告知无法入住,去哪儿:对违规酒店予以处罚
  • 医改经验如何因地制宜再创新?国家卫健委“以例说法”
  • 金融监管总局:支持将上海打造成具有国际竞争力的再保险中心