JDK,JRE,JVM关系及JVM的作用

JVM

Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。

运行在 Java 虚拟机之上的编程语言

JVM 并不是只有一种!只要满足 JVM 规范,每个公司、组织或者个人都可以开发自己的专属 JVM。 也就是说我们平时接触到的 HotSpot VM 仅仅是是 JVM 规范的一种实现而已。

除了我们平时最常用的 HotSpot VM 外,还有 J9 VM、Zing VM、JRockit VM 等 JVM 。维基百科上就有常见 JVM 的对比:Comparison of Java virtual machines ,感兴趣的可以去看看。并且,你可以在 Java SE Specifications 上找到各个版本的 JDK 对应的 JVM 规范。

JDK 和 JRE

JDK(Java Development Kit),它是功能齐全的 Java SDK,是提供给开发者使用的,能够创建和编译 Java 程序。他包含了 JRE,同时还包含了编译 java 源码的编译器 javac 以及一些其他工具比如 javadoc(文档注释工具)、jdb(调试器)、jconsole(基于 JMX 的可视化监控⼯具)、javap(反编译工具)等等。

JRE(Java Runtime Environment) 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,主要包括 Java 虚拟机(JVM)、Java 基础类库(Class Library)。

也就是说,JRE 是 Java 运行时环境,仅包含 Java 应用程序的运行时环境和必要的类库。而 JDK 则包含了 JRE,同时还包括了 javac、javadoc、jdb、jconsole、javap 等工具,可以用于 Java 应用程序的开发和调试。如果需要进行 Java 编程工作,比如编写和编译 Java 程序、使用 Java API 文档等,就需要安装 JDK。而对于某些需要使用 Java 特性的应用程序,如 JSP 转换为 Java Servlet、使用反射等,也需要 JDK 来编译和运行 Java 代码。因此,即使不打算进行 Java 应用程序的开发工作,也有可能需要安装 JDK。

JDK 包含 JRE

先了解一下java虚拟机的由来,知道前因后果,更容易去理解:

Java 最开始是怎么来的?其实是从 C++ 上过来的,所以 Java 上面很多的面向对象特性都有 C++ 的影子。

C/C++ 最受诟病的是什么,就是指针,经常性的内存溢出。Java 说,算了,我们做个东西没有指针吧,这样程序就不会因为内存溢出而挂起退出了。得到的是经常性的空对象异常。

C/C++ 不仅仅有个编译的过程,还有一个过程叫做连接,这个也是经常出问题的地方,经常连接不上去。

不同计算机体系结构也不一样,大学应该有一门课程叫做《计算机体系结构》,主要涉及到 CPU,内存,存储,以及对字符和数字的处理上。

作者:AK不忘初心
链接:https://www.zhihu.com/question/587862948/answer/2925060289
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

Java 就说,那么这样的话连接也出问题,编译好的代码也没法用,那我就用个虚拟机,然后让这个虚拟机在所有计算机体系结构上跑吧。

这个就是 Java 虚拟机的由来,JVM 是 Java 中非常重要的概念,帮你屏蔽掉了 Java 针对硬件环境中的各种痛点和不适。

下面回归正题:

JVM 是Java平台的核心组件。JVM 的作用是执行 Java 字节码,它是一种解释器,负责执行 Java 程序。JVM 是跨平台的,因此 Java 程序可以在任何具有 JVM 的系统上运行,而无需对代码进行修改。

JVM 是一种字节码解释器,通过将 Java 程序编译成字节码,并在 JVM 上运行这些字节码来执行程序。JVM 提供了一组标准的指令集,并通过管理内存来实现自动内存管理,消除了内存泄漏的风险。

JVM 也具有很强的安全性。它限制了 Java 程序的权限,确保它不能损害系统的安全或隐私,并确保程序不能访问不属于它的资源。

此外,JVM 还提供了一组管理工具,以监控和管理 Java 程序的性能。例如,它可以监控程序的内存使用情况,并自动回收不再使用的内存,以确保程序始终保持高效。

总的来说,Java 虚拟机是一种非常重要的组件,赋予了 Java 语言其广泛使用的能力。它为开发人员提供了一组强大的开发工具和资源,并为系统提供了一种稳定、安全、高效的运行环境。同时,JVM 的跨平台性使得 Java 程序能够在多种不同的操作系统和硬件环境中运行,大大提高了其灵活性和可移植性。

另外,JVM 还支持动态优化,可以根据实际的程序执行情况进行调整和优化。这些动态优化技术可以提高程序的效率和性能,并使程序能够适应不同的系统环境。

因此,Java 虚拟机不仅是 Java 程序的执行引擎,也是一种全面的管理和优化工具。它为 Java 程序提供了完善的运行环境,使程序能够在不同的平台上高效、稳定地运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值