前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >JVM和操作系统的关系是什么?

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

作者头像
手撕代码八百里
发布于 2020-10-26 02:54:38
发布于 2020-10-26 02:54:38
2.3K0
举报
文章被收录于专栏:猿计划猿计划

本章内容概要:

文章目录

各位亲们,请原谅我开启了仅粉丝可见,并不是为了赚粉丝,是因为一些可恶的网站大批量的爬我们这些原创博主的文章。开启了仅粉丝可见后他们就无法进行爬取后面的内容,也麻烦大家点个小小的关注才能看到后面的内容,当然了内容不好,看完也可以取消关注哈,嘿嘿。

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负责调用系统函数执行程序

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JVM系列(一)—— 何为JVM
JVM能够跨计算机系结构来执行JAVA字节码,主要是由于JVM屏蔽了与各个计算机平台相关的软件或硬件之间的差异,使得与平台相关的耦合统一由JVM提供者来实现。
MickyInvQ
2020/09/27
5650
JVM系列(一)—— 何为JVM
笔记——JVM、DVM(dalvik)和ART之间的区别(二十)
JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才能够运行Java程序,JAVA在编译后会生成类似于汇编语言的.class字节码文件,与C语言编译后产生的汇编语言不同的是,C编译成的汇编语言会直接在硬件上跑,但JAVA编译后生成的.class字节码是在JVM上跑,需要由JVM把字节码翻译成机器指令,才能使JAVA程序跑起来。
木溪bo
2019/08/06
3.2K0
JVM之认识程序运行本质
随着学习的不断拓展和工作中业务代码的积累,对于“为什么会这样”的困惑越来越多,于是写了这篇博客~。
北洋
2021/12/17
3610
JVM之认识程序运行本质
JDK、JRE和JVM三者之间关系
很多程序员已经写了很长一段时间java了,依然不明白JDK,JRE,JVM的区别。今天个人总结一下它们三者的关系、区别。
用户7886150
2020/12/02
5850
初识JVM(简单易懂),解开JVM神秘的面纱
在Java的世界里,Java虚拟机(JVM)扮演着至关重要的角色。它不仅是Java程序运行的环境,更是实现“一次编写,到处运行”的关键。本文将深入探讨JVM的核心组成部分,从类加载到执行引擎,解开JVM神秘的面纱。
人不走空
2024/02/20
1870
初识JVM(简单易懂),解开JVM神秘的面纱
java教程系列二:Java JDK,JRE和JVM分别是什么?
本章主要了解JDK,JRE和JVM之间的区别。JVM是如何工作的?什么是类加载器,解释器和JIT编译器。还有一些面试问题。
java干货
2021/02/19
7880
java教程系列二:Java JDK,JRE和JVM分别是什么?
linux和windows系统开发语言,java 运行机制,编译原理(C/C++的源码到机器语),编译器和解释器,C/C++与Java的区别
windows:汇编、C、VB、C++; linux:汇编、C;linux gui主要有两大类:gtk是C和C++的,qt是C++的。
zhangjiqun
2024/12/16
1200
linux和windows系统开发语言,java 运行机制,编译原理(C/C++的源码到机器语),编译器和解释器,C/C++与Java的区别
JVM常见面试题(一):JVM是什么、JVM由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
JVM(Java Virtual Machine,即java虚拟机),java程序的运行环境(java二进制字节码的运行环境)。
寻求出路的程序媛
2024/07/29
1360
JVM常见面试题(一):JVM是什么、JVM由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
Java跨平台你真的理解对了吗?
小面朋友最近去面试,直接被一个基础问题pass了。面试管的问题是:你怎么看待Java是跨平台的说法?
灬沙师弟
2023/03/07
3670
Java跨平台你真的理解对了吗?
JVM内存分析,以及一步步详解Java程序是如何运行的?
最终还是决定更加深入地学习下JVM,同时也用自己的理解详细地说明Java程序是如何运行的。
刘小爱
2020/07/30
8950
JVM内存分析,以及一步步详解Java程序是如何运行的?
一文解析JVM的内存结构,还不弄懂JVM怎么行
Jvm的内存结构是由《java虚拟机规范》制定的,《java虚拟机规范》只负责制定标准,具体的实现多种多样,比如:sun公司的HotSpot、BEA的JRockit、IBM的J9(前两个目前都已被Oracle收购),另外Apache、Google、微软等组织或公司都有自己的java虚拟机实现。只是我们目前开发比较常用的是HotSpot。
慕容千语
2021/03/03
5540
一文解析JVM的内存结构,还不弄懂JVM怎么行
JVM 工作原理和流程
转载自 https://blog.csdn.net/qq_33384065/article/details/80282023
allsmallpig
2021/02/25
8070
JVM – 内存模型
JVM在执行应用程序的过程中会将它管理的内存分为若干个不同的区域。其中一部分是线程私有的,一部分是线程共享的。Java内存区域也叫做运行时数据区。JVM内存内存结果如下图所示:
全栈程序员站长
2022/09/01
2530
JVM – 内存模型
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM(Java Virtual Machine,即java虚拟机),java程序的运行环境(java二进制字节码的运行环境)。
寻求出路的程序媛
2024/08/01
1460
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
python运行机制,java 运行机制,throw new RuntimeException(Stub!) 是什么
不明白:解释型(虚拟机)语言(js,python),编译型语言(c++),混合型语言(java)
zhangjiqun
2024/12/16
440
python运行机制,java 运行机制,throw new RuntimeException(Stub!) 是什么
【Java编程进阶之路 06】深入探索:JDK、JRE与JVM的关系与差异
在Java开发者的日常工作中,JDK、JRE和JVM这三个概念是不可或缺的。它们构成了Java应用程序的运行环境,但很多初学者可能对这三者的关系和差异感到困惑。本文旨在详细解析JDK、JRE和JVM之间的关系,帮助读者更好地理解Java的运行机制。
夏之以寒
2024/03/05
1.7K0
面试官:JDK、JRE、JVM 三者什么关系?
这个题目在面试题中基本没怎么出现,但在笔试题中倒是经常见到。所以还是有必要拉出来溜溜~
田维常
2020/09/22
2.2K0
面试官:JDK、JRE、JVM 三者什么关系?
【Java那些年系列-启航篇 03】JDK、JRE和JVM之间是什么关系?
Java Development Kit(JDK)是Java编程语言的心脏,为开发者提供了一个完整的开发环境,用于构建、测试、运行和调试Java应用程序。
夏之以寒
2024/04/25
5880
JVM之执行引擎
大部分的程序代码转换成物理机的目标代码或虚拟机能执行的指令集之前,都需要经过下图中的各个步骤:
冬天vs不冷
2025/01/20
1230
JVM之执行引擎
站在操作系统层面看JVM
在Java出现之前,像C/C++这样的编译型语言写出来的代码经过编译后,得到的是可直接在某平台(Windows或Linux)上执行的机器码,即machine code,machine code其实就是native code,它直接和操作系统交互。
大忽悠爱学习
2022/11/21
6210
站在操作系统层面看JVM
推荐阅读
相关推荐
JVM系列(一)—— 何为JVM
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文