1.Android 中的Activity表示用户设备的屏幕或屏幕的一部分。它是一个名为Android.app.Activity的Java类的实例 .

2.Android 有很多组件,他们可以通过组合组件出自己的Java类。

Android编译器: 源代码由标准Java编译器编译,它使用JIT” 编译模型。编译后它会变成字节码 (带有’.class’扩展名)。这段代码进行了第二轮的编译(再次是Bytecode - 但这次被最小化)。字节码由目标特定的JVM(Java虚拟机)执行,该虚拟机是Java的运行时环境。
虚拟机有两种:
DALVIK: 缺点 :在用户运行应用程序的时候进行编译,使得应用程序启动过程减慢,导致阻碍用户的体验。

ART优点:使用提前编译模式,在安装时将应用编译为机器代码 应用程序运行有点更快!在ART下,所以应用程序的启动时间缩短了。 它还改进了垃圾回收,以便用户在低内存环境中看到更少的停顿和停顿。

ART缺点:
安装时间问题: ART的安装过程很慢,需要转码。
大小问题:在安装时编译代码意味着应用程序将Java代码转换成机器或字节码将相对较大。

您将需要JDK(Java Developer Kit)来编译应用程序的Java代码。
来自运行时和自定义库的代码和预编译类首先由“Javac”(JIT编译器/标准Java编译器)编译。
Javac输出一组Java字节码文件。到目前为止,这看起来像任何Java编译器进程,但是下一个编译步骤使得编译过程对于Android来说是独一无二的。

2.2混淆器!(ProGuard工具)
这个步骤是可选的,你可以省略这个步骤。
ProGuard工具采用Java字节码文件(作为步骤1输出),并通过名为ProGuard的工具发送。它会最小化和模糊(意思是 - 使您的代码变得模糊,不清楚或无法理解)。
默认情况下,在新的Android项目中禁用它,但是当ProGuard打开时,它将分析您的代码并删除方法的实现,例如,未调用的方法。
这可以大大缩小您的可分发应用程序包。它还通过更改方法名称等来模糊您的代码,从而使第三方或组织难以对打包的Java代码进行反编译。
无论使用ProGuard,您都会再次使用.class文件(最小化字节码)。

2.3从最小化的字节码到dex代码
下一步是从步骤2获取输出文件,并将这些文件转换为dex bytecode - Dalvik EXecutable(.DEX)。
DEX字节码是针对Android进行优化的格式,可以由较旧的DALVIK运行时或较新的ART运行时执行。

2.4执行机器代码
设备的运行时读取这些dex文件(步骤3的输出),并重新编译一些文件到机器代码以实现最快的执行。
在DALVIK上,这个步骤发生在应用程序使用即时或JIT架构运行。
在较新的ART上,当应用程序首次安装时,会重新编译(或转换为机器代码),这意味着当用户在他/她的设备上运行应用程序时,应用程序可以运行得更快。
这就是你的Java代码变成在Android上运行的东西。它以Java开始,经过几步,它被转换成Android运行时可以读取和执行的东西。