终端知识 | 什么是编译器

Posted 普天太力HESR服务平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了终端知识 | 什么是编译器相关的知识,希望对你有一定的参考价值。

2019年4月11日,华为在P30系列旗舰产品的发布会上,首秀了“华为方舟编译器”,将帮助众多安卓应用在无需重新开发的基础下,大幅提升应用的运行速度与流畅性,极大改变安卓生态体系。

那么,编译器到底是什么?

编译器是一种面向软件开发工程师用的电脑程序,它将软件工程师编写、维护的源代码(source code),翻译并重新编写,转换成机器可解读、运行的目标语言程序(object code,或可执行文件)。

『源代码』

源代码一般为面向程序员的高阶语言 (High-level language),如安卓程序,一般用Java语言编写。

『目标语言』

而目标语言则是面向计算机的汇编语言、二进制语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code),不适合人类阅读,用于程序的运行。

编译器是面向软件的软件、管理程序的程序,其参与的开发者也必须均是软件专家中的软件专家。它与操作系统开发、软件编程语言发明等一起,并列属于全球软件开发工程中的最核心体系。


安卓应用程序的执行过程

我们使用的安卓应用,大都是由Java 语言编写的程序。但因为Java程序不能直接在 CPU 上运行,因此需要在CPU上增加一个“中间层”,负责Java代码的执行( CPU -> 中间层 -> Java 代码)。

中间层上的Java应用执行方式,目前有三种:

解释执行

ava程序的传统采用方式,类似同声传译,“输入一句 ”->“翻译一句”->“执行一句”,依次重复。

AOT编译

在程序运行之前直接把 Java 代码编译为CPU可高效执行的机器语言,称之为 AOT (Ahead of time)编译。

JIT编译

在程序运行起来之后,实时地把 Java 语言编译为机器语言然后执行,称之为 JIT(Just in time) 编译。

解释执行的应用安装方式简单,但运行效率低,也是早期安卓应用体验不如苹果ios的原因。


目前android 采用的是: “AOT + JIT + 解释执行”的混合方式,以便在空间占用+安装速度+运行速度上达到较好的水平。


★END★



以上是关于终端知识 | 什么是编译器的主要内容,如果未能解决你的问题,请参考以下文章

vscode 终端输出展示不全,无法翻页

无法使用 Xcode 和终端在 Mac OS 上使用 OpenGL 库编译 c++ 文件

linux下c编程怎么编译

在 linux 终端上使用 c++ 编译示例 opengl 应用程序

Python基础知识之pyc是什么鬼

Ubuntu的终端用GCC编译C源代码提示找不到命令?