上面提到的领域技术的确有利于Android发展,但远远不够 。回想之前谈到的HAL以及整体架构,我们看到Android实际上就是个大杂烩,使用的是诸多技术的混合 。过去除Palm等Web OS外,无论是基于Linux/Unix构建的系统如Meego,还是Symbian、MTK、UCOS、WindowsCE,无论是实时系统还是非实时系统,这些移动端系统都以C/C++为主且小巧精悍,对内存使用和要求极为考究,虽然满足了资源受限设备的使用诉求但带来了门槛;虚拟机类的平台如KJava、.NET on Windows Phone虽然内存使用和能耗方面比较大方,却胜在研发效率和容错性,因而受到不少开发者欢迎 。
所以选择混合架构对于缺乏完整移动领域产业链支撑的Google既符合其自身技术理念、又胜算最大,于是量身定制的组件化能力便肩负起这一使命,使得各组件得到有机组合、应用之间以及应用和系统的沟通更为明确和有约束,最终帮助整个系统灵活运转,能力被迅速放大 。
观察Android系统的启动运行流程(图4)以及APP对系统能力的使用(图5),可以发现其各类能力已按照组件化标准和粒度进行组织(能力的注册发现、接口和通信的标准化、运行空间的隔离等),让快速迭代的手机硬件和持续升级的系统能力以最小代价透出,将复用的价值在移动设备系统上具体化并最大化,从而具备更高的灵活性和兼容性;其背后软件工程的意义在于为软件需求、设计之间架起一座桥梁,解决了系统结构和研发需求向实现平坦过渡的问题 。
文章插图
图4. Android系统进程架构概要
文章插图
图5. 使用设备能力的典型调用路径
当然,历史上其他公司面临这类挑战时也有不一样的想法,例如Windows Phone 8.0选择了另外一条路,无论是提供媲美JAVA的C及VB.NET框架、还是基于Sliverlight Dependency Property + XAML的UI系统、甚至是为了支持C++研发出来的C++/CX及一套运行时,都仿佛无时无刻标榜着其系统技术的多样化与复杂性,算得上是一场技术盛宴 。
Meego则是另外一个例子,被期待救Nokia于危难,并由Intel联袂推出,通过各种开源能力的组合来完成系统的建设,如Linux内核+QEMU模拟器+QT+QML界面,但实际上昙花一现 。
1.3 应用的基础-接口层
系统能力基本就绪,如何迎来更多开发者对Android长远发展至关重要 。选择JAVA作为上层语言,既需要勇气又足够彰显其野心;为迎合资源受限这一移动领域过去、现在也是未来的最大客观事实,其设计了基于寄存器架构、可执行文件更小的Dalvik虚拟机,并通过净室工程来高质量实现,同时结合诸多工具对外提供了流畅的JAVA编程方式,摆脱类似MTK feature phone只能用KJava写些小游戏的局限,使得Android研发兼具JAVA的便利和不错的性能 。
天有不测风云,SUN在09年4月被Oracle收购,距离Android 1.0发布还不到一年 。虽然最初选择Apache Harmony来提供JAVA API十分明智,但却遭遇到技术上不支持JAVA 7/8、版权上Oracle诉讼纷至沓来等诸多挑战 。为应对这一切,Google从Android N开始,将JAVA的支持变更为OpenJDK 。另外,Kotlin因为特性相近、又可被编译为class或者dx字节码,也获得了Google青睐和收编(图6) 。
文章插图
图6. Android接口层的过去和未来
实际上,之所以Android敢这么做,还是因为有其设计基础的支撑,根据个人的一点粗鄙了解,从Android API的调用链路(图7)上能发现端倪:无论底层依赖、实现和流程如何变化,上层的使用形式并不会改变 。
文章插图
图7. Android内部对调用链路的3种实现
这意味着几乎所有系统能力的核心,已在native library被实现殆尽,并结合上层提供良好屏蔽 。这为其他语言实现Framework提供了可能,尤其是一门特性与JAVA相近的语言 。所以是什么语言、是不是kotlin都只事先设计规范下的一种合适的选择 。
文章插图
图8. 一种未来用kotlin代替java的极端可能
2. 对于我们的象征意义和实践综上所述,Android从三个方面来解决其发展的关键问题:
硬件驱动:形成厂商的合作基础,并反过来对整个产业施加影响 。组件化:高效组织各种内部能力,寻求自身的更快发展 。接口层:满足上层对系统和硬件能力的各种使用诉求 。移动互联网产业巨头发展因为起点以及执行理念不同而有所不同,Apple围绕着其App Store构建其整个体系并精心维护,而且在现代化API编程、整机体验、垂直领域技术如网络/算法等各纵深领域走在前列;Google则用Android带路,需要在各个层面维护和团结不同力量来形成自己的发展特色 。所以,Android为系统如何发展提供了另外一种答案:除关注系统自身能力的发展,如何维护好系统不断发展的基础和前提、如何更好地暴露和让外界使用系统能力也至关重要(见图九) 。
- 4399皮卡堂免费下载 4399皮卡堂 4399卡布西游手机版
- 233乐园怎么下载安装平板上 233乐园怎么下载别人的地图
- google翻译下载 google翻译在线 google浏览器翻译
- everything everything小说 everything everything安卓版下载
- 人民教育出版社官网电子课本 人民教育出版社 人民教育出版社app
- 希望外语App 希望app是什么
- Foxmail邮箱提示501怎么办 foxmail邮箱 foxmail邮箱app下载
- 百度网盘客户端下载 百度网盘客户端 百度网盘资源公众号
- 美团app在哪领取会员 美团app在哪领取优惠券
- 得物属于什么类型 跟得物一个类型的APP有哪些