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

深入理解 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.kler.cn/a/371295.html

相关文章:

  • 项目1 yolov5鱼苗检测计数
  • 玩转Docker | 使用Docker部署捕鱼网页小游戏
  • OpenHarmony4.0配置应用开机自启
  • Openlayers高级交互(8/20):选取feature,平移feature
  • 机器学习之数据预处理
  • 【STM32篇】4988驱动步进电机
  • OpenCV视觉分析之目标跟踪(4)目标跟踪类TrackerDaSiamRPN的使用
  • 电脑怎么设置开机启动项?Win11设置开机自动启动程序教程!
  • FastJson
  • 渲染集群服务器如何搭建
  • 微服务电商平台课程三:基础环境搭建
  • C语言中的位操作
  • Nginx配置基于端口的 Web 服务器
  • [面试题]ES6 Javascript
  • Diving into the HAL-----HAL_GPIO
  • Elasticsearch 向量搜索
  • Java学习笔记(十)
  • golang版本工具GVM 和包管理工具go mod原理讲解
  • 17 Docker容器存储架构:docker存储持久化-bind mount
  • 计算机视觉-Harris特征点检测实验报告
  • c++11新语法(上)
  • Python bs4 结合 Scrapy,进行数据爬取和处理
  • 利用游戏引擎的优势
  • windows 驱动实例分析系列: NDIS 6.0的Filter 驱动改造(四)
  • Educational Codeforces Round 171 (Rated for Div. 2)(A~D题题解)
  • ChatGPT、Python和OpenCV支持下的空天地遥感数据识别与计算——从0基础到15个案例实战