Android系统脱胎于Linux,借助Java的jvm思想,形成了自己特色的操作系统,现在描述其框架。
一、系统框架图:
二、框架说明
1、内核层:android内核采用Linux内核,实现操作系统的核心功能。
1)文件系统管理:实现对文件的存储、空间分配、用户权限、基本操作(建立、拷贝、移动、命名、删除、打开、保存、查找)的管理。
2)网络通信:实现设备的数据传输通信息服务,主要实现ISO网络模型的前面4层的功能,即提供应用程序间端对端的通信、提供设备点的物理通信、提供传输媒介的打包、折包,提供把包拆分为帧,把帧变成二进制信息加以传输。手机能够打电话,就是这个核心功能。
3)设备管理:这儿的设备管理是一般是除了CPU、内存设备外的设备,一个手机常用的设备有:GPS感应仪、摄像头、键盘、触摸民屏、温感仪、重力感应器、USB接口、SD卡、电池。其作用时加载其驱动、进行设备分配与回收、控制设备的IO。
4)内存管理:管理系统内核空间的分配、管理应用程序内存的分配
5)线进调度:线程管理,主要对cpu资源加以调度
2、运行支撑层
内核只是提供了基本的功能,运行支撑层的库,是一些应用程序可能在开发中会用到的底层功能。
3、Davlik:运行在android手机上的虚拟机,google不把他叫jvm 了。通过JNI方式调用1、2层的C程序
4、应用框架:就是google发行android版本时,增加一些系统常用的功能:如打电话、发短信、闹钟、摄像机、通知栏、程序安装与绡卸载。
5、自定义开发,就是开发自己的应用程序。
三、框架感想
1、现在Android的应用程序支持C与java开发, C开发也是通过jni调用。因为有Davlik,理论上是可以支持C#、JS等语言开发,但要支持MS的公用语言库,这个是不现实的。
2、Davlik虚拟机可如果移植到其他发行版Linux上,配合Google非常精简的MVC编程模式,我想Linux的桌面应用会有光大甚至超MS的那一天。
3、Java的客户端界面编程,要好好地借助下Google的思想,界面是界面(用xml文件表示),通过开发工具在开发时就生成相对应的类(不需要运行时弄一堆反射),即让界面的制作变得非常简单,又开始对工作进行分工,在Android下,美工人员通过简单培训就能搭建很好的表示(压根不需要写一行代码),在控制层模型层让程序员充分发挥。(题外话:界面与代码分离的始祖应该是Delphi开发工具)。Java的客户端编程整个思路要变了,不能通过Java代码在开发环境来直接生成用户界面了。
评论