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

JVM、JRE、JDK关系。HotSpot。JVM规范

三者关系

总结

  • JDK=JRE+Java开发工具(编写、编译javac、调试debug、运行等)。Java开发工具包。
  • JRE=JVM+Java核心类库。Java运行时环境。
  • JVM负责将Java字节码加载到内存。负责解释或编译成机器码,并提供内存管理、垃圾回收等功能。Java运行的基础。

1. JVM(Java Virtual Machine)

  • 定义:JVM是Java虚拟机,它是Java程序运行的基础。JVM负责将Java字节码解释或编译成机器码,并提供内存管理、垃圾回收、线程管理等功能。
  • 作用:JVM是Java跨平台的关键,因为它可以在不同的操作系统上运行Java程序,实现“一次编写,到处运行”的跨平台特性。
  • 组成:虽然JVM的具体实现可能因供应商和版本而异,但通常包括类加载器、运行时数据区、执行引擎等部分。

       HotSpot是JVM的一种实现。Hotspot是Oracle公司开发的一种广泛使用的JVM实现。它以其性能优化技术而闻名,包括即时编译(JIT)编译器和多种垃圾回收算法。

2. JRE(Java Runtime Environment)

  • 定义:JRE是Java运行时环境,它包含了Java虚拟机(JVM)以及运行Java程序所需的核心类库和支持文件。
  • 作用:JRE是运行Java程序所必需的环境的集合,普通用户只需要安装JRE就可以运行已经编译好的Java程序。
  • 组成:JRE主要由JVM和Java核心类库组成。在JRE目录下,通常会包含bin(包含JVM执行器)和lib(包含Java核心类库)等文件夹。

3. JDK(Java Development Kit)

  • 定义:JDK是Java开发工具包,它包含了Java编译器(javac)、Java运行时环境(JRE)以及Java开发工具(如调试器和监控工具)等。
  • 作用:JDK是Java程序开发的核心,它提供了编写、编译、调试和运行Java程序所需的所有工具。开发人员需要使用JDK来开发Java程序。
  • 组成:JDK包含了JRE的所有内容,并增加了Java编译器和其他开发工具。在JDK的安装目录下,可以找到bin(包含编译工具javac、执行工具java等)、lib(包含Java类库)、jre(包含JRE的完整内容)等文件夹。
  •  

JDK

为Java程序的编写、编译、调试和运行提供了全面的支持

1. 编写Java程序

编写Java程序是指使用文本编辑器(如Notepad++、Sublime Text、IntelliJ IDEA、Eclipse等)或集成开发环境(IDE)来创建Java源代码文件(.java文件)。这些文件包含了Java代码,即使用Java语言编写的指令和声明。编写Java程序是软件开发过程的第一步,它涉及到根据需求设计程序结构、编写类、方法、变量等。

2. 编译Java程序

编译Java程序是指使用JDK中的javac编译器将Java源代码文件(.java文件)转换成Java字节码文件(.class文件)。这个过程称为编译。Java字节码是一种与平台无关的二进制代码,它可以在任何安装了Java虚拟机(JVM)的计算机上运行。编译是Java程序从源代码到可执行代码的关键步骤,它确保了代码符合Java语言的语法规则,并准备在JVM上执行。

3. 调试Java程序

调试Java程序是指在程序运行过程中查找并修复错误的过程。调试是软件开发中不可或缺的一部分,它帮助开发人员理解程序的行为,并找出导致程序不按预期运行的原因。JDK提供了多种调试工具,如JDB(Java Debugger)、VisualVM、Eclipse和IntelliJ IDEA等IDE内置的调试器等。调试过程通常包括设置断点、观察变量值、单步执行代码等,以便逐步跟踪程序的执行流程并定位问题所在。

4. 运行Java程序

运行Java程序是指使用JDK中的java命令(实际上是启动JVM)来执行编译后生成的Java字节码文件(.class文件)。当java命令被执行时,JVM会加载指定的类文件,并将其中的字节码转换成当前操作系统能够理解的机器码,然后执行这些机器码。运行Java程序是软件开发过程的最后一步,它验证了程序的正确性和可用性。

 

HotSpot

HotSpot是JVM的一种实现。Hotspot是Oracle公司开发的一种广泛使用的JVM实现。它以其性能优化技术而闻名,包括即时编译(JIT)编译器和多种垃圾回收算法。

 

JVM规范

JVM规范(Java Virtual Machine Specification)是由Oracle(或其前身Sun Microsystems)制定并发布的,它详细定义了JVM的行为、功能和要求,为JVM的实现者提供了一个公共的、标准化的视图。JVM规范的主要目的是确保不同的JVM实现在语义和行为上保持一致,从而实现Java程序的可移植性。具体来说,JVM规范规范了以下几个方面:

  1. 类文件格式:定义了Java类文件的格式,包括如何组织类的元数据、方法、字段等信息。这是JVM加载和执行Java程序的基础。

  2. 字节码指令集:规定了JVM能够识别的字节码指令集,这些指令是Java程序编译后的产物,JVM通过执行这些指令来运行Java程序。

  3. 运行时数据区域:描述了JVM在执行Java程序时使用的各种运行时数据区域,如方法区、堆、栈等,以及这些区域的作用和管理方式。

  4. 垃圾回收:规定了JVM中垃圾回收的行为和策略,包括如何识别垃圾对象、何时进行垃圾回收、采用何种回收算法等。

  5. 异常处理:定义了Java程序中异常的处理机制,包括异常的抛出、捕获和处理过程。

  6. 线程管理:描述了JVM中线程的创建、调度、同步和销毁等管理行为。

  7. 其他与Java程序执行相关的细节:如类加载机制、安全模型、本地方法接口(JNI)等。

JVM规范的制定和发布,为Java语言的跨平台性提供了坚实的基础。通过遵循JVM规范,不同的JVM实现可以在不同的操作系统和硬件平台上运行相同的Java程序,而无需对程序本身进行修改。这极大地简化了Java程序的开发和部署过程,降低了开发成本,提高了开发效率。

需要注意的是,JVM规范是一个不断发展的标准,随着Java语言的不断演进和新技术的出现,JVM规范也会不断更新和完善。因此,开发者需要关注JVM规范的最新动态,以便更好地利用Java语言进行开发。

 


http://www.kler.cn/a/323801.html

相关文章:

  • 单元测试、集成测试、系统测试、验收测试、压力测试、性能测试、安全性测试、兼容性测试、回归测试(超详细的分类介绍及教学)
  • ServletConfig、ServletContext、HttpServletRequest与HttpServletResponse常见API
  • 电子电气架构 --- 传统刷写流程怎么用在SOC上就不适用呢?
  • vscode中执行git合并操作需要输入合并commit信息,打开的nano小型文本编辑器说明-
  • 【C语言指南】C语言内存管理 深度解析
  • Python学习从0到1 day26 第三阶段 Spark ④ 数据输出
  • 【R语言】fs 工具功能速查
  • 【项目经验分享】深度学习点云算法毕业设计项目案例定制
  • 【JavaEE】——内存可见性问题
  • 支付宝远程收款api之小荷包跳转码
  • 画两个数的平方和的曲线
  • ECharts图表图例3
  • 【记录】Excel|不允许的操作:合并或隐藏单元格出现的问题列表及解决方案
  • el-table给列加单位,表头加样式,加斑马纹
  • 【YashanDB知识库】如何dump数据文件,转换rowid, 查询对应内容
  • 9月27日,每日信息差
  • XSS基础
  • 蓝桥杯—STM32G431RBT6(TIM定时器输入捕获频率和占空比)
  • 北斗三号多模对讲机TD70:公专网融合、数模一体、音视频调度,推动应急通信效能升级
  • Xiaojie雷达之路---doa估计(dbf、capon、music算法)
  • 通信工程学习:什么是MIMO多输入多输出技术
  • TDSQL-C电商可视化,重塑电商决策新纪元
  • 我可以通过发包拿到视频网站的视频源文件吗?
  • 软件设计之SSM(1)
  • PWM基础与信号控制
  • C++动态规划问题—第 N 个泰波那契数