Board logo

标题: [数码手机] 华为详解方舟编译器:内存回收更高效,随时用随时回收 [打印本页]

作者: u571    时间: 2019-4-25 16:01     标题: 华为详解方舟编译器:内存回收更高效,随时用随时回收

https://www.ithome.com/0/420/904.htm


简单的说就是抛弃JVM虚拟机,APK在打包阶段全部编译成二进制代码,用户端安装和运行都是二进制机器码,理论上来说确实效率会提升

但是兼容性问题不知道怎么解决,虽然菊花手机卖的不少但单独给菊花专门编译个APP我估计BAT之流根本不愿意干
作者: 卖哥    时间: 2019-4-25 16:06

posted by wap, platform: Meizu M9
这种就是把安卓的优点废掉,而且本来安卓就允许运行原生代码。
作者: cfqxd    时间: 2019-4-25 16:08

posted by wap, platform: Android
引用:
原帖由 @卖哥  于 2019-4-25 16:06 发表
这种就是把安卓的优点废掉,而且本来安卓就允许运行原生代码。
莫名其妙
作者: elia    时间: 2019-4-25 16:32

要求进华为市场的用这个编码就可以了
作者: hourousha    时间: 2019-4-25 16:42

类似的技术并不稀奇。比如IL2CPP。
但拿IL2CPP举例,它存在一些限制,比如原本虚拟机语言中的一部分反射功能(Emit类,也就是动态生成可执行代码部分)会失效。
作者: masterfish    时间: 2019-4-25 17:05

posted by wap, platform: Android
太令人失望了,原来以为是厂家只提供一份字节码,由应用商店自己进行具体编译优化,看来华为还是没有担当啊。
这样安卓必然分裂
作者: matao    时间: 2019-4-25 17:14

posted by edfc, platform: iPhone 8 Plus
意思是只专门针对华为的硬件做优化,没有普适性
作者: Tobar    时间: 2019-4-25 17:19

Posted by Xiaomi MIX 2S
为什么一个编译器能做gc?gc是rt干的活啊

你编译器怎么知道未来运行的时候什么时候应该做gc?
作者: matao    时间: 2019-4-25 17:26

posted by edfc, platform: iPhone 8 Plus
引用:
原帖由 @Tobar 于 2019-4-25 17:19 发表
Posted by Xiaomi MIX 2S
为什么一个编译器能做gc?gc是rt干的活啊
你编译器怎么知道未来运行的时候什么时候应该做gc?
没说gc啊,都直接转换成机器码了
作者: cynic0522    时间: 2019-4-25 17:28

posted by edfc, platform: iPhone Xr
没搞过安卓开发,这东西是不是和官方那个art类似?
作者: matao    时间: 2019-4-25 17:36

posted by edfc, platform: iPhone 8 Plus
引用:
原帖由 @cynic0522 于 2019-4-25 17:28 发表
posted by edfc, platform: iPhone Xr
没搞过安卓开发,这东西是不是和官方那个art类似?
看样子不同,华为直接编译生成的包就是机器码版本的了。但是这种看样子只会支持华为自己的机器,除了华为用其他家cpu的情况,现在华为又在做自己的cpu,感觉确实是在分裂生态
作者: Tobar    时间: 2019-4-25 17:36

Posted by Xiaomi MIX 2S
有啊

https://img.ithome.com/newsuploadfiles/2019/4/20190425_151506_579.jpg
作者: matao    时间: 2019-4-25 17:38

posted by edfc, platform: iPhone 8 Plus
引用:
原帖由 @Tobar 于 2019-4-25 17:36 发表
Posted by Xiaomi MIX 2S
有啊
https://img.ithome.com/newsuploadfiles/2019/4/20190425_151506_579.jpg@wm_......
我理解的就是根c++一样根本没有gc,只是通过智能指针类似的技术,直接实现RAII
作者: matao    时间: 2019-4-25 17:46

posted by edfc, platform: iPhone 8 Plus
引用:
原帖由 @u571 于 2019-4-25 16:01 发表
https://www.ithome.com/0/420/904.htm
简单的说就是抛弃JVM虚拟机,APK在打包阶段全部编译成二进制代码,用户端安装和运行都是二进制机器码,理论上来说确实效率会提升......
兼容性,肯定不会去解决,华为目的是自家的手机根cpu。
厂商单独给华为一个包也是非常可能的,现在如果购买了第三方加密服务,实际上也要跑一次加密服务生成最终程序
作者: arex    时间: 2019-4-25 17:49

posted by wap, platform: Android
将来就用华为系统了,苹果能出华为为啥不能,全球份额第一谁敢不支持...
作者: 阳光运动帅    时间: 2019-4-25 17:59

posted by wap, platform: iPhone
抛弃JVM?
作者: 流浪的枪骑兵    时间: 2019-4-25 18:06

果然被我猜中了,我一开始就说这个代价可能是兼容性。这做法把虚拟机的好处全搞没了。

gc的问题确实想不通,不知道华为怎么做的。但我觉得就现在这简单粗暴的想法,华为怎么做gc我都不觉得奇怪了。
作者: SuperContra    时间: 2019-4-25 19:42

Posted by HUAWEI ALP-AL00
这样搞挺好,苹果的优势基本没了
作者: ddaaii    时间: 2019-4-25 19:45

Posted by: OnePlus ONEPLUS A3000
这种防火墙随身相伴的机器你们怎么还在买  TGFC·NG
作者: 阳光运动帅    时间: 2019-4-25 19:47

posted by wap, platform: iPhone
如果方舟编译器在编译Java代码的时候能生成CPU能直接运行的代码,不需要JVM做内存管理,那在我看来就是Java Pro了。我觉得华为现在还没这样的软件工程能力。

因此我认为要么是作者想错了,要么是LZ理解错了。
作者: 阳光运动帅    时间: 2019-4-25 19:51

posted by wap, platform: iPhone
看上去像是文章作者在乱弹琴
作者: futurerui    时间: 2019-4-25 20:33

貌似真的很厉害啊
[attach]1061951[/attach]
https://weibo.com/1095240537/Hri ... 42&type=comment

今天下午非常认真的去听了方舟编译器的一些宣讲,其实还有一个文件管理器也很重要,不过大家的兴趣显然还是在方舟编译器上,这里给大家关心的一些问题做一些深度的解释。

1首先你要肯定的是这个东西很牛逼,牛逼到什么程度呢?大概就是假如现在汽车分柴油发动机和汽油发动机,那么方舟编辑器的意义就是通过了它,发动机可以加汽油也可以加柴油。或者说,它让发动机不挑油了。

2对于开发者有什么麻烦的么?其实没有什么麻烦的,你用汽油也好,柴油也好,只要倒进方舟编译器,出来的发动机都可以用。未来的目标是实现完全不用写新代码,直接把现在的代码重新编译就可以。也就是说,不需要再有团队去重新写代码。

3对于所有安卓系统全部兼容,甚至实现了跨平台支持,不管是ARM架构还是x86架构,不管是手机还是其他通讯设备,都可以使用。明确的说是可以脱离安卓框架的,用上面的例子解释就是,不仅支持汽车发动机,也支持飞机发动机和轮船发动机。

4使用之后,安卓的体验是可以达到IOS的水准的,甚至可以超过IOS的水准。但安卓的问题是,生态不如苹果严格,苹果很严格的规定了开发者调用的资源接口之类,但安卓没有规定,这会成为未来安卓的一种阻碍。而之前安卓不如IOS的原因是动态码需要虚拟机编译,所谓的边编译边执行,类似同声传译。而IOS等于是直接念翻译稿,所以更快。而现在方舟编译器也可以实现直接出翻译稿了,不需要同声传译了。流畅度大幅提升的秘密就在这。

5有什么缺点么?有,安装包的体积会扩大一倍以上。但是安装完成之后,安装文件会删除掉,所以最后安装完的包增加没有那么多,大概也就增加了25%。

6使用方舟编译器的APP可能会有特殊标识,来供用户选择,毕竟流畅的代价是包扩大了。

7可不可以做新系统?虽然没有直说,但前面说了,支持汽车、飞机、轮船,换句话说,你再造一个火车,也是可以执行的。换句话说,就是稿子都翻译好了,你在微信通话念还是打电话念都一样。所以重新编一套系统,因为脱离了安卓的虚拟机体系,也是完全可以执行的。

8什么时候上线?8月份华为开发者大会会发布,大家可以先学习。11月绿盟开发者大会会正式全面开源。

9谷歌的态度是什么?这套产品的框架完全符合谷歌的开发协议,但华为也事先跟谷歌做了深度的沟通,达成一致后,华为才公开宣布。至于未来,华为愿意把这套产品放入安卓体系,帮助生态更好的发展。谷歌怎么想,现在还不清楚。#华为方舟编译器#为地球补补妆#

补充:内存机制会有很好的优化,运行占用内存大概50M,也就是一般的1%。
作者: 小菜包子    时间: 2019-4-25 20:44

posted by wap, platform: Android
虽然我不是很了解,但肯定是辣鸡
作者: Tobar    时间: 2019-4-25 20:44

引用:
原帖由 futurerui 于 2019-4-25 20:33 发表
貌似真的很厉害啊
1061951
https://weibo.com/1095240537/Hri6RlxzY?filter=hot&root_comment_id=4365050326107042&type=comment

今天下午非常认真的去听了方舟编译器的一些宣讲,其实还有一个文件管理器 ...
Posted by Xiaomi MIX 2S
我感觉这哥们可能根本不懂这块,他说的这些优点,哪条不是安卓已经做到了甚至做的更好的?

现在哪还有纯解释运行的jvm

看了下微博,确认不懂技术了,这人甚至认为华为编译之后的app可以直接在ios上面跑……

[ 本帖最后由 Tobar 于 2019-4-25 20:49 编辑 ]
作者: dmzzz    时间: 2019-4-25 20:47

接下来的问题就是怎么说服开发者们去用这玩意儿了,商业产品你技术含量再高,没人用那还是个失败的东西
作者: hourousha    时间: 2019-4-25 22:42

引用:
原帖由 Tobar 于 2019-4-25 20:44 发表
     Posted by Xiaomi MIX 2S
我感觉这哥们可能根本不懂这块,他说的这些优点,哪条不是安卓已经做到了甚至做的更好的?
现在哪还有纯解释运行的jvm
看了下微博,确认不懂技术了,这人甚至认为华为编译之后的a ...
当然直接在iOS上跑是没戏的。别的不说,直接链几个.so它难道还能把这些自动转成.a的iOS静态库?那真是黑科技了。
这东西我觉得就是类似IL2CPP这种,把运行于虚拟机的中间代码(比如JVM的bytecode或.net的IL)转成C++代码,脱离JVM、.net CLR(或Mono CLR),然后生成本地执行程序,或用emscripten生成js的网页等等。
作者: ptgt3rsr    时间: 2019-4-25 22:46

posted by wap, platform: iPad
腾讯估计不会用,而且这么搞别家也上机器码,那不又碎成一地了。。。
作者: 流浪的枪骑兵    时间: 2019-4-25 23:40

posted by wap, platform: Android
引用:
原帖由 @Tobar  于 2019-4-25 20:44 发表
Posted by Xiaomi MIX 2S
我感觉这哥们可能根本不懂这块,他说的这些优点,哪条不是安卓已经做到了甚至做的更好的?

现在哪还有纯解释运行的jvm

看了下微博,确认不懂技术了,这人甚至认为华为编译之后的app可以直接在ios上面跑……
其实你看他写的那几条就知道了,一直是打比方
真懂技术的直接说关键点,打比方的都是给不懂的人解释的。所以他的目的是装懂糊弄那些更不懂的
作者: 藕是张力    时间: 2019-4-26 03:45

posted by wap, platform: iPhone
引用:
原帖由 @SuperContra  于 2019-4-25 19:42 发表
Posted by HUAWEI ALPAL00
这样搞挺好,苹果的优势基本没了
安卓加一个编译器就能赶上iOS?
作者: 离人最近的神    时间: 2019-4-26 08:09

posted by wap, platform: iPhone
引用:
原帖由 @futurerui  于 2019-4-25 20:33 发表
貌似真的很厉害啊
1061951
https://weibo.com/1095240537/Hri ... 42&type=comment

今天下午非常认真的去听了方舟编译器的一些宣讲,其实还有一个文件管理器也很重要,不过大家的兴趣显然还是在方舟编译器上,这里给大家关心的一些问题做一些深度的解释。

1首先你要肯定的是这个东西很牛逼,牛逼到什么程度呢?大概就是假如现在汽车分柴油发动机和汽油发动机,那么方舟编辑器的意义就是通过了它,发动机可以加汽油也可以加柴油。或者说,它让发动机不挑油了。

2对于开发者有什么麻烦的么?其实没有什么麻烦的,你用汽油也好,柴油也好,只要倒进方舟编译器,出来的发动机都可以用。未来的目标是实现完全不用写新代码,直接把现在的代码重新编译就可以。也就是说,不需要再有团队去重新写代码。

3对于所有安卓系统全部兼容,甚至实现了跨平台支持,不管是ARM架构还是x86架构,不管是手机还是其他通讯设备,都可以使用。明确的说是可以脱离安卓框架的,用上面的例子解释就是,不仅支持汽车发动机,也支持飞机发动机和轮船发动机。

4使用之后,安卓的体验是可以达到IOS的水准的,甚至可以超过IOS的水准。但安卓的问题是,生态不如苹果严格,苹果很严格的规定了开发者调用的资源接口之类,但安卓没有规定,这会成为未来安卓的一种阻碍。而之前安卓不如IOS的原因是动态码需要虚拟机编译,所谓的边编译边执行,类似同声传译。而IOS等于是直接念翻译稿,所以更快。而现在方舟编译器也可以实现直接出翻译稿了,不需要同声传译了。流畅度大幅提升的秘密就在这。

5有什么缺点么?有,安装包的体积会扩大一倍以上。但是安装完成之后,安装文件会删除掉,所以最后安装完的包增加没有那么多,大概也就增加了25%。

6使用方舟编译器的APP可能会有特殊标识,来供用户选择,毕竟流畅的代价是包扩大了。

7可不可以做新系统?虽然没有直说,但前面说了,支持汽车、飞机、轮船,换句话说,你再造一个火车,也是可以执行的。换句话说,就是稿子都翻译好了,你在微信通话念还是打电话念都一样。所以重新编一套系统,因为脱离了安卓的虚拟机体系,也是完全可以执行的。

8什么时候上线?8月份华为开发者大会会发布,大家可以先学习。11月绿盟开发者大会会正式全面开源。

9谷歌的态度是什么?这套产品的框架完全符合谷歌的开发协议,但华为也事先跟谷歌做了深度的沟通,达成一致后,华为才公开宣布。至于未来,华为愿意把这套产品放入安卓 ...
喷了,一看就是外行,估计是枪文
作者: 离人最近的神    时间: 2019-4-26 08:14

posted by wap, platform: iPhone
别的不说,就一个安全问题,这种土狗背景,毫无诚信的企业,编译器直接给你插后门,谁用谁sb
作者: matao    时间: 2019-4-26 08:34

posted by edfc, platform: iPhone 8 Plus
引用:
原帖由 @离人最近的神于 2019-4-26 08:14 发表
posted by wap, platform: iPhone
别的不说,就一个安全问题,这种土狗背景,毫无诚信的企业,编译器直接给你插后门,谁用谁sb
喷了,华为还需要这么弄?现在各家手机必须接各家手机推送的sdk,要后门,华为推送sdk早就可以干了,而且现在华为推送sdk基本上属于100%接入,即使你用的不是华为手机

[ 本帖最后由 matao 于 2019-4-26 08:35 编辑 ]
作者: 饭团世界    时间: 2019-4-26 10:06

所以,方舟编译器和安卓的art模式有啥区别呢,安卓art模式不早就可以先全部编译了吗
作者: 睡睡平安    时间: 2019-4-26 10:17

说那么多干啥
沸腾就对了

我干不出来一边交钱买番茄 一边交钱让人开后门的事
您们随意
作者: 分分钟叫你做人    时间: 2019-4-26 10:48

posted by wap, platform: 小米5
兼容性要解决也不难。程序直接编译成机器码,然后连同各种所需的链或运行环境所需的各种资源一起打包成安装程序,然后手机安装这个程序后,链和资源都一起装进去了,就能运行了。

当年flash编译成安卓app就是这么做的,其实还是flash,只是编译后的app自带flash运行环境!

所以,华为也别整什么高深,99%就这么回事了!这也是解决跨平台兼容性问题最好的办法。毕竟所有平台系统都不是华为自己做的。

如果只有华为自家手机能运行,那可以事先把手机系统里的环境部署好,打包的程序就可以不用打包环境了。

不管是那种,这一切做法,很多公司以前都这么做过。最出名的就是adobe flash,结果死得最快!现在手机上的flash绝迹了,pc平台除了页游,其他也很少用了!
作者: 卖哥    时间: 2019-4-26 10:52

posted by wap, platform: Meizu M9
引用:
原帖由 @分分钟叫你做人  于 2019-4-26 10:48 发表
兼容性要解决也不难。程序直接编译成机器码,然后连同各种所需的链或运行环境所需的各种资源一起打包成安装程序,然后手机安装这个程序后,链和资源都一起装进去了,就能运行了。

当年flash编译成安卓app就是这么做的,其实还是flash,只是编译后的app自带flash运行环境!

所以,华为也别整什么高深,99%就这么回事了!这也是解决跨平台兼容性问题最好的办法。毕竟所有平台系统都不是华为自己做的。

如果只有华为自家手机能运行,那可以事先把手机系统里的环境部署好,打包的程序就可以不用打包环境了。

不管是那种,这一切做法,很多公司以前都这么做过。最出名的就是adobe flash,结果死得最快!现在手机上的flash绝迹了,pc平台除了页游,其他也很少用了!
并不是,类似osx在ppc和x86过渡时期的模式,双包。
java包+方舟的二进制包,硬拖到一般安卓也能用。
作者: 分分钟叫你做人    时间: 2019-4-26 11:24

posted by wap, platform: 小米5
引用:
原帖由 @卖哥  于 2019-4-26 10:52 发表
并不是,类似osx在ppc和x86过渡时期的模式,双包。
java包+方舟的二进制包,硬拖到一般安卓也能用。
双代码包那更没技术含量了,这不丢人么。。。
作者: fat508    时间: 2019-4-26 11:30

引用:
原帖由 分分钟叫你做人 于 2019-4-26 11:24 发表
posted by wap, platform: 小米5
双代码包那更没技术含量了,这不丢人么。。。
你在灌水论坛明白这明白那有什么吊用
原理既然这么简单
赶紧在小米公司成立米粥项目打的华为满地找牙啊
等什么呢
还是说你就是个销售,这块不归你管?
作者: 卖哥    时间: 2019-4-26 11:37

posted by wap, platform: Meizu M9
引用:
原帖由 @分分钟叫你做人  于 2019-4-26 11:24 发表
双代码包那更没技术含量了,这不丢人么。。。
有啥丢人的,混合语言编译这种硬骨头啃了。
如果这次ppt没吹牛,方舟编译器排除手机也是神器,对全领域而言,混合语言编译都是非常有意义的,突破了编译优化的上界。
作者: meltifa    时间: 2019-4-26 11:40

既然敢拿出来宣传,肯定是有一定的独到之处,哪怕比别家快10%也是优势,就算要黑至少也得先等东西出来再黑吧
泥潭柠檬精真是酸到一定境界了
作者: 卖哥    时间: 2019-4-26 11:49

posted by wap, platform: Meizu M9
我认识中的跨语言开发是语言a部分编译一个,语言b部分编译一个,两者靠各种接口通讯,这ppt直接打一起了。
还有一个这里没图但我别处看到的,方舟在开发轴上是最后的阶段,测试在轴的前面,也就是说安卓运行环境跑得通的情况下方舟版可以不用测试纯另存为。
至于垃圾回收,这种申明式的回收其实是倒退了,哪怕是自动申明。
作者: n2    时间: 2019-4-26 11:51

引用:
原帖由 meltifa 于 2019-4-26 11:40 发表
既然敢拿出来宣传,肯定是有一定的独到之处,哪怕比别家快10%也是优势,就算要黑至少也得先等东西出来再黑吧
泥潭柠檬精真是酸到一定境界了
gpu turbo用到现在是什么黑科技敢来宣传?
作者: 卖哥    时间: 2019-4-26 12:02

posted by wap, platform: Meizu M9
引用:
原帖由 @n2  于 2019-4-26 11:51 发表
gpu turbo用到现在是什么黑科技敢来宣传?
通过学习重匹配电压和频率的关系,允许在特定的应用中以更低的电压运行在更高的频率。

同时伴随的荣耀play的emui版本也更新了vulkan的驱动,整体提升了图形性能。
作者: n2    时间: 2019-4-26 12:05

posted by wap, platform: Android
引用:
原帖由 @卖哥  于 2019-4-26 12:02 发表
通过学习重匹配电压和频率的关系,允许在特定的应用中以更低的电压运行在更高的频率。

同时伴随的荣耀play的emui版本也更新了vulkan的驱动,整体提升了图形性能。
为什么图形还是要用劣化版本?
作者: 卖哥    时间: 2019-4-26 12:08

posted by wap, platform: Meizu M9
引用:
原帖由 @n2  于 2019-4-26 12:05 发表
为什么图形还是要用劣化版本?
没有为什么,硬件不支持,而且这和gt无关。
作者: 流浪的枪骑兵    时间: 2019-4-26 14:06

关于GPU Turbo,可以看看这一系列文章
https://zhuanlan.zhihu.com/p/43836575




欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) Powered by Discuz! 6.0.0