一、Native APP:基於智能手機操做系統,並使用原生程序編寫運行的應用程序,有IOS,Android,Windows Phone8等系統java
二、Web APP:運行在智能手機瀏覽器上的應用程序,主要採用HTML5,CSS和JavaScript開發android
三、Hibrid APP:介於Native APP和Web APP之間的混合移動應用,經常使用開發框架:PhoneGap,AppCan,Rexsee編程
四、Light APP:在已有手機APP上開發的插件或服務,也叫作微應用或輕應用,例如,百度輕應用,UC網頁應用,微信公衆號瀏覽器
Android系統的底層創建在Linux系統之上,該平臺由操做系統、中間件、用戶界面和應用軟件4層組成,它採用一種被稱爲軟件疊層(software Stack)的方式進行構建。這種軟件疊層結構使得層與層之間相互分離,明確各層的分工。其本質就是在標準的Linux系統上增長了Java虛擬機Dalvik,並在Dalvik虛擬機上搭建一個java application framework,全部的應用程序都是基於java的application framework之上。安全
Android平臺的架構圖以下:性能優化
從圖中能夠看出,Android系統是由五大部分組成的:服務器
一、應用程序層(APPLICATIONS)微信
Android系統將包含系列的核心應用程序,包括電子郵件客戶端,SMS程序,日曆,地圖,瀏覽器,聯繫人等。這些應用程序都是用java編寫的。網絡
二、應用程序框架(APPLICATION FRAMEWORK)架構
當開發應用Android應用程序時,就是面向底層的應用框架進行的。從這個意義上來看,Android系統之上的應用程序時徹底平等的,無論Android系統提供的程序,仍是普通開發者提供的應用程序,均可以訪問Android提供的API框架。
三、函數庫(LIBRARIES)
Android包含一套被不一樣組件所使用的C/C++庫的集合。通常來講,android應用開發者不能直接調用這套C/C++庫,但能夠經過上面的應用程序框架來調用這些庫。
四、Android運行時(ANDROIDRUNTIME)
Android運行時由兩部分組成:Android核心庫集合(Core Libraries)和Dalvik虛擬機(Dalvik Virtual Machine)。其中核心庫集提供了java語言核心庫所能使用的絕大部分功能,而虛擬機則負責運行Android應用程序。每一個Android應用程序都運行在單獨的dalvik虛擬機內(即每一個Android應用程序對應一條Dalvik進程),Dalvik專門針對同事高效運行多個虛擬機進行優化,所以Android系統很方便實現對應用程序進行隔閡。
因爲Android應用程序的編程語言是java,所以有些人會把Dalvik虛擬機和JVM搞混,但實際上兩者存在區別:Dalvik並不徹底遵照JVM規範,二者也不兼容。實際上,JVM虛擬機運行的是Java字節碼(一般是.class文件),但dalvik運行的是其專有的dex(Dalvik Executable)文件。JVM直接從.class文件或者JAR包中加載字節碼而後運行;而Dalvik則沒法直接從.class文件或JAR包中加載字節碼,它須要經過DX工具將應用程序的全部.class文件編譯成.dex文件,Dalvik則運行的是該.dex文件
Dalvik虛擬機很是適合在移動終端上使用,相對在PC或者服務器上運行的虛擬機而言,Dalvik虛擬機不須要很快的CPU計算速度和大量的內存空間,它主要有以下兩個特色:
(1)運行專有的.dex文件。專有的.dex文件減小了.class文件中冗餘信息,並且會把全部.class文件整合到一個文件中,從而提升運行性能;並且DX工具還會對.dex文件進行一些性能優化。
(2)基於寄存器實現。大多數虛擬機(包括JVM)都是基於棧的,而Dalvik虛擬機則是基於寄存器的。通常來講,基於寄存器的虛擬機具備更好的性能表現,但硬件通用性上略差。
五、Linux內核(Linux kernel)
Android系統創建在Linux 2.6之上的,Linux內核提供了安全性、內存管理、進程管理、網絡協議棧和驅動模型等核心系統服務。除此以外,Linux內核也是系統硬件和軟件疊層之間的抽象層。