什么是JVM和字节码。class文件?它们的关联又是什么?
什么是JVM和字节码.class文件?它们的关联又是什么?
1. 什么是JVM
JVM(Java Virtual Machine)即是Java虚拟机的缩写,所以不要再画蛇添足的叫JVM虚拟机了。
它是运行Java字节码(即.class文件)的虚拟机,由于java是跨平台的,所以jvm虚拟机针对不同系统(windows,linux,macOS)也有不同的实现。
个人理解:
jvm相当于代码的一个翻译,到windows里就翻译成window能听懂的语言,到linux里就翻译成linux能听懂的语言。因此同样的代码在不同的平台,结果的执行操作也几乎是相同的,只是中间翻译的这一步不同。
这应该就是java跨平台性的原理,它不需要开发者会"多国语言",只要会java语言就够了。它也不需要每个国家(系统)都支持它的语言,只需要为每个国家搭配一名专业的翻译(JVM),将java语言翻译成这个国家能听懂的语言就够了。 2.什么是字节码(.class)
在java中,JVM可以理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向Java虚拟机(JVM)。Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序的运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java程序无需重新编译便可在多种不同操作系统的计算机上运行。
个人理解:
字节码文件(.class)是通过Java文件(.java)编译后得到的,它只会被Jvm处理,也是JVM唯一能理解的语言。并且这个编译过程是无视平台的,也就是不管你在什么环境下进行编译,由java文件生成的.class文件都是一样的。和平台有关的步骤是Jvm解析字节码文件的时候,它需要将字节码文件解析成操作系统能执行的机器语言指令,然后执行指令。这一步由于不同的操作系统有不同的命令,所以会产生差异。
整体流程:
.java文件(源代码)=== 编译 ===》.class文件(字节码文件)=== JVM解析 ===》二进制机器码
3.为什么需要字节码(.class)
通过前面我们都明白了JVM才是跨平台的核心,那为什么在此之前还要再加工一次,让.java类加工成.class呢?为啥不直接让jvm理解.java文件,直接进行翻译运行呢?这样我们就无需多关心一层.class文件了,直接将.java交给JVM,它内部该编译就编译,该执行就执行,对我们来说也不用关心那么多了。
首先我必须说明,在我看来**.class 文件和 java跨平台性 并 没有多少直接联系**,跨平台性核心是靠JVM去实现的,不同平台编译出的字节码文件是完全一样的。 说个题外话:
网上很多人看到这种问题一股脑就把跨平台性掏出来说,显得很"理所当然",这是在我看来这多少显得有点不懂装懂。百度出来的大部分回答就是这样,但是至少也比那些看起来很牛掰却只会让你去百度,其实自己屁都答不出来的fw强多了。
当然,现在我也只能以猜测性质简单的回答一下,因为我对这块内容的学习也不够深入,所以以后有机会更深入时再回来补充。
字节码文件(.class)带来的好处 ①提高效率
对java文件进行语法检查、语义分析这一步会 消耗大量的时间资源 ,编译成字节码文件相当于提前处理了源文件,提前做好了大量的工作。这样将字节码文件交给JVM运行的时候,就可以为JVM节省很多负担了。这样就可以做到让java程序能够 运行高效 ,如果这些操作都直接不经处理的交给jvm去做,肯定就无法满足 高效 这一词,有些大项目光编译就要好几分钟。如果去掉提前编译,直接让JVM解析java文件,那么当你启动这个项目的时候一定会觉得慢的离谱。 ②资源节约
字节码文件可以看做是对源文件的提炼压缩封装,它占用 更少的空间 和 更快的传输速度。 ③提升兼容性
只要满足jvm的规范,即便你是其他语言的代码,只要能编译成class文件,同样可以运行在jvm中。(理论上如此,虽然现在还没有什么实现方式)
华智冰揭秘人工智能技术的神秘面纱目前,人工智能已在人类社会的许多领域得到成功应用。例如,在图像图形识别方面有指纹识别染色体识字符识别等在航天与军事方面有卫星图像处理飞行器跟踪成像精确制导景物识别目标检测等在医学方
拥有人工智能技术的清华华智冰备受关注在这个科学不断进步的时代企业和政府对人工智能的应用逐渐升温。在决定企业产生经济效益的各个环节,都已能够看到人工智能的身影AI核心是帮助人们安全生活远程交易便捷通行深度学习和知识图谱
LK分享深度剖析汽车上看不见的软件系统汽车软件系统同硬件系统一道实时获取理解驾驶员需求,通过逻辑运算得出机械部件需要做出的响应并发出指令。软件硬件相互合作,它们一同组成了汽车电子系统。当你跨入汽车,按下启停键,你点燃汽
终局之战只是英雄远征的预告片?和钢铁侠的传承从拉小蜘蛛入伙开始说起铁男自己把小蜘蛛拉近的妇联,但是一直没有把小蜘蛛当做一个成年人看。一直在小心翼翼的保护他,和美队的内战时甚至不想让小蜘蛛参与。因为铁男自己也不知
库里高分不是我想看到的对于大多数NBA球员来说,得分能上60那是无上的荣耀,纵观整个联盟能做的真的不多,今天库里做到了,这让伤病前后充满着无奈焦急的库里稍微出了一口气。几个赛季以来库里真的不容易,每次看
今年春节回家过年或者不回家过年我们都要理解和支持这该死的疫情还没有彻底被消灭,最气人的人,这个坏东西又在中国的春节来临之际出来添乱。如今对这个坏东西的结构还不太了解,阻止它的最好办法就是减少人员流动量。那么问题就出在这里,究竟要
白眉大侠童林传三侠剑里面的绰号简直是艺术1横推八百无对手,轩辕重出武圣人于和于九莲(白眉大侠)2双手托天分日月,笑看武林第一人,金昌金泰斗(白眉大侠)3三只斤镖压绿林,甩头一子镇乾坤。一把金刀安天下,南七北六第一人。胜英
CBA赛场冲突,如果换成其他队会怎么处罚CBN常规赛第28轮,北京和深圳的比赛中,出现了咆哮裁判,主教练带领球员离场的情况,不久通报便下来了,对此次的事件处罚结果让人看不懂,对北京队的球员只是罚款3万,对主教练停赛4场,
我眼中的NBA球星排名自95年开始看球,只谈看过的球员,那些上古球员不在其内,因为没看过他们。火箭vs湖人1乔丹(这个家伙永远都是第一,虽然看得最多的是他的录像)2奥尼尔(他是我见过统治力最强的球星,没
荣耀V401月18日首发大家猜猜价格刚看了几款手机,根据朋友们的评论,心里也大概知道买哪个了,可是又看到荣耀V40要发售的新闻,我又犹豫了,唉!用过荣耀的3X和7X真是稳如狗,现在我的3X和7X还在当备用机在用,3X
大家来给鲁能起个名吧山东鲁能改名山东泰山,被足协给否了,理由是文旅集团旗下子公司的名字中有泰山两个字。这真是无语问苍天啊!如果这样弄得话估计中超的球队没有一个名字能用的,现在的企业数以万计,怎么改名都