2.4.1. Android 与 Java
2.4.1.Android 与 Java
图 2.2. JVM和Dalvik
平常的Java开发都是先编写Java代码,然后通过Java编译器编译成字节码,最后在JVM上运行。但在Android中并非如此。相同的是仍需编写Java代码然后编译为字节码,但Dalvik编译器在执行前,会将Java字节码重新编译为Dalvik字节码。到最后真正执行的是Dalvik字节码。图2.2 JVM和Dalvik展示了标准JVM(左侧)与Android的Dalvik(右侧)之间的区别。
Note: 提及Java,身为程序员像是有很多工作需要做。但实际上许多的复杂步骤都可以由Eclipse或者ant这样的工具自动完成,而你几乎不会感觉到这些步骤存在。
你也许想知道,为什么不直接把Java代码编译成Dalvik字节码呢? 这是有考虑的。让我们回到2005年 Dalvik 项目刚刚开始时,当时 Java 的语法修改很频繁, 但 Java 字节码基本上没有什么太大的改动。于是 Android 团队决定使用 JVM 字节码而不是 Java 源码来产生 Dalvik 代码。
这样做得到的好处是, 理论上你可以使用任何可以编译成 Java 字节码的语言来开发 Android 应用,比如 Python 或者 Ruby 。 我说“理论上”是因为你还需要可用的 SDK 和库。不过有万能的开源社区在,未来会出现一套完善的解决方案也未可知。
另外需要注意的是 Android Java 并非来自标准的 Java 家族。 Java 一般分为:
- Java 标准版:用于开发基本的桌面型应用。
- Java 企业版(也叫 J2EE 或者JavaEE ): 用于开发企业级应用。
- Java 微型版(也叫 J2ME 或者JavaME ): 用于移动平台的 Java 。
Android的Java类库比较接近 Java 标准版,它们的主要区别在于Java类库的GUI接口( AWT 和 Swing )被替换成了 Android 的专用接口。 Android在支持标准 Java 的类库之余,也提供了若干新功能。这一来你可以很快地上手Android开发。