Android与Java在编译及类库方面的主要区别

转载 2015年11月18日 11:45:46

在Java中,你写好Java源文件,用Java编译器将其编译成Java字节代码,然后在Java虚拟机中运行这些字节码。在Android中,情况就有些不同编写Java源文件,仍就使用相同的Java编译器将其编译为Java字节代码但在这之后,你还得再一次使用的Dalvik编译器重新编译成为Dalvik字节码。正是这些Dalvik字节代码,Dalvik虚拟机上运行2-2展示了在标准Java中左)与在Android中使用Dalvik(右)编译过程的区别。

  

2

图2-2. Java与Dalvik

  

看起来你在Android编程工作中会比在Java中做更多的工作。然而,这些编译工作都会由工具软件自动完成,比如说Eclipse和Ant,你永远不会注意到这些额外的步骤。


你可能会奇怪,为什么不直接从Java源文件编译Dalvik字节?有一堆原因造成这额外的步骤早在2005年,Dalvik创建之初,Java语言正在经历频繁的变化,但是Java字节码相对来说是“坚如磐石”因此,Android团队选择相应Java字节代码而不是Java源代码用于Dalvik


由此产生的“副作用,在理论上你可以用任何其他能够编译成Java字节码的语言来编写Android应用例如,可以使用Python或Ruby我说“在理论上“,因为在实践中需要作为SDK组成部分的相应库文件支持开源社区很有可能在将来想出了一个解决方案

  

另外一个值得注意的事情是,Android中的Java类并非一个标准的Java类集合。Java通常按以下形式发布:

  

Java标准版本  

    用于普通桌面应用的开发

Java企业版本

    用于企业应用的开发

Java微版本

    用于移动应用开发

  

Android的Java库更接近于Java标准版本。最主要的区别是Java用户界面类库(AWT和Swing)被摒弃了,取而代之的是Android特定的用户界面类库。Android还在标准Java类库上增添了不少新属性,能够支持绝大多数的Java标准属性。于是,你就可以任意使用绝大多数的Java类库,同时还会有一些新的可用。


节选自O\'REILLY出版社的<Learning Android>一书第二章一个小节---简单介绍了Android与Java在编译及类库方面的主要区别。

相关文章推荐

在Android源码中编译自己java应用程序

上一篇文章中讲了一个打通jni,java framework,application三层的练习, 下面讲下如何在Android源码中编译自己的与hellojni对应java应用程序。 1....

一---Android-SDK系列文章(3) ---java(自己动手编译、运行Java程序)

一、开发环境 1.集成开发环境        配置Java运行时环境(JDK)、Eclipse、NetBeans这些开发工具 2.独立开发环境        仅需要配置Java运行时环境(JDK...

Webkit for android java层主要类库关系及浏览器实例讲解

Webkit forandroid的主要框架 第一 安卓4.4  以前的框架

VB.NET与VB编程方面的主要区别

  • 2008年07月14日 16:31
  • 662KB
  • 下载

堆和栈的区别(主要从内存分配方面来说)

在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识...

java多态的实现主要体现在哪些方面

thinking in java3中的多态 People are often confused by other, non-object-oriented features of Java, like...

Android Studio导入第三方java类库含源代码包

下面演示如何在本项目中导入第三方的源代码类库,这里例子是导入photoedit类库。 先把photoedit类库copy到你项目的目录下,如下图所示: 添加后android studio的项目...

Retrofit——Java(Android) 的REST 接口封装类库(相当于IOS中的restkit)

简介 Retrofit 是一个Square开发的类型安全的REST安卓客户端请求库,这个库为网络认证、API请求以及用OkHttp发送网络请求提供了强大的框架。因为其简单与出色的性能,Retrofi...

Retrofit – Java(Android) 的REST 接口封装类库

Retrofit   和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit 把REST API返回的数据转化为Java对象方便操作。同时还封装了网络代码的调用。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android与Java在编译及类库方面的主要区别
举报原因:
原因补充:

(最多只允许输入30个字)