Android 系统架构_第1页
Android 系统架构_第2页
Android 系统架构_第3页
Android 系统架构_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android 系统架构 前言前言 在 Apple iPhone 引起了广大群众和业界对于高阶行动装置应用的注目 另外也在市面上掀 起了一阵波澜 从许多角度观看 iPhone iPhone 可以说是一个销售不错的单一产品 然 而 iPhone 能否持续热潮也是相当值得注意的事 而 Microsoft 一直有着自己的手持式平台 Windows CE Mobile 与相关的合作伙伴 在这块市场上目光也集中在另一个软件巨头 Google 对于 Google 在这块市场的后续行动 或许 iPhone 的炒作起了作用 iPhone 单一 产品的思维让人们一直不断地传言 Google 将类似 Apple iPhone 也推出自己的手机终端产品 gPhone 甚至有人对于该预期存在的 gPhone 的 产品规划和网络应用方面 都有相当的预 测 而在 2007 年 11 月 Google 公布了 Android 计划 一方面映证了 Google 确实对于 Mobile Device 有着长久的计划和行动 一方面也否定了 gPhone 这样单一的产品存在 如 预期的网络上出现了许多关于 Android 的评论 综观这些评论 有的是浅尝即止 有的是 过于聚焦在技术层面的政治争议 不然就是忽略了平台技术在应用上的影响和差异差异而 大放市场策略的预测 更甚者拿着现有的 Android Emulator 说着不知所以的说着 gPhone 抄袭 iPhone 的 UI 的可笑话 本文希望从系统和技术层面上探讨 Android 对于应用层面的 影响 或 许透过对于 Android 正确的认知 可以对于市场策略上的分析能有更正确的判断 Just Another Mobile Linux Platform 乍看之下 Android 只是个有如 OpenMoko MobiLin GreenPhone 等众多开放式手持 Linux 平 台的一个 并没有甚么特别之处 然而进一步了解之后 就不难了解 Android 平台在系统 建构上独到的设计 可以说 Android 重点并不在于 Linux 而 Android 项目采用了这样的组 合 在整体规划上考虑了相当广的的层面 自个人 第三方软件开发 系统开发建构 实际 应用性到系统平台开放性 而 Android 计划除了制定了系统架构外 还针对这个平台提 供了完善的软件开发工具与环境 在 IDE 上采用了开放式开发平台 Eclipse 在该 IDE 上 建构了 Android 专属的 plugin 另外还以自由软件 QEMU 为基础提供了 Android 平台专 属的 Emulator 让个人 第三方软件商迅速开发软件 无需依靠实际硬件开发软件 Application Application Framework 对于开发者而言 开发 Linux Mobile Embedded 软件时 多半采用 C C 做为软件开发语 言 由于 C C 目前的开发工具与底层硬件平台有相当的相关性 因此首先遭遇到的问题 是 cross tool chain 的使用和开发环境的架设 再来就是每个 Mobile Linux 组织所制定出不 同的 embedded linux 平台有相当迥异的 system architecture runtime environment 而各组织 所提供的软件开发环境 也并不如 Win CE Mobiles 单一系统一般有一致的架构及 API 更 不用说对于硬件平台的多样性更有着软件兼容性的问题 因此即便 API 能做到有如 Windows CE Mobiles 一般的一致 在各种硬件平台 ex ARM MIPS PowerPC 也无法建立单 一且能够兼容且运作的 binary 相较于在现在以 x86 为主要硬件平台的开发环境 行动装 置硬件平台的多样性对于软件开发和使用性上无疑增添了不少硬件限制 而 Java 软件虽能 够解决这方面的问题 然而 Java 因为设计上的缘故 在应用性上更为局限 在这方面 Android 很特别的 采用了 Java Language 来做为 App 的撰写语言 采用 Java 语言的好处 相当多 对象导向语法相较于常用的 C 语言更便于 GUI Programming Model 的建置 另一 方面 Java 开发及执行环境的建构在 Desktop 上相当容易 参考文件的维护也较为容易 而 且 Java 相关的开发工具已经很齐全且成熟 再者 Java 所制定的 bytecode 没有所需要对应 平台的问题 尽管最后在 Android 平台上执行的并非 Java bytecode 而是自有的 dex 格式 然而 dex 格式也有如 Java bytecode 般取决于 VM 的实作 而 VM 的角色在 Android 平台终 适度的隐藏了底层硬件的差异 Runtime Environment Libraries Dalvik VM 在 Rutime 方面的 library 层面上 为了提供基本且标准的功能 Android 还是针对平台的执 行环境制定了一套标准的 C C Library set 从现有的标准模块看来 主要是针对网络 多 媒体 GUI 以及安全性提供底层的实作 值得注意的是在此 Android 特别将 OpenGL ES SQLite 的纳入 使得系统对于 3D 数据库有着标准支持 而尽管平台上有着 C C libraries 这部分并不让开发者在开发软件时直接地使用 C C libraries 在使用上还是间接 地透过上层的 Application Framework 并且透过 Virtual Machine VM 使用类似 Java JNI 技 术来桥接 libraries 与 VM 的运行 由于软件开发上使用了 Java Language 若要使用 Java VM 这对于一般使用者与开发者而言难免存在着应用性相当局限 执行效率不佳 系统资 源需求过高 以及 Java ME 授权等问题的存在 为了解决上述这些问题 Google 特地实 作了 Dalvik VM Dalvik 并非是 Java VM 因此所执行的也并非是 bytecode 目前需要依靠 转换工具将 Java bytecode 转为 Dalvik VM 执行时特有的 dex Dalvik EXcutable 格式 Dalvik VM 相较于 Java VM 最大的不同在于 Java VM 为 Stack based 而 Dalvik 是 register based 以技术层面考虑 Register based VM 的特性有个很大的好处 那就是对于现有主流的硬件架 构 如此很容易与现有系统整合且最佳化 而所需要的资源也相对较少 甚至在硬件实作 VM 上会比较容易实现 最重要的是 Dalvik 并非是 Java ME 的实作 因此没有 Java ME 授权相关的议题 由 android 目前的介绍可以看出 Dalvik 目前实作在 Linux 平台 2 仅 依靠 Linux kernel 作低阶动作与 memory management 而从这一点的延伸更可以看出 Android 平台中的重点为负责执行层面的 Dalvik VM 而非 Linux 也因此 Linux 在 Android 平台中所扮演的角色并非是举足轻重的主角 也可以想见 Google 采用 Linux 的原因是 Linux 本身所具有的自由开放的特性 而另外在手持式装置中 Linux 已经具有相当质量的软 件开发资源 另外就是 VM 的使用 考虑到的就是软件在各式硬 体上的通用性 所以对 于有些人猜测 Android 最后还是会开放 C C API 供开发者使用 若是如此 Android 就失 去了最大的特点 与 LiMo OpenMoko 之类的 Mobile Linux 平台无异 所以这是太不可能 发生的 既然采用了 VM 的方式 这么一来 Dalvik VM 在其它平台上建构也不无可能 或许这样的推敲或许也能合理解释在 Open Handset Alliance 成员中有着长期耕耘 Windows Mobile 平台的 HTC 在列 Eclipse IDE Android Emulator 针对特定平台提供完善的开发 除错工具 以及整合式的开发环境是开发行动应用软件的另 一个困难点 针对此点 Google 为 Android 平台开发了一系列的开发 侦除错工具 一系列 的工具中最引人注目的莫过于 Eclipse ADT plugin 和 Android Emulator 现今 独立的 IDE 软件开发需要投注相当多的人力和时间 因此以提供 eclipse plug in 的方式来达到提供完善 的 IDE 目的 对于许多开放项目或商业产品而言 这样的作法已经是首选 而提供 Emulator 更可以解决在软件开发阶段对于硬件平台需求的问题 从 Android Emulator 的程 序代码 3 看来是以 QEMU 为基础 延伸打造了该 Emulator 功能上除了一些无法以软件 仿真的功能外 USB 联机 SD 插拔 Audio In Camera 电池 AC 状态 等等 甚至许多 的侦错功能是与 Emulator 环境整合的 有兴趣的话可以下载 SDK 和 Eclipse ADT 来玩 在 Eclipse 上所开发的程序可以很直接地输出到 Emulator 上执行 无需制作 image 或是安装 在硬件仿真程度上相当的全面 在开发工具上 Android 透过 QEMU Eclipse 的方式 以很 务实简单的作法达到了这样的目的 Google 在 Android 平台上大量采用了开放和自由的软 件 不害怕公开程序或视之为洪水猛兽 这样的作法相较于 Symbian PalmOS Windows Mobile 而言 宣告了软件上的高价值不在于封闭进而贩卖程序代码和 SDK 工具本身 透 过采用开放 自由软件的力量 更能加速达到目的和增加自身的价值 Java 的美丽与哀愁的美丽与哀愁 Dalvik 所引来技术上的政治争议所引来技术上的政治争议 这个部分写的有点长 是个人看了一些讨论后的想法 没有兴趣的话请跳过 在 Android 平台采用 Java 语言做为程序开发语言的同时 提出了 Dalvik VM 这样的举动引起最广泛 探讨的是 Android 是否分裂了 Java 在讨论这样的问题之前 或许该讨论 Java 本身的问 题 在这里个人提供另一个思 考观点 Sun 在 Java 的提出之后 一度曾经想过将 Java 交 由 ISO 标准化 然而或许是透过 JCP 对于 Java 在各应用上制定的完全主导 让 Sun 由 Java 在各方面确实地获得了相当的利益 所以即便面对 Microsoft 提出 NET 这样对于许多 人而言美好又开放的平台的挑战 长久以来 Sun 还是一 直以相同的论调来否决开放 Java 这个语言 而这个论调就是 这会分裂 Java 从 Java 的出现 在软件开发的历史上确实 有着相当的意义 然而 Java 的提出到现在经过的时间并不算短 即便是历史最悠久的 Java SE 在现今 Desktop 应用上还是相当局限 这样的结果或许可以去检讨的是 或许 Java 沦落到现今这样的局面是 Sun 自己导致的 多年来 Sun 封闭了 Java 让 Java 只在他们允许 的方式下运作 在 bytecode stack VM 低落的效能和反应下 多少开发者期望能用 Java 语 言开发原生 Native 程序 而又有多少开发者在 AWT Swing 这样既具有难以有效驾驭的 UI Model 而且又与系统本身的 Look Feel 格格不入的情况下充满挫折 更不用说许多难以理 解的各种不实用的应用 Framework ex JMF Java3D 而这许多问题当人们尝试自己解决而 提出不错的方案 像是 GCJ 和 Eclipse SWT 换得的是 Sun 的无视或敌对 而许多的方案 换得的是 Java 已经有了 XXX 这样的做法会分裂 Java 这么一句总是出现的话 到底 是不是因为它本身真的很有道理 至少 Sun 达到目的了 与 Java 扯上的问题第一个被讨 论的总是 它会不会分裂 Java Sun 这么多年来是否有心改进 Java 这个问题或许 Sun 应该扪心自 问 在人们对于 Java 在应用上的各种需求的改进有所要求的同时 Sun 对于 Java 是否真的针对贴近人们本质需求而改进 检视过去 Sun 到底做了甚么 在 分裂 Java 这样的保护伞下 原本大好前程的 Java 又改进了甚么 这样一来 Android 是否分裂了 Java 是对于问题的一 箭中的还是只是长年来受到的刺激的反射式思考 Android 计划中 Dalvik VM 的出现不妨视之为软件开发演进中的必然 一方面 Google 从没宣称说这是 Java 而现今也有其它程序语言能够开发在 Dalvik VM 上运作的软件 如果 Sun 的 Java 做 的够好 Dalvik 可能就只是 Java 的次世代技术 Dalvik VM 的问题点或许只是在于扯上了 Java 而不在于他是个 VM 在不同的 Instruction Set 上用 Java 语言开发程序 在 GCJ Net iKVM 出现的同时就已经被证明了 如果这算分裂 Java 那这件事一直因为人们的需求而 发生 软件开发或许就如同电影侏罗纪公园中所说的 Life will find its way 更不用说开发 软件的是人 程序开发者总是期盼有更好的系统架构和方案 在兼容性的保护问题上 在 网络上有人问过 为何没有人有勇气对 Google 询问他们对 OpenJDK 的质疑 或许人们该 想想 Sun 用了这么多的手段去控制 Java 的演进 却无法自己提出 Dalvik 那么 Google 这 么做除了保障

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论