写点什么

Android 编译器及编译工具之编译器

用户头像
轻口味
关注
发布于: 16 小时前

习惯了 IDE 以及各种现成的编译工具为我们提供便捷的编译方式,我们很少会操心编译工具的编译过程和原理,但是工具越高级,隐藏的细节就越多,这样编译遇到问题时我们难以定位,遇到复杂的项目(尤其跨平台项目难以用 ide)时不知如何下手。所以准备写两篇关于编译器和编译工具的文章。本文先来介绍编译工具。


主要从事 Android 开发,本文主要介绍 Android、iOS 用到的编程语言及编译器。

Java/Kotlin/Groovy

这三种编程语言都是基于 Java 虚拟机的。由于 JVM 的存在,所以 Java 既是编译型语言,又是解释型语言。将 JVM 理解成操作系统,它是编译型语言;从物理操作系统的角度,它又是解释型的。JVM 负责把编译成的.class 解释成最终 CPU 理解的二进制字节。它为了实现跨平台牺牲了效率。

Java 编译工具

我们还是先以一个最简单的 HelloWorld 开始。


public class HelloWorld{    public static void main(String[] args){        System.out.println("Hello, World!");    }}
复制代码


命名成 HelloWorld.java。还记得 Java 为我们分别提供了编译工具 javac 和执行工具 java 吗?我们使用 javac 编译:


javac HelloWrold.java
复制代码


在与 HelloWorld.java 统计目录下看到生成了 HelloWorld.class,我们继续执行该 class 文件:


qingkouwei:~/javaLinux/w1$ java HelloWorld.classError: Could not find or load main class HelloWorld.class
复制代码


报错了,我们回想一下java的参数,传入的是 main 函数所在的类的名字,而不是 class 文件;java 会根据类名自动去找 class 文件。我们改成java HelloWorld就可以成功看到输出结果了。

带包名类编译

上面例子太简单了,我们加上包名来一遍:


package com.qingkouwei.demo;public class HelloWorld{    public static void main(String[] args){        System.out.println("Hello, World!");    }}
复制代码

Kotlin

Groovy

C/C++

dart

oc/swift

总结

用户头像

轻口味

关注

🏆2021年InfoQ写作平台-签约作者 🏆 2017.10.17 加入

Android、音视频、AI相关领域从业者。 邮箱:qingkouwei@gmail.com

评论

发布
暂无评论
Android编译器及编译工具之编译器