在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qt for android)、Mono(mono for android)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的Android Simple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。
而在Android系统底层方面,Android使用C/C++作为开发语言。
Android的系统架构和其它操作系统一样,采用了分层的架构。分为几个部分,从高层到低层分别是应用程序层(Applications)、应用程序框架层(Appliction Framework)、系统运行库层(Libraries)、Android运行时(Android Runtime)、linux核心层(Linux Kernel)。
Applictions: Android提供了一组应用程序,包括日历、地图、浏览器、通讯录等。这部分程序使用java编写。
Appliction Framwork:无论是Android提供的应用程序或是自己编写的程序,都需要使用Appliction Framwork。通过它,可以大幅度简化代码的编写,而且可以提高程序的复习性。
Libraries:Android提供了一组c/c++库,他们为平台的不同组件所使用。开发者通过Appliction Framwork来使用这些库提供的功能。
一些核心库的如下:
*系统C库 - 一个针对于标准C系统库(libc)的BSD派生的实现,针对于嵌入式Linux设备进行了调整
*Surface管理器 - 管理访问显示子系统和从多个程序中无缝合成二维和三维图形层
*LibWebCore - 一个流行的Web浏览器引擎,它对Android浏览器和嵌入式Web视图具有良好的支持
*3D库 - 基于OpenGL ES 1.0 API的一个实现;该库使用硬件3D加速(如果可用)或包含高度优化的3D软件光栅扫描器
*FreeType – 用于位图和矢量字体渲染
*SQLite - 一个提供给所有的应用程序使用的强大的,并且轻量级的关系型数据库引擎
Android Runtime:Android运行时包括核心库和Dalvik虚拟机两部分,核心库提供了java语言核心库中包含的大部分功能,虚拟机负责运行程序。Dalvik虚拟机针对移动设备编写,效率高且占用内存小。每个Android应用都运行在它自己的进程里,并依附一个单独的Dalvik虚拟机实例。一个设备可以高效地运行多个Dalvik虚拟机。 Dalvik虚拟机的底层功能依赖Linux内核,例如线程和底层的内存管理。
Linux Kernel:Android使用Linux2.6版内核提供的核心系统服务,包括安全性、内存管理、进程管理等。
结构图