方舟编译器猜想
伟大的华为推出了革命性的产品,叫做方舟编译器,经过方舟编译器编译过的App软件,据说运行速度至少可以提高百分之四十!这相当于将处理器的性能提高了一倍!可真是革命性的好东西。
但是华为并没有大规模地推广方舟编译器,而仅仅是在自己的系统上使用该新技术。那么方舟编译器究竟是何方神圣呢?
熟悉Java编程的人都知道,所有Java程序都是运行在各种不同版本的JVM虚拟机上的,谷歌推出的安卓系统也离不了虚拟机。
在Java虚拟机上运行的程序并不是机器码,而是一种被称作P-code的中间代码,Java编译器将程序编译成P-code,这样的App就可以在不同设备上的不同JVM上运行,这是Java在最早推出时的聪明之处。
谷歌在开发安卓系统时,用的是简化的Linux内核kernel和极简化的Linux系统,以及一个盘整过的JVM虚拟机。这样的一个系统可以支持其开发工具编译过的App软件。
谷歌为了推广安卓系统,使得其安卓系统能够支持尽可能多的设备,其开发或者开放联盟都可以通过申请得到安卓整个系统的源代码,这就让设备生产商可以根据自己的硬件来定制开发自己的内核kernel和JVM虚拟机,国内的所有硬件厂商都在这么做。这样不仅可以扩大自己的产业联盟,而且在必要的时候还可以出手打击联盟内的成员。比如前一段时间打击华为,停止对华为的技术支持就是一例!这是谷歌的阴险之处。
华为推出方舟编译器,如果编译过的也是P-code,即便有优化,在运行效率上的提高也是不大的,毕竟影响App运行效率的是运行前的二次编译——即将P-code翻译成本地设备支持的机器码!所以如果经过方舟编译器编译过后能大幅度提升运行效率,那一定是将App编译成机器码了。
在安卓设备的开发上,不同的厂家会使用不同的处理器和不同的外围芯片,还会使用不同的设计,如果完全一样了就构成侵权!因此将App转换成机器码一定会存在可移植性的问题。
可移植性的最大麻烦,就是你为一种平台编译过的应用将只能在该平台上运行,而不可能像现在一样从应用商城中下载安装到本地就可以使用,即便如大佬所说开源了方舟编译器也不可能做到。安卓系统最便利的一点也彻底没了。
将Java程序编译成机器码并不是什么新技术,大约十几年前就有了,甚至将P-code翻译成机器码也不是新东西,毕竟每个JVM中都包含了相关功能,只不过这样做的结果就是丧失了Java语言的最大优势——可移植性。
媒体喜欢吹嘘,厂家不好意思说实话,于是一片无聊的吹捧狂欢过后,最后的结果可能就是尴尬了所有懂技术的人。