写点什么

JDK、JRE、JIT、SDK、JVM 的区别你是否了解?

发布于: 2021 年 01 月 13 日
JDK、JRE、JIT、SDK、JVM的区别你是否了解?

JDK(Java Development Kit 开发工具包)

JDK(java development kit)是 JRE(Java 运行时环境)的超集,它包含 JRE 所拥有的一切以及编译器、调试器等开发工具。


JRE(Java 运行时环境)

JRE(Java 运行时环境)提供 JVM(Java 虚拟机)运行的环境。JRE 包含 JVM、类库和其他文件,不包括编译器和调试器等开发工具。

这意味着,您可以在 JRE 中运行代码,但不能在 JRE 中开发和编译代码。


JVM(Java 虚拟机)

JVM(Java 虚拟机)通过使用 JRE 提供的类、库和文件来运行程序。JVM 能够运行用 Java 和其他语言编写的程序,也可以编译成 Java 字节码。例如 Jython、Jruby、Closure、Apache、Groovy、Kotlin 等。


现在讨论了用于 JVM 的术语。

类加载器

类加载器读取.class 文件并将字节码保存在方法区域中。

方法区

方法区域保存.class 文件的类级信息。JVM 只有一个方法区域,在所有类之间共享。

堆是分配对象的 JVM 内存部分。JVM 为每个.class 文件创建一个对象。

栈是 JVM 内存部分,但与堆不同,它用于存储临时变量,即方法参数。

PC 寄存器

PC 寄存器用于跟踪已执行的指令和将要执行的指令。因为指令是由线程执行的,所以每个线程都有一个单独的 PC 寄存器。

JIT 编译器

JIT 也称为即时编译器。调用方法时使用。JIT 将被调用方法的字节码编译成本机代码。当一个方法在本机代码中编译时,JVM 直接调用该方法的编译代码,而不是解释它。

本机方法堆栈

用于访问虚拟机的运行时数据区域的本机方法。

本机方法接口

它使 java 代码能够在 C 或 C++中用本地应用程序调用或调用。本机应用程序是特定于系统硬件和操作系统的低级语言程序。

垃圾收集

通过 JVM 使用垃圾收集进行自动内存管理。它从堆中销毁未引用的对象,以便为新对象分配更多内存。

JDK 体系结构和 API 的详细信息

在这个图中,您将了解这些库和 API 是如何分布在不同的级别上的。


API 和方法的区别

API(application programming interface)接口,世界上其他地方都能看到并使用。方法可以是公共接口的一部分,也可以不是。但是 API 执行一组方法。

在 java 中,api 通过接口提供,接口实际上是一组公共方法。API 具有类似于契约的方法签名和返回类型。

例如,list api 提供不同的方法签名和预期结果作为返回类型,以便您可以根据自己的方便使用。

JDK 与 SDK 的区别

JDK(Java 开发工具包)是 SDK(软件开发工具包)的扩展子集。

  • JDK 包括用于开发、调试和监视 Java 程序的工具。它主要负责 Java 程序的编写和运行。

  • SDK 由与 Web 应用程序或移动应用程序相关的额外软件组成,如应用服务器、文档、调试器、代码示例、教程、GlassFish 服务器、MySQL 和 IDE Netbeans。

原文链接:http://javakk.com/1295.html

如果觉得本文对你有帮助,可以关注一下我公众号,回复关键字【面试】即可得到一份 Java 核心知识点整理与一份面试大礼包!另有更多技术干货文章以及相关资料共享,大家一起学习进步!


发布于: 2021 年 01 月 13 日阅读数: 24
用户头像

领取资料添加小助理vx:bjmsb2020 2020.12.19 加入

Java领域;架构知识;面试心得;互联网行业最新资讯

评论 (1 条评论)

发布
用户头像
JDK、JRE、JIT、SDK、JVM 的区别你是否了解?
2021 年 01 月 13 日 16:06
回复
没有更多了
JDK、JRE、JIT、SDK、JVM的区别你是否了解?