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

深入理解 Java JDK、JRE 和 JVM:原理与区别

目录

引言

Java 的核心技术

Java Development Kit (JDK)

Java Runtime Environment (JRE)

Java Virtual Machine (JVM)

JDK、JRE 和 JVM 之间的关系

实践案例

示例一:简单的 Java 程序开发流程

示例二:使用 JVM 的高级特性

结论


引言

在当今这个数字化时代,Java 作为一种广泛使用的编程语言,其重要性不言而喻。无论是企业级应用、移动应用还是桌面应用,Java 都扮演着至关重要的角色。为了更好地理解和利用 Java 技术,深入探讨 Java Development Kit (JDK)、Java Runtime Environment (JRE) 和 Java Virtual Machine (JVM) 的工作原理及其相互之间的关系是十分必要的。

Java 的核心技术

Java Development Kit (JDK)

定义与组成

  • 定义

    ​ JDK,全称Java Development Kit,即Java开发工具包。顾名思义,JDK是用于Java开发的一套工具包,里面包含了Java的编译器javac、Java程序打包工具jar、Java程序运行环境JRE、文档生成工具javadoc以及很多用于开发的工具,如调试工具jdb等。JDK是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。

    ​ JDK是java开发工具包,在其安装目录下面有六个文件夹、一些描述文件、一个src压缩文件。bin、include、lib、 jre这四个文件夹起作用,demo、sample是一些例子。可以看出来JDK包含JRE,而JRE包含JVM。

  • 组成
    • Java 编译器 (javac):将 .java 文件转换成 .class 文件。
    • Java 运行时环境 (JRE):包含 JVM 和标准类库。
    • 文档生成工具 (javadoc):从源代码中提取注释生成 HTML 格式的文档。
    • 打包工具 (jar):用于打包相关的类文件、资源文件等。
    • 调试工具 (jdb):帮助开发者调试 Java 程序。

使用示例

# 编译 Java 源文件
javac HelloWorld.java# 运行编译后的 Java 程序
java HelloWorld

Java Runtime Environment (JRE)

定义与功能

JRE,全称Java Runtime Environment,即Java运行环境。JRE是运行Java程序所需的环境,包括JVM以及Java类库等。JRE是Java程序运行的实施场所,同时也提供了运行Java程序所必需的库文件。

光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。

​ 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等, 如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

使用场景

  • 对于普通用户或服务器上运行 Java 应用程序的情况,安装 JRE 即可满足需求。

Java Virtual Machine (JVM)

定义与工作原理

​ JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
​ 可以理解为是一个虚拟出来的计算机,具备着计算机的基本运算方式,它主要负责将java程序生成的字节码文件解释成具体系统平台上的机器指令。让具体平台如window运行这些Java程序。

性能优化

  • 即时编译 (JIT):将频繁执行的字节码编译成本地机器码,提高执行效率。
  • 垃圾回收 (GC):自动管理内存,回收不再使用的对象。

JDK、JRE 和 JVM 之间的关系

  • JDK 包含 JRE:JDK 是一个完整的开发环境,其中包含了 JRE。
  • JRE 包含 JVM:JRE 提供了运行 Java 程序所需的环境,其中包括 JVM。
  • JVM 是核心:无论是在开发过程中还是在运行时,JVM 都是执行 Java 字节码的核心组件。

实践案例

示例一:简单的 Java 程序开发流程

  1. 编写源代码:创建 HelloWorld.java 文件,编写简单的 Hello World 程序。
  2. 编译源代码:使用 javac 命令将 .java 文件编译成 .class 文件。
  3. 运行程序:使用 java 命令运行编译后的 .class 文件。

示例二:使用 JVM 的高级特性

  1. 多线程:利用 Java 的多线程特性,实现并发处理任务。
  2. 反射机制:通过反射 API 动态获取和操作类的信息。
  3. 性能调优:使用 JVM 参数调整垃圾回收策略,提升应用性能。

结论

理解 JDK、JRE 和 JVM 的概念及其相互关系,对于 Java 开发者来说至关重要。这不仅有助于我们更好地掌握 Java 编程技术,还能让我们在开发和部署 Java 应用时做出更明智的选择。


http://www.mrgr.cn/news/61597.html

相关文章:

  • SpringBoot 解析@Value注解型解析注入时机以及原理
  • 如何从PPT中导出600dpi的高清图
  • 13.音乐管理系统(基于SpringBoot + Vue)
  • 详解Linux集群技术
  • Vue学习笔记(三)
  • 【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024)
  • 创作三周年:在忙碌中寻找灵感与快乐
  • 有哪些提高英语听力的方法?实用的学习资源
  • Idea常见插件(超级实用)
  • 人工智能驱动的社交进化:Facebook的新方向
  • navstr:一个简单的字符串数据解析实现
  • C语言 | Leetcode C语言题解之第519题随机翻转矩阵
  • go的反射
  • SQLI LABS | Less-18 POST-Header Injection-Uagent field-Error based
  • 【ShuQiHere】硬盘的S.M.A.R.T.: 自我监测、分析与报告技术
  • snmpwalk样例
  • KKcms 1.32 代码审计过程
  • Python | Leetcode Python题解之第520题检测大写字母
  • Brilliant Labs CEO Bobak Tavangar揭秘:AI驱动的开源AR眼镜Frame
  • 动态类的控制
  • 交换机端口三种链路类型
  • 《贪婪算法实战:寻找最短无序连续子数组的深度解析与实现》
  • Java | Leetcode Java题解之第519题随机翻转矩阵
  • 采用STM32CubeMX和HAL库的定时器应用实例
  • 【编程语言】在C++中使用map与unordered_map
  • c语言中结构体传参和实现位段