安卓为什么一定要java虚拟机,是不是意味着底层还是安卓呢

看到这里 , 肯定有人会问 , 为什么Google选择了执行效率更高的Java而不是C?如果谷歌用C作为Android开发语言 , Android早就死了 。EMUI9.1发布的时候 , 华为就已经开始做脱离安卓虚拟机的事情了 。如果真如余承东所说 , 新系统不仅能接入手机和电脑的智能设备 , 还能完美支持所有安卓应用和Web程序 , 那应该是深度使用了于方舟编译器这样的技术 , 摆脱了安卓虚拟机 。
为什么安卓不放弃虚拟机机制 , 转变更高效的方式 , 例如ios一样?
那不就是Linux手机?很多厂商做过 , 不了了之 。安卓要不是傍上JAVA , 也不会有如今的局面 。JAVA开发者比C/C多太多了 。WP就死在这上面 。IOS要不是有硬件支撑 , 也早死了 。安卓起初的时候是要做一套跨平台的移动系统 , 事实上以前也出现过X86和MIPS的手机 , 只不过后来被ARM一统天下 , 才会让人觉得这个JVM是个累赘 。
为什么Android不可以绕开虚拟机直接运行?
当初设计android的时候 , 设计人员只是软件工程师 , 无法针对某个CPU(目前有的CPU框架intel , arm , mips , rsicv等)去开发 。最好的是 , 我针对所有CPU都支持 。于是 , 安卓发现了java , java设计理念是啥?跨平台 , 是指java语言编写的程序 , 一次编译后 , 可以在多个系统平台上运行 。怎么实现一次编译 , 多平台(cpu)运行因为机器针对不同机器语言 , 有不同执行逻辑 。
就好比二进制000100 , 在arm里面是调用加法器 , 而riscv是调用乘法器一样 。所以 , 需要给这些不同平台请个翻译 。而虚拟机就是起到翻译作用 。这样虽然增加了消耗(例如执行同样代码 , 时间消耗上 , c明显由于java) , 但是可以某种意义上 , 把软件 , 物理硬件分开了 。软件重点设计自己app , 而硬件不断增加CPU性能 。
华为新系统兼容安卓 , 是不是意味着底层还是安卓呢?
其实 , 安卓就是基于Linux内核的操作系统 , 它和Linux是有很大区别的 , 安卓是在Linux内核的基础上添加了自由特性的驱动程序 , 而后自成一派 , 就是我们使用的安卓系统 。而华为新系统兼容安卓 , 并不依赖安卓的底层 , 它所依赖的也只是Linux内核 。而Linux是免费的谁都可以用 , 但对于企业是要授权的 。所以 , 根据余承东所说的 , 新系统可以完美兼容安卓等特性 , 应该还是Linux内核 , 严格来说 , 华为系统应该也不能完全算是国产 。
但是 , 新系统是可以和安卓区别开来 , 不受它的制约 。其实在EMUI9.1发布时候 , 华为已经开始做脱离安卓虚拟机的事情了 。这就是华为推出的黑科技方舟编译器 。安卓应用运行在虚拟机上 , 采用的是边解释 , 边运行的方式 , 所以应用程序在运行时会存在效率低的问题 , 而方舟编译器的做法是 , 直接将编译放到了开发端 , 开发者只需在程序开发完成后 , 将代码编译为机器语言然后打包 , 用户安装后即可直接运行 。
省去了在虚拟机上编译解释的步骤 , 从而提升的运行效率 。很多人担心新系统上软件生态的问题 , 我们可以结合方舟编译器和最近余承东所说的内容来一起看 。方舟编译器发布时候曾提示软件开发商尽快使用 , 从而提升性能 。对于软件开发商也许并不需要再开发一套新的软件 , 只需要将原有的安卓程序重新编译 , 就可以在方舟编译器上运行 。

推荐阅读