本章内容概要:

文章目录

  • JVM和操作系统的关系?
    • 1、现实举例
    • 2、认真了解JVM是个什么家伙
    • 3、对比Java程序与C++程序执行的流程

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

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

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

  1. Linux与JVM的内存关系分析

    Linux与JVM的内存关系分析 原文出处: 美团技术团队 引言 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 ...

  2. Linux与JVM的内存关系分析(转)

    引言 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约600m,Linux自身使用大约800m.从表面上,物理内存 ...

  3. Java 入门之1:浅谈Java的最基本概念及JDK、JRE、JVM之间的关系和区别

    目录 前言: 一句话介绍Java语言的故事 一句话概括Java的特性和优势 两句话阐述JAVA_HOME环境变量和classpath环境变量的作用是什么 简述JDK.JRE.JVM之间的关系 Java ...

  4. ART与Dalvik、JVM之间的关系你懂了吗?

    Android 高阶知识 博客系列目录 类加载机制原理解析 ART与Dalvik.JVM之间的关系你懂了吗? ART与Dalvik.JVM 认识了解虚拟机 JVM Dalvik ART 即时编译器(J ...

  5. 一步步编写操作系统 40 内存分页下用户程序与操作系统的关系

    分页的第一步要准备好一个页表,我们的页表是什么样子呢?现在我们要设计一个页表啦. 设计页表其实就是设计内存布局,不过在规划内存布局之前,我们需要了解用户进程与操作系统之间的关系. 前面讲保护模式时,我 ...

  6. 应用程序和操作系统的关系是什么

    应用程序和操作系统的关系是什么 应用程序是软件(似乎是废话,别急往后看),操作系统也是软件.cpu会将他们一视同仁,甚至,cpu不知道自己在执行的程序是操作系统还是一般应用软件,cpu只知道去cs:i ...

  7. JDK、JRE和JVM之间的关系

    作为一个Java开发者,只会用Java,却不知什么是JDK.JRE和JVM是什么,以及他们之间有什么联系.本文总结了JDK,JRE,JVM三者的关系与区别. JDK.JRE和JVM之间的关系 一.JD ...

  8. Java中JDK,JRE和JVM之间的关系

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...

  9. JDK/JRE/JVM之间的关系

    > JDK Java Development ToolKit(Java开发工具包). JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆J ...

最新文章

  1. 浅析「扣减库存」的方案设计
  2. C Primer Plus 第5章 运算符、表达式和语句 编程练习及答案
  3. 【NLP笔记】文本生成?还不快上知识库
  4. SimpleExecutor.doQuery()-创建StatementHandler
  5. 需求工程阅读笔记03
  6. 造轮子是什么意思_程序员为什么热衷于造轮子,升职加薪吗?
  7. C/C++混淆点-逗号运算符
  8. php 中间表示语言,[转载]php 底层 探究之php编译过程及中间语言 opcode
  9. es6 使用修饰器实现自动发布事件
  10. python 朋友圈leetcode_利特代码0547。朋友圈[python],LeetCode0547FriendCircles,Python
  11. [转载] Python和java中的垃圾回收机制
  12. tomcat项目支持跨域访问
  13. JavaScript:indexOf()方法
  14. [转载·运维案例一]nginx日志切割及7天前的历史日志删除脚本
  15. 最新ECSHOP解闷商城系统+休闲娱乐EC购物商城源码
  16. 服务器ghost备份后无法进入系统还原,如下图,电脑开不起来了,重新ghost恢复备份的系统后启动依旧蓝屏,怎么办?...
  17. 百度网盘文件转存到阿里云盘工具,爱死这个软件了
  18. office972003_为什么我有Microsoft Office Excel 2003打不开Microsoft Office Excel 97-2003格式?...
  19. win10把中文用户名改为英文用户名的两种方法
  20. ajax网页没有办法采集,Ajax网页采集方法(最新) - 八爪鱼采集器

热门文章

  1. 【matlab】雷达成像系列 之 BP(BackProjection,后向投影) 成像算法
  2. 人工智能第一章——简介(附上有用资料和链接)
  3. MySQL8.0 之SQL(DQL)单表、多表查询(详细回顾篇)
  4. 移动手机用户目录下的证书至根目录下
  5. 小米air2se耳机只有一边有声音怎么办_小米Air2 se评测,对比有线,无线,真无线,到底哪个更适合你...
  6. 戴尔微型计算机进bois,dell进bios按什么键 戴尔进bios的方法
  7. python编写脚本教程_python脚本编写教程gee引擎解密工具
  8. Android 支付宝API使用流程
  9. 升级Win11后Office无法验证此产品的许可证怎么办?
  10. android 调用短信,android中可以通过两种方式调用接口发送短信