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语言进行开发。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值