导读:虚拟机相当于应用程序在不同运行环境中的翻译。

说起谷歌安卓系统的“虚拟机”,很多人爱拿它和苹果iOS做比较,结果,安卓的很多短腿儿都让虚拟机背了锅,比如安卓手机运存容量是iPhone的两到三倍,流畅度却没有脱胎换骨的变化,有时还被iOS摁在地上摩擦,然后很多人将其归结为虚拟机拖了后腿儿。

虚拟机表示:为安卓流畅度背这口锅,也是为了广大程序员的饭碗着想!

解开这个梗,先要搞懂什么是虚拟机,以及虚拟机有什么用。

简单说,虚拟机是一种消除计算机硬件差异的机制,它可以提供一种稳定的运行环境,让相同的应用程序在不同的操作系统和硬件上运行。

说到应用程序的运行环境,需要展开一下。

应用程序的运行环境=操作系统+硬件,其中硬件是起主要作用。原因不复杂,特定指令集的CPU只能解释其固有的机器语言,不同的CPU能解释的机器语言(本地代码)自然不同,英特尔的CPU和ARM的CPU能解释得机器语言是不同的。这好比不会英文的人听不懂英语,反之亦然。

怎么才能让不会英文的人听懂英语?找英语翻译可以办到。

虚拟机就相当于应用程序在不同运行环境中的翻译。比如著名的虚拟机软件“Virtual PC for Mac”,它由微软出品,有了它,苹果的Macintosh用户也能在Mac操作系统上运行Windows应用了,把苹果电脑用出PC的感觉。

不过,到2006年时,微软停止了对“Virtual PC for Mac”的开发,因为苹果电脑换“芯”了,从PwoerPC换成英特尔的CPU,和Windows应用程序的运行环境相同,所以现在苹果电脑不借助虚拟机软件也能运行Windows及其应用程序。

安卓也有自己的虚拟机,它叫Java虚拟机,简称JavaVM(Java Virtual Machine)。

Java虚拟机有多种版本,有用于Windows的虚拟机,有用于Macintosh(现为MacOS)的虚拟机,也有用于移动设备的虚拟机,比如安卓系统的Java虚拟机。

不同的Java虚拟机对应不同的操作系统和CPU,好处是程序员不用关注操作系统和CPU的差异,只要是用Java语言写成的源代码,就可以在所有具有Java虚拟机的操作系统上运行。

Java虚拟机的运行过程是,Java编译器先将应用程序源代码转换成字节代码,再由Java虚拟机将字节代码转换成适用于相应CPU的机器语言,由其执行。

如果感到上面这段话比较晦涩难懂,记住这个结论也行:Java虚拟机是个称职好用的翻译,可以让不同的CPU看懂Java语言编写的应用程序。

虚拟机还有一个好处,就是写应用程序和操作系统的编程语言可以风马牛不相及。

iOS和安卓操作系统的源代码都是用C语言写成,由于C语言是较早出现的高级编程语言,入门门槛较高,而安卓应用程序是用Java编程,是一种更高级的编程语言(iOS的应用程序编写语言是swift),入门门槛较低。

Java之父詹姆斯·高斯林 (James Goslin

显然,Java的低门槛可以吸引大量人员进入应用程序编程行业,方便迅速建立生态。实际上这也是Java得以流行的原因。

不过,虚拟机也不是没有短板,最大的短腿儿就是,代码转来转去,会拖慢程序运行,特别吃硬件资源。这个胎里带的毛病,是安卓手机流畅度不及iPhone的原因之一,在绝大部分虚拟机上都能反映出来。

反过来想想,如果没有虚拟机的话,该怎么办?只能开发不同版本的应用程序,比如Mac版、iOS版、Linux版、安卓版和Windows版。对应用开发商来说,如此多的版本会增加开发成本和维护成本,结果就是一些小众的硬件很难建立起丰富的软件生态。

当然,对数以十万计的安卓应用开发程序员来说,没有Java虚拟机的话,就意味自己的Java武功被废,饭碗被砸了,要么改行,要么学C语言这么武功。这比开发多版本程序还让人着急。

安卓Java虚拟机大小_虚拟机为安卓流畅度背锅,是因为关系数十万程序员饭碗?...相关推荐

  1. python虚拟机下载_虚拟机 python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 打开文件--打开bashrc--加入#addexportvirtualenvwr ...

  2. 双鱼林 android 服务器,双鱼林安卓Android代码生成器下载_双鱼林安卓Android代码生成器官方下载-太平洋下载中心...

    双鱼林安卓Android 代码生成器是一款生成安卓手机程序的代码生成器 基于分层模式设计思想,生成的代码直接导入Ecli PSe软件就可以用的!真正面向对象设计:系统的整体设计,提供通过使用面向对象的 ...

  3. 安卓手机主题软件_最强安卓手机垃圾清理软件!

    感谢你关注无税便利店,每天上午「10:00」,小仙女为你挖掘隐藏的神奇软件,置顶公众号可获取最新优质内容.「前言」 今天本仙女给大家分享的这款软件,可是我测试了7款软件之后才发现的一股清流,不光软件名 ...

  4. java 堆大小_适当的Java堆大小的5个技巧

    java 堆大小 确定生产系统合适的Java堆大小不是一件容易的事. 在我的Java EE企业经验中,由于Java堆容量和调整不足,我遇到了多个性能问题案例. 本文将为您提供5个技巧,这些技巧可以帮助 ...

  5. 安卓随机通话记录_几款安卓amp;苹果虚拟来电软件,带你快速逃离尬聊现场,留有情面慰人心扉...

    有时候,我们会遇到一些尴尬的"车祸"现场-- 我们被七大姑八大姨硬撵着去和一位不中意的妹子吃饭,从见面开始,一直尬聊赔笑,内心煎熬难忍,此情此景,谁能救我们? 我们被老赖约出去吃饭 ...

  6. 安卓手机软件开发_这款安卓神器,让你下片更轻松!千万别滥用

    小编一直在想,有木有一款安卓手机电影下载神器让用户在一个手机 App 软件里,既能播放 BT 文件,又能下载网盘文件呢? 谁又不想要一个迅雷+百度云网盘+资源网站,三合一的手机电影下载神器呢? 其实小 ...

  7. 蓝叠安卓模拟器服务器未响应,蓝叠安卓模拟器常见问题汇总_蓝叠安卓模拟器常见问题解决方法_3DM手游...

    众所周知,蓝叠安卓模拟器是一个非常热门的软件,能让大家把自己手机游戏里放到电脑上玩,部分手游在电脑上流畅度与画面也得到最大的发挥,并且模拟器还有很多特有的辅助功能也让人爱不释手,但有一部分的人无法安装 ...

  8. 安卓强制恢复出厂_微课安卓手机越用越卡?这9招请收藏

    宅家抗"疫"期间,你都在做什么? 是不是每天用手机浏览疫情进展? 是不是每天用手机在线办公? 是不是每天用手机在线抢菜? 是不是每天用手机看小说.玩游戏.聊八卦? 俗话说:你的岁月 ...

  9. flyme android os 耗电,魅族运行安卓5.0 Flyme OS系统实测 性能流畅度提升

    魅族上个月开启了安卓5.0 Flyme OS系统的测试,首先适配的是MX4 Pro,现在我们来看看安卓5.0 Flyme OS系统的实测体验. 首先简单罗列一下已知的部分新特性: - Android ...

最新文章

  1. linux sublime nodejs,Windows环境下sublime的Nodejs插件详细安装图解
  2. 团队作业-Beta冲刺第二天
  3. POJ1741 Tree 树中点对统计【树分治入门】
  4. 08 | 替换策略: 缓存满了怎么办?
  5. P4593-[TJOI2018]教科书般的亵渎【拉格朗日差值】
  6. 华为怒发公开信;锤子手机难产罗永浩陷尴尬处境;苹果错失 5G | 极客头条
  7. 机器学习-样本集(包括训练集及测试集)的选取
  8. GULP案例1:计算声子色散曲线和态密度
  9. XShell v7里的快捷键
  10. Spring Boot基础教程 - 程序猿DD
  11. if 语句错误,提示Conditon is always ‘‘alse‘
  12. 小米手机访问电脑共享文件_小米手机如何与电脑共享文件
  13. session跨域共享
  14. dcos 1.7 安装
  15. 苏宁低调内测“宁互宝”,网络互助成巨头必争之地...
  16. 中美跨境电商贸易投资云洽会成功举办;TT Shop和TTforBusiness将互通;PhonePe月破20亿...|洞悉跨境
  17. 打印机无线连接台式机、笔记本找不到目标打印机解决方案
  18. 规则引擎Drools示例:个人所得税计算器、信用卡申请、保险产品准入规则
  19. 软工学子与你一起了解资金时间价值 之 复利(利滚利)+ 贷款的基本常识 + 现金流量图 ——《工程经济学》
  20. 十一、kotlin的协程(一)

热门文章

  1. 您有一个上云锦囊尚未领取!
  2. CentOS 7安装和部署Docker
  3. 详解linux下安装python3环境
  4. Linux命令整合之find
  5. 交换机应用之端口模式(access、trunk和hybird)、是否标记(tag、untag)、端口缺省vlan(pvid、native id)...
  6. SCOM数据库整理索引计划出错
  7. 剖析ASSERT函数
  8. Lucene-3.0.0配置
  9. WORD关于论文格式设置
  10. lee最短路算法_Lee算法的解释:迷宫运行并找到最短路径