Android架构
参考:http://www.cnblogs.com/skynet/archive/2010/04/15/1712924.html
软件叠层架构(Software Stack):操作系统(Linux Kernel+Android Runtime)+中间件+应用程序
1、Linux Kernel
kernel即操作系统内核,Linux Kernel作为硬件和软件之间的抽象层,隐藏硬件细节,为上层提供统一服务
分层的优点:使用下层提供的服务而为上层提供统一服务,提供固定的SAP,使得本层及下层对上层来说是透明的,“高内聚低耦合”
“高内聚低耦合”这个概念是软件工程中的,主要用来评价面向对象的设计
内聚,是一个模块内各成分之间相关联程度的度量,高内聚是说各成分之间关联关联性强,这里就是说各层次内部相关性很高
耦合,是一个软件结构内不同模块之间互联程度的度量,低耦合是说模块之间独立性强,这里就是说各层次比较独立完成功能,提供少而简单的接口
2、Android Runtime
Core Library即核心类库,提供大部分在Java核心类库中需要用到的功能
Dalvik VM,是Google自己设计应用于Android平台的Java虚拟机,Dalvik这个词来源于其作者的祖先生活过的位于冰岛的一个小渔村
Android应用程序启动过程:init进程--fork-->Zygote进程--fork-->应用程序进程,第二个fork使得应用程序进程复制了Zygote进程的Dalvik VM实例、共享其Java核心库,这一方面使得每一个应用程序都有一个Dalvik实例,保证了程序的独立性,另一方面使得程序得以快速创建
Dalvik VM和JVM的比较:JVM基于栈,执行的是字节码,Dalvik基于寄存器,执行的是自己特有的.dex文件 http://blog.csdn.net/luoshengyang/article/details/8852432
JRE(Java Runtime Environment,java运行环境,也就是java平台),包括JVM、java核心类库和支持文件
JVM(Java Virtual Machine)包含完整的硬件架构和一个指令系统,作用是处理.class文件,即将java语言编写的目标代码(字节码)解释成具体平台上的机器语言,弃用本机自己的硬件架构和指令系统而虚拟出了一台计算机,这也是java实现“一次编译,到处运行”的原因
JDK(Java Development Kit,java软件开发工具包)包含JRE,用于开发者完成编译和解释整个开发过程
3、Libraries(/Native层 /原生层 /本地框架)
C/C++库集合,向下和底层硬件驱动交互,向上和上层java代码通信(JNI(Java Native Interface)机制)
4、Application Framework
5、Applications