科百科
当前位置: 首页 范文大全

安卓虚拟机有哪些(ios上的安卓虚拟机步骤)

时间:2023-06-02 作者: 小编 阅读量: 6 栏目名: 范文大全

看到Stackoverflow上有个问题在讨论Java和Python的对比,其中就有人问答为啥Java的运行环境被称之为JVM,而Python的只能叫做Interpreter。虚拟机的定义有2个,一种是类似Vmware的系统虚拟机,另一种是虚拟机称之为程序虚拟机,诸如JVM,CLR就是最常见到的虚拟机。当这个进程启动时,虚拟机启动,当进程销毁时,虚拟机销毁。这使得Java字节码既可以被解释执行也可以被编译成机器指令再执行。

看到Stackoverflow上有个问题在讨论Java和Python的对比,其中就有人问答为啥Java的运行环境被称之为JVM,而Python的只能叫做Interpreter。

(题图来自:gfi.com)

这个问题估计想过的人不多,先找维基百科看一下虚拟机的定义。

虚拟机的定义有2个,一种是类似Vmware的系统虚拟机,另一种是虚拟机称之为程序虚拟机,诸如JVM,CLR就是最常见到的虚拟机。

程序虚拟机也称作托管运行时环境,运行这个虚拟机时,就好比普通的OS中的一个进程。当这个进程启动时,虚拟机启动,当进程销毁时,虚拟机销毁。使用虚拟机的目的就是提供一个和平台无关的编程环境。

JVM中的执行引擎只能处理编译后的Java字节码,字节码处理引擎其实包含一个字节码解释器和一个JIT编译器(和.net的CLR中JIT差别很大),解释器逐条的执行字节码指令,速度稍慢。JIT编译器则会将热点代码编译缓存起来,因此执行速度加快。

解释器的概念比较简单,它可以将代码翻译,并运行,不需要经过编译,JVM中的解释器正式这样的,JVM中解释的就是字节码。解释器运行程序的方法有3种:

  1. 直接运行高级编程语言(如Shell内置的解释器)
  2. 转换高级编程语言码到一些有效率的字节码(Bytecode),并运行这些字节码
  3. 以解释器包含的编译器对高级语言编译,并指示处理器运行编译后的程序(例如:JIT)

其中Python的解释器就是属于第二种,Python代码在首次运行时,它会将Python代码编译成字节码,如果可以的话,它会将这个字节码保存到.pyc文件中,这样下次启动的时候就不会再编译这些代码而是直接解释运行字节码。事实上,这种机制正在模糊解释器和编译器之间的界限,或者说是模糊了解释型语言和编译型语言的界限。

通过JVM和解释器的概念澄清,似乎还是不明白为啥JVM就被称为虚拟机,JVM中有运行的是字节码,它可能直接被解释执行,也可能被再次编译成目标语言,Python中的解释器也会先预编译Python代码为字节码,再解释执行。那么到底有啥区别?

很多人参与了讨论,分别从不同的角度去阐述区别。

有人认为虚拟机是和语言无关的,JVM为例,除了Java之外,Scala,Clojure,甚至Python借助于Jython工具,也可以运行在JVM上,而没听说什么语言能有Python解释器解释执行,除了Python。

也有人从语言的类型上,Java为静态类型的语言,而Python为动态语言。这使得Java字节码既可以被解释执行也可以被编译成机器指令再执行。而Python则复杂多了,它虽然让程序员可以不去关注变量的类型,但解释器不得不去推断数据类型,这一定程度上影响性能。

还有观点认为解释器是一个历史遗留术语,现代语言中虚拟机和解释器的分界已经很模糊甚至不存在。

事实上,笔者在《Learning Python》一书中,看到把作者把Python的解释器称为PVM,基于这个事实来讲,本人更认同的是解释器和虚拟机的区别正在越来越小,已经是我中有你,你中有我的地步。独立的分割来看,可能还能区分这几步是解释器行为,这几步是虚拟机的行为,但是作为一个整体来看,两者的区别确实没那么明显。

    推荐阅读
  • 高血压吃洋葱每天吃多少(天天吃洋葱能降血压)

    另外,动物实验和人体实验也是有区别的,人体比小鼠大很多,需要几十倍、几百倍的提纯物才能起效,更不可能通过日常吃几口洋葱就能达到效果。洋葱榨汁每天喝一杯,不仅不能降血压,还有可能因为刺激肠胃黏膜引起呕吐和腹泻,若想达到效果,可能要喝上12斤。目前,并没有权威证据表明洋葱能降血压,所以不能用它进行临床治疗。

  • 玻璃杯歌词(玻璃杯完整歌词)

    你曾说我的心像玻璃杯单纯的透明如水,下面我们就来聊聊关于玻璃杯歌词?接下来我们就一起去了解一下吧!

  • 建行一类和二类哪个更好(建行发布重要通知)

    每经编辑:李泽东据建行官网5月27日消息,建行发布关于2022年一季度分期通消费满额送话费疫情期间延期兑换的通知。尊敬的中国建设银行信用卡分期通客户:根据疫情防控政策要求,部分地区被实施临时管控,符合本次活动要求客户的话费兑换将延期操作。具体话费兑换时间将视疫情缓解情况进行安排,话费充值完成后将会短信通知客户。感谢您的理解以及一直以来对建行信用卡的支持。每日经济新闻综合建行官网每日经济新闻

  • 表达分手又和好的句子(分手又复合的珍惜句子)

    也喜欢被想念的滋味、因为这是甜蜜的味道。我会每天想著你、希望你能同时拥有幸福与甜蜜哦!健忘是一种病态、善忘是一种境界。机遇像个小偷、到来时无声无息、走的时候你却损失惨重。如果你不能击败你的敌人、那么就加入他们。打动人心最高明的办法、就是跟他谈他最珍贵的东西。对不爱自己的人、最需要的是理解、放弃和祝福。过多的自作多情是在乞求对方的施舍。爱与被爱、都是让人幸福的事情。不要让这些变成痛苦。

  • 微信朋友圈喝茶的说说(分别有什么好的句子)

    接下来我们就一起去研究一下吧!微信朋友圈喝茶的说说茶是草,客是宝,得罪茶商不得了。在又苦又甜的茶里,可以领悟到生活的本质和哲理。此地千古茶国,满城都是君子。寻味君子知味来,伴香雅士携香去。吾年向世味薄,所好未衰惟饮茶。休对故人思故国,且将新火试新茶。看着这杯种茉莉花茶,我觉得美不胜收,此时,一股扑鼻的清香更使我陶醉。

  • 小学生歇后语大全(小学生歇后语推荐)

    小学生歇后语大全?八仙过海——各显神通骑驴看唱本——走着瞧,我来为大家讲解一下关于小学生歇后语大全?跟着小编一起来看一看吧!

  • 西红柿烩牛腩怎么做(西红柿炖牛腩的做法)

    西红柿烩牛腩怎么做?食材:牛腩500g,西红柿500g,葱10g,姜10g,香菜10g,现在小编就来说说关于西红柿烩牛腩怎么做?要牛腩就是靠近牛肋骨的松软的肉,西红柿葱和姜。把牛腩切成小块,不要太大也不要太小,太大不容易煮透,熟后不容易嚼烂,太小又影响口感,你吃的时候也不好找到他们。牛腩冷水下锅焯一下,锅里放点姜片和料酒,还可以放一勺醋,去血去腥,焯完后捞出沥干水备用。西红柿炒成糊状后将牛腩倒入,放一点白糖和盐,翻炒匀。

  • 相生相克是什么意思(相生相克意思(是什么)

    以下内容希望对你有帮助!相生相克是什么意思释义:指金、木、水、火、土五种物质的互相生发以互相克制的关系。后引申为一般物质之间的辩证关系。

  • 如何制作表情包(自己制作表情包的方法)

    以下内容希望对你有帮助!如何制作表情包可以用PS中的图像调整来制作表情包。打开预先准备好的表情素材,选择置入,将人物的图片放进去,调整人物的大小后确定。用橡皮擦擦除多余的部分后再设置一次亮度和对比度,最后配上文字即可制作成功。

  • 上古十大凶兽名字(上古十大神兽)

    白泽夔凤凰麒麟梼杌獬豸犼重明鸟毕方饕餮腓腓