整体上,Android平台和其他装有Java虚拟机的手机平台类似,都是底下是硬件和OS,然后上面是Java虚拟机和一些lib,再上面是一些应用。相对而言,Android平台是把Java虚拟机的作用范围扩大了,看起来倒有点纯Java平台的意思。当然,Android的虚拟机是Dalvik,上面的扩展部分(Framework)也不是JSR。说起来,JSR由于涉及的厂商过多,更新完善的确有点慢,而Android由Google主导,不仅可以把多个JSR的功能更好的整合在一起,优化架构,而且更新也更快。自发布以来,短短几年间,已经更新多个版本,现在都要发布4.0了。这样即使一开始有许多问题,有功能不完善的地方,慢慢地也变好起来了。此外,Android平台的整体硬件配置要求挺高的,这样也有利于集成完整的特性,包括最新的特性。
Android作为一个平台,包含了底下的OS,中间的lib,以及上面的应用,因而它的一些接口、特性其实与OS,lib这些是紧密相关的。譬如Android采用的是Linux 2.6内核,那么就能使用PID,TID,UID等等这些Linux中的概念;带有SQLite数据库引擎,那么就可以提供数据库访问方式的接口。这点与Java不一样,Java是平台之上的一个组件,由于要跨平台,其实很难充分利用特定平台上的特性,不过也因此Java应用能够在多种手机上运行。相比之下,Android应用就只能在Android手机上运行了。当然,由于Android是开源的,Google的支持力度也比较大,所以成本相对比较低,自然有厂家采用,量大了,也就不怎么有要跨平台的需求了。
说到应用开发,虽然Android应用和Java应用不是同一种东西,但是Android应用可采用Java语言,相对来说,能节省学习时间。另外,应用的基本开发方式也差不多,都是运行流程、lifecycle已经规定好了,只要往其中添加代码就行了。再者,Java的类包也能复用。因而对于Java开发者来说还是比较容易上手的,这样有利于把Java开发者拉到Android阵营中来。
Android作为一个平台,包含了底下的OS,中间的lib,以及上面的应用,因而它的一些接口、特性其实与OS,lib这些是紧密相关的。譬如Android采用的是Linux 2.6内核,那么就能使用PID,TID,UID等等这些Linux中的概念;带有SQLite数据库引擎,那么就可以提供数据库访问方式的接口。这点与Java不一样,Java是平台之上的一个组件,由于要跨平台,其实很难充分利用特定平台上的特性,不过也因此Java应用能够在多种手机上运行。相比之下,Android应用就只能在Android手机上运行了。当然,由于Android是开源的,Google的支持力度也比较大,所以成本相对比较低,自然有厂家采用,量大了,也就不怎么有要跨平台的需求了。
说到应用开发,虽然Android应用和Java应用不是同一种东西,但是Android应用可采用Java语言,相对来说,能节省学习时间。另外,应用的基本开发方式也差不多,都是运行流程、lifecycle已经规定好了,只要往其中添加代码就行了。再者,Java的类包也能复用。因而对于Java开发者来说还是比较容易上手的,这样有利于把Java开发者拉到Android阵营中来。