最新推荐
-
齐鲁银行网银助手3.0.0.5官方版 安全软件 / 3.0M
-
360安全卫士U盘病毒专杀(Autorun.inf专杀)13.0.0.213简体中文绿色免费版 安全软件 / 86.1M
-
360安全卫士U盘病毒专杀工具v13.0.0.213绿色免费版 安全软件 / 86.1M
-
360安全卫士修复工具v13.0.0.213免费版 安全软件 / 86.1M
-
360安全卫士超强查杀V13.0.0.213安装版 安全软件 / 86.1M
精品推荐
-
WeeeCode(图形化编程软件)v3.6.2官方版 编程开发 / 429.1M
查看 -
核桃编程v2.1.123.0官方版 编程开发 / 272.5M
查看 -
DevToys(开发工具)v1.0.11.0官方版 编程开发 / 156M
查看 -
吾爱OD(附118款脱壳脚本)v1.10中文版(32/64位) 编程开发 / 15.5M
查看 -
360加固助手v3.6.1.0官网版 编程开发 / 271.5M
查看
本类排行
详情介绍
华为方舟编译器是一款支持多语言的编译工具。它由华为开发,实现了从Java程序到aarch64汇编指令的编译过程。华为方舟编译器的开发者可以基于开源代码+二进制来编译构建编译工具。 Chain,尝试编译Java程序。
华为方舟编译器是一款支持多语言的编译工具。它由华为开发,实现了从Java程序到aarch64汇编指令的编译过程。华为方舟编译器的开发者可以基于开源代码+二进制来编译构建编译工具。 Chain,尝试编译Java程序。
基本介绍
方舟编译器概述
方舟编译器是一个统一的编程平台,旨在支持多种编程语言、多芯片平台的联合编译和运行。它包括编译器、工具链和运行时等关键组件。方舟编译器仍在不断发展,上述能力正在逐步实现并开源。
此次,方舟编译器开源了编译器框架的部分源代码,包括编译器中间表示(IR)和语言编译实现。它还与编译器的其他二进制组件配合使用,实现Java程序到aarch64汇编指令的编译过程。开发者可以基于开源代码+二进制编译构建编译工具链,尝试编译Java程序。社区参与者可以通过框架源码学习方舟编译器的编译器中间表达式(IR)和基本的中端编译框架,熟悉方舟编译器的架构思想,参与中端优化等贡献编译器的。
华为始终以开放的态度拥抱开源,全面参与源代码共享,与开发者共同实现开源世界的科技进步。华为在全球主流基金会和开源社区拥有十多个核心席位。作为Linux基金会的白金会员,华为持续贡献自己的技术能力,已累计为Linux内核贡献了6800+个补丁。同时,华为与40多家领先应用厂商合作,编译优化了各类热门应用,并将于近期推出。
此次发布方舟编译器框架源代码后,华为预计在2020年及以后实现方舟编译器工具链的完全开源。在官方开源社区中,开发者可以参与并贡献自己的力量,与华为共同推动基础软件的发展。
华为坚持每年将销售收入的10%以上投入研发。随着其软件实力不断增强,“GPU Turbo”、“Link Turbo”、“EROFS”等硬核技术也随之诞生。未来,华为将与开发者、合作伙伴开展更加深入、广泛的合作,坚持开放、合作、共赢的战略,连接全行业的能力,持续推动产业创新和开放生态。
软件特点
多语言联盟
在同一个应用中联合编译、联合优化不同语言的代码,消除语言之间的性能“差距”,降低开发者的优化成本。
轻量级运行时
通过编译器增强的语言实现和优化能力,应用程序运行时开销更小
软硬件协同
编译器和芯片实现软硬件协同优化,充分发挥硬件能效,提供更好的应用体验。
多平台支持
支持多种终端设备平台的编译和运行,根据设备特性提供便捷的开发和部署策略,提高开发效率
特征
1、开发阶段打包的APK直接可执行、跨语言平台
在方舟编译器中,编译好的APK在安装前会通过静态编译的方式转换为机器码。这其实就是AOT,不需要麻烦的虚拟机,提高了运行速度和效率。而且作为开发者,还可以根据不同的程序特性选择不同的编译优化方案,而不像Android官方采用统一虚拟机方案的方式。
2、方舟编译器运行时变得干净,内存刷新。
现在安卓手机的一大特点就是内存越来越大,6GB是老年人手机的配置。这除了程序体积较大之外,还与Android程序运行时产生大量垃圾有关。清理垃圾怎么办?那么程序就需要暂停,就会出现暂停的情况,也就是所谓的“卡住”。华为方舟编译器利用了程序多线程运行的特点。比如你现在使用的“中关村在线”APP,使用了两个线程A和B。在华为P30手机中,当线程A运行时,线程B在清理垃圾,然后当线程A在清理垃圾时,线程B在清理垃圾。 B正在清理垃圾。运行时,程序运行不中断,垃圾处理继续进行,实现连续性,节省系统资源。
3.方舟编译器,应用级编译优化
代码优化是编译器的核心功能,也是判断编译器好坏的最重要标准。
目前,由于Android应用程序采用虚拟机机制,因此很难针对不同的应用程序灵活地优化虚拟机。
Android ART的AoT和JIT动态编译运行在手机上,受到资源限制,只能使用简单的优化算法。
由于方舟编译器是在应用开发阶段进行编译的,因此可以允许不同的应用灵活采用不同的编译优化方案。而且,由于开发环境中的编译不受手机性能的限制,可以使用更先进的优化算法,从而最大化每个应用程序的性能。
指示
开发环境推荐
您需要安装64位版本的Ubuntu(推荐Ubuntu 16.04)
sudo apt-get -y 安装openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa -dev libxml2-utils xsltproc 解压缩lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-jenkins python-请求python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386
sudo apt-get -y 安装gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu
安装Clang编译器并完成配置(用于编译方舟编译器代码)
下载clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04
LLVM下载地址:http://releases.llvm.org/download.html#8.0.0
放在openarkcompiler/tools目录下,打开openarkcompiler/build/config/BUILDCONFIG.gn文件,将GN_C_COMPILER、GN_CXX_COMPILER和GN_AR_COMPILER这三个变量配置到Clang编译器的路径下,例如:
GN_C_COMPILER='${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang'
GN_CXX_COMPILER='${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang++'
GN_AR_COMPILER='${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar'
其中${MAPLE_ROOT}为openarkcompiler的源码根目录。
安装Ninja、GN并完成配置
下载Ninja(v1.9.0)及GN(Linux Version)
忍者下载地址:https://github.com/ninja-build/ninja/releases
GN下载地址:https://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8120b26f8aad8b878be/raw/?filename=gn
将GN和Ninja可执行程序放在openarkcompiler/tools目录下,打开openarkcompiler/Makefile文件,将GN和NINJA两个变量配置为GN和Ninja可执行程序所在路径。例如:
GN :=${MAPLE_ROOT}/工具/gn/gn
忍者:=${MAPLE_ROOT}/tools/ninja_1.9.0/ninja
常见问题
Q1:方舟编译器是一次性编码的吗?
回答:
第一个开源范围是编译器IR(中间表示)、RC(引用计数)和多语言设计思想等,用于与工业界和学术界交流。接下来,编译器的前端和后端将开源,以支持其他语言(例如JavaScript)的编译。目前,该开源代码中不包含对某些Java 语言功能和JVM 虚拟机功能的支持,包括:注释和lambda 表达式。公式、泛型等,还有很多不完善的地方,会在社区中迭代。如果您遇到任何问题,请在社区中提交问题。欢迎您继续在社区讨论设计和代码构建。
Q2:通过哪些渠道可以获得方舟编译器的框架源码?
回答:
孵化期间,开发者可以通过以下代码托管网站获取相关代码和文档,以参考和了解方舟编译器的架构和代码。
华为云托管地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler。
开源中文代码云托管地址:https://gitee.com/harmonyos/OpenArkCompiler
Q3:方舟编译器的开源路线图是什么?
回答:
方舟编译器自2019年8月开始开源,欢迎应用开发者、手机厂商、软件从业者共同构建开源社区和生态。开源计划大致安排如下:2019年8月,重点关注开源框架部分,随后将陆续开放开源编译器的前端和后端;支持Java程序编译、JavaScript语言应用程序编译等。
Q4:方舟编译器开源使用什么License?
回答:
方舟编译器采用木兰许可证。木兰License是由业内众多专家和公司共同打造,并非华为主导。花木兰牌照的具体好处请看专业点评:
开源中国:https://www.oschina.net/news/108840/mulanpsl-the-1st-opensource-license-of-china
开元社:https://mp.weixin.qq.com/s/1xqxxiNKhcgw4RRspAaW2A
InfoQ:https://www.infoq.cn/article/KrZAbAcJrxCU27vKj*JE
Q5:如何确认下载包来自可靠来源? md5校验码是什么?
回答:
OpenArkCompiler-0.2-ubuntu-16.04-x86_64.tar.gz包的MD5代码为:e7dc8b8c242f2d26429e2ad71dae3112
OpenArkCompiler-0.2.tar.gz包的MD5码为:1bf859a67c8b9a2d4080bdaf25ef6181