Java 组件(JRE、JDK、JVM、JIT 和 javac)之间有什么区别?

2024-03-20

我很难理解两者之间的区别JVM(Java虚拟机),JRE(Java运行时环境),JDK(Java 开发工具包),JIT(即时编译器),以及javac(Java 编译器)。

所有这些之间的良好比较和对比是什么?


您可能已经在 google 上搜索了很多次来找到这个问题的答案,并且发现了一个非常无聊的图表,显示了 JVM、JRE 和 JVM 之间的架构和相互关系。我花了将近一年的时间才从实践上(而不是理论上)理解它。

让我们找出这个简单(但非常重要)问题的答案:

什么是 JDK、JRE 和 JVM?

JDK:- Java开发工具包(简称JDK)是提供开发和执行(运行)Java程序的环境的工具包。例如。您(作为 Java 开发人员)正在您的计算机上开发会计应用程序,那么您的计算机需要什么来开发和运行这个桌面应用程序?为此,您将需要 J-D-K,为此您只需前往 sun 或 oracle 的官方网站将最新版本的 JDK 下载到您的计算机中。

因此,JDK是一个工具包(或包),其中包括两件事:i)开发工具(提供开发java程序的环境)和ii)JRE(执行java程序)。 JDK仅供Java开发人员使用。

JRE:- Java运行时环境(即JRE)是一个安装包,它提供仅在您的计算机上运行(而不是开发)java程序(或应用程序)的环境。例如(继续相同的示例)在开发会计应用程序后,您希望将此应用程序运行到客户的计算机中。现在,在这种情况下,您的客户只需要在他/她的机器上运行您的应用程序,因此您的客户应该安装 JRE 以便在他/她的机器上运行您的应用程序。

因此,JRE 仅供只想运行 Java 程序的人使用,即系统的最终用户。

JVM:- Java 虚拟机(JVM)是​​ JDK 和 JRE 中非常重要的一部分,因为它包含或内置在两者中。无论你使用JRE或JDK运行什么java程序,都会进入JVM,JVM负责逐行执行java程序,因此它也被称为解释器(我们稍后会讨论解释器)。因此,您不需要将 JVM 单独安装到您的计算机中,因为它内置于您的 JDK 或 JRE 安装包中。我们很快就会探索更多关于 JVM 的内容。

最后,在了解了java的所有三个主要部分之后,您可以看一下上图,以清楚地了解java所有主要组件之间的架构和相互关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 组件(JRE、JDK、JVM、JIT 和 javac)之间有什么区别? 的相关文章

随机推荐

  • 为什么在尝试更新 OData 服务时 HttpWebRequest.GetResponse() 会挂起?

    我正在用 C 编写一个 OData 消费者 我可以成功删除一个条目 但由于某种原因 当我尝试更新时 它只是挂起 冻结在 GetResponse 上 它甚至忽略了我的超时 下面是我的测试代码 有什么明智的建议吗 XDocument doc X
  • 在 C 中取消引用字符串文字有什么影响?

    include
  • 在移动设备上拖放 HTML

    当您使用JavaScript向网页添加拖放功能 例如jQuery UI可拖放 时 如何在通过移动设备上的浏览器查看时使其发挥作用 在移动设备上 触摸屏的拖动操作会被拦截手机用于滚动页面等 欢迎所有解决方案 我最初的想法是 为移动设备提供一个
  • scriptcs - 无法读取包

    我关注了一个博客文章 http inaspiralarray blogspot com 2013 08 scriptcs in two minutes html只需两步即可运行 scriptcs 基本上 我是这样做的 powershell
  • 删除不在引号内的哈希注释

    我正在使用 python 来浏览文件并删除所有注释 评论被定义为散列及其右侧的任何内容只要哈希值不在双引号内 我目前有一个解决方案 但它似乎不是最佳的 filelines r re compile for line in f m r spl
  • 如何在 vscode 中将 .css 文件解析为 PostCSS?

    我在项目中使用PostCSS CSS文件的扩展名是 css所以当我打开一个时 它会指示一堆错误 由于 PostCSS 的语法 我已经尝试安装stylelint PostCSS syntax扩展等等 但没有任何效果 如果我将扩展名更改为 sc
  • 对话框中按钮的自定义放置 - jquery ui

    我想将添加到对话框的按钮移动到顶部或左侧 我正在使用 jquery ui 如何做到这一点 添加 ok 后 它会显示在最右端 可以将其放置在周围吗 function dialog message dialog modal true resiz
  • 使 Flexbox 上下颠倒换行

    今天 我正在查看我构建的 选项卡 HTML gizmo 我注意到由于我使用 inline block 来布局选项卡标题 当它们包装时 我会得到如下所示的输出 Apple Banana Cherry Date Elderberry Fig G
  • 使用 Gulp 将 browserify 模块设为外部

    我有一个图书馆lib js我想从中创建lib a js and lib b js并能够从脚本中使用它client js using var a require lib a js 当我只包含已编译的内容时它就可以工作lib js之前的图书馆c
  • 在 Google Apps 脚本中比较日期范围与今天的日期

    我希望使用这篇文章作为参考 将从电子表格中提取的日期与今天的日期进行比较 如何使用 Google Apps 脚本将日期与电子表格进行比较 https stackoverflow com questions 14350671 how do i
  • 访问派生类中的基类成员

    我有一个简单的课程如下 class A protected int x class B public A public int y void sety int d y d int gety return y int main B obj o
  • JetBrains Toolbox 应用程序在 Windows 上为空白

    我在 Windows 10 上安装了 JetBrains Toolbox 应用程序 但是当我启动它时 它只显示一个空白边框 如下所示 我尝试重新安装它但仍然不起作用 有人知道如何解决这个问题吗 看起来类似于ALL 1419 https yo
  • 那么如何通过终端打开Android SDK Manager呢? [复制]

    这个问题在这里已经有答案了 我已经将 CD 放入终端中的 android 工具目录中 我尝试输入 android 并按回车键 我也尝试输入 android sdk 并按回车键 但 sdk 管理器不会出现 有什么解决方案或建议可以帮助我了解我
  • HTML5 Canvas 形状从圆形到三角形

    我一直在环顾四周 似乎找不到一种清晰的方法来使形状从圆形变为三角形或矩形或相反 我假设我可以以某种方式存储形状并更改其属性以转换它 基本上我要问的是 如何绘制一个圆形 然后单击按钮将其动画化为三角形 画布形状可以吗 Thanks 您可以使用
  • “启动失败。未找到二进制文件。” Snow Leopard 和 Eclipse C/C++ IDE 问题

    不是问题 我刚刚在互联网上搜索了这个问题的解决方案 并认为我会与 SO 的好人分享 我会用通俗易懂的语言来表述 以便新手也能理解 如果这是错误的地方 我们深表歉意 只是想提供帮助 几乎所有尝试使用 Eclipse C C IDE 的 OS
  • 扩展现有协议以符合另一个协议

    你好 我的目标是扩展 在 swift 3 中 我在框架中拥有的协议 以符合另一个协议 protocol SomeProtocol protocol SomeOtherProtocol extension SomeOtherProtocol
  • R:绘制 igraph 时选择性显示节点

    如何绘制 igraph 节点的选择 我有一个现有的图表 但它太复杂了 我希望能够 放大 节点的子集 我能够删除边缘的子集 但我不知道如何 关闭 孤立的节点 当使用network包 该displayisolates FALSE参数执行此操作
  • Typescript 类可以实现可调用接口吗?

    Typescript 接口允许定义函数风格的调用签名 因此 interface A x number number 这可以通过例如一个函数 const a A function x number number return 1 是否可以使用
  • 如何以编程方式绑定 DataTemplate 内控件的(依赖项)属性?

    The TextBlock居住在一个DataTemplate 因此我无法通过其名称来引用它 那么我该如何绑定它 例如 Text以编程方式属性 XAML
  • Java 组件(JRE、JDK、JVM、JIT 和 javac)之间有什么区别?

    我很难理解两者之间的区别JVM Java虚拟机 JRE Java运行时环境 JDK Java 开发工具包 JIT 即时编译器 以及javac Java 编译器 所有这些之间的良好比较和对比是什么 您可能已经在 google 上搜索了很多次来