Android简介
Android是一个基于Linux内核的开源手机操作系统,Android的系统构架主要包含四个部分,从下往上依次是:操作系统层:Linux内核 + 系统库和Android运行环境 + 应用程序框架 + 应用程序。
Android系统架构图
知识储备:Android系统架构_第1张图片
Android系统架构简介

  1. 操作系统层:Linux内核
    Android是基于Linux内核的,这是一个位于硬件和软件之间的抽象层,操作系统层主要包括了一些与移动设备相关的驱动程序,譬如说:音频驱动啊、蓝牙驱动啊等
  2. 系统库和Android运行环境
    1) 系统库主要包括了一些C、C++实现的库,这些库能被Android系统中不同的组件使用;2D和3D图像库;SQLite数据库。
    2) Android运行环境主要指的是Dalvik虚拟机。Dalvik虚拟机和一般Java虚拟机(Java VM)不同,它执行的不是Java标准的字节码(Bytecode),而是Dalvik可执行格式(.dex)中的执行文件。在执行的过程中,每一个应用程序即对应Linux中的一个进程。二者最大的区别在于,Java VM是基于栈的虚拟机,而Dalvik是基于寄存器的虚拟机。
  3. 应用程序框架
    Android的应用程序框架为应用程序层的开发者提供了API,开发人员主要是通过这个来是先自己的app的。譬如说应用程序员框架为我们提供了各种视图组件啊。ContentProvider组件啊。
    4、应用程序
    应用程序主要指的是Android为我们提供的一些核心应用,譬如说电话、短信、浏览器啊这些。

Dalvik虚拟机

什么是dalvik虚拟机
(类比于JVM)

  1. Dalvik虚拟机是专门用来执行Android应用程序的虚拟计算机,可以简单把Dalvik虚拟机理解成JVM的一个改进或者是升级。
  2. 既然是能够执行Android应用程序的虚拟计算机,它最基本的功能即:dalvik虚拟机有自己的一套完整的硬件框架,包括处理器啊,寄存器啊,存储器啊为Android应用程序的执行提供硬件环境;同时dalvik能够实现对android应用程序中对象的生命周期管理啊、垃圾回收管理啊,而且dalvik虚拟机的内核是基于Linux的,有更好的进程管理和内存管理。
  3. 既然dalvik又是JVM的一个改进,怎么理解呢,即dalvik与

dalvik与JVM的简单比较
JVM有如下不同和优势:
1、最大的不同是dalvik是基于寄存器的,而JVM是基于栈的
①、我们知道,寄存器的执行效率比内存栈的执行效率更接近处理器,因此dalvik执行程序的速度更快。
②、寄存器所占的控件比栈所占的空间小很多,因此可以做到一个Android应用程序对应于一个dalvik虚拟机实例,每一个dalvik虚拟机实例都是一个独立的进程,这就能够使得dalvik崩溃的时候不会影响其他应用程序的执行。
2、jvm执行的是二进制文件(class文件),而dalvik执行的是dex(dalivik excution)文件,dex文件又是对class文件的一个整合和优化,减少了class文件的冗余信息,一进步提高Android程序的执行效率。

dalvik与ART的简单比较

  1. 2014年11月1日,Google推出Android4.4版本KitKat,ART(Android Runing Time)虚拟机将替代Dalvik虚拟机。
  2. dalvik在每次运行Android应用程序的时候都要通过JIT(just-in-time)编译器将程序解释成硬件可执行的二进制代码,,这就是为什么搭载 Android 系统的手机相比 iPhone 来说耗电快,软件占内存大,卡顿严重。从而 Dalvik 被看作安卓运行效率低下的“毒瘤”。
  3. ART在第一次安装应用程序的时候就直接把Android应用和程序代码预编译成机器语言,这一机制叫 Ahead-Of-Time (AOT)编译,而不用运行的一次解释一次。
  4. 因此ART一般会:安装app时间长、要的存储空间也比较大、但是运行所需的内存小、耗电少、执行速度快,但兼容性差。

更多相关文章

  1. 用git下载Android的某个应用程序
  2. Android应用程序启动过程源代码分析
  3. Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedC
  4. Android应用程序与SurfaceFlinger服务的连接过程分析
  5. Android核心分析(20)----Android应用程序框架之无边界设计意图
  6. Android应用程序消息处理机制(Looper、Handler)分析(1)
  7. Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程

随机推荐

  1. Android(安卓)内存详细分析
  2. 转: Android基于HLS和RTMP协议的第三方SD
  3. 关于openGL, openGL ES, openVG及android
  4. Android教程之MediaStore
  5. Android之网络通信
  6. 在android中使用Post方式提交数据
  7. android源码下载 一马平川
  8. Android原生(Native)C开发之一:环境搭建篇
  9. Android开发:最全面、最易懂的Android屏幕
  10. 关于OPhone和Android以及JIL widget的问