JVM和操作系统的关系是什么?

简介: JVM和操作系统的关系是什么?

本章内容概要:


JVM和操作系统的关系?

1、现实举例

在现实生活中,你想要娶媳妇就得有车有房,想有车有房的话,你还必须要有钱才可以。

想有钱,就必须要有趁手的工具去能够让你赚钱。


2、认真了解JVM是个什么家伙

JVM全称(Java Virtual Machine),就是我们很耳熟的Java虚拟机。它能够识别.class后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作。

如果你熟悉C++的话,使用C++开发的程序,一般情况下编译成二进制后,就可以直接执行了,操作系统能够识别它,因为C++和C是编译成汇编语言的,离操作系统非常进。

而Java程序就不一样了,使用javac编译成.class文件之后,还需要使用Java命令去主动执行它,操作系统并不认识这些.class文件。

你可能会觉得Java这么麻烦,还不如C++呢,一步到位多好呀。

可这恰恰就是JVM的过人之处。如果你经常接触Java,可能知道,Java是一门抽象程度非常高的语言,提供了自动内存管理等一系列的特性。这些特性直接在操作系统上实现是不太可能的,所以就需要JVM进行完成。

而C++和C语言就需要去手动的释放内存。

通过上面的介绍,我们了解到:

  • JVM:等同于操作系统;
  • Java字节码:等同于汇编语言。

可以把JVM认为是一个翻译器,从开始运行的时候就会持续不断的翻译执行Java字节码,然后调用真正的操作系统函数,这些操作系统函数是与平台息息相关的。

如下图所示:

从上图可以看到,有了JVM虚拟机之后,就可以实现跨平台。

不同的操作系统上安装上功能一样的Java环境,JVM只需要保证能够正确执行.class文件,JVM负责翻译.class文件,从而调用不同操作系统上的函数,最终完成特定的功能。

而Java跨平台的意义在于一次编译,处处运行,能够做到这一点JVM功不可没。

例如我们熟悉的Maven和其他一些管理jar包工具,发布者只需要关心如何拿到jar包,无需拿到后重新编译就可以执行。

jar包中则是编译之后的.class文件,如果有兴趣可以解压出来看看。

可以用一句话来概括JVM和操作系统之间的关系:

JVM就是承上启下的作用,上承开发语言,下接操作系统,它的中间接口就是字节码

3、对比Java程序与C++程序执行的流程

Java程序与C++程序执行的流程:

(1)C++程序的执行流程

(2)Java程序的执行流程

对比这两张图可以看出C++程序是编译成操作系统能够直接识别的.exe文件;

而Java程序是编译成JVM能够识别的.class文件然后由JVM负责调用系统函数执行程序

目录
打赏
0
1
1
0
4
分享
相关文章
探索操作系统核心:从进程管理到内存分配
本文将深入探讨操作系统的两大核心功能——进程管理和内存分配。通过直观的代码示例,我们将了解如何在操作系统中实现这些基本功能,以及它们如何影响系统性能和稳定性。文章旨在为读者提供一个清晰的操作系统内部工作机制视角,同时强调理解和掌握这些概念对于任何软件开发人员的重要性。
|
10月前
|
操作系统(6)----线程相关
操作系统(6)----线程相关
82 0
操作系统中的虚拟内存管理:原理与实现
本文深入探讨了操作系统中虚拟内存管理的核心概念,包括分页、分段、需求分页和页面置换算法。通过分析现代操作系统如Linux和Windows的虚拟内存实现机制,文章揭示了虚拟内存在提升内存利用率、进程隔离和保护内存中的关键作用。同时,讨论了虚拟内存管理面临的挑战,如内存泄漏、碎片化以及性能开销,并提出了相应的优化策略。
|
10月前
|
操作系统(1)----操作系统的运行机制
操作系统(1)----操作系统的运行机制
122 0
|
10月前
|
操作系统(2)----操作系统的体系结构
操作系统(2)----操作系统的体系结构
171 0
【操作系统】—操作系统的概念 目标和功能
【操作系统】—操作系统的概念 目标和功能
操作系统(3.3)--线程的实现方式
在多级反馈队列调度算法中,如果规定第一个队列的时间片略大于多数人机交互所需之处理时间时,便能较好地满足各种类型用户的需要。
111 0
操作系统的运行机制
1.程序是如何运行的? 程序运行的过程就是CPU执行一条一条机器指令的过程 2.程序的分类 程序分为应用程序和内核程序 应用程序只能执行非特权指令,运行在用户态 内核程序可以执行特权指令,也可以执行非特权指令,运行在内核态
175 0

相关课程

更多