zoukankan      html  css  js  c++  java
  • 理解WebKit和Chromium: Chromium移动版(Chromium for Mobile: Android & iOS)

    转载请注明原文地址:http://blog.csdn.net/milado_nju/article/details/8107712

    #Chromium的移动版 (Chromium for Mobile)

    ##概述

    Chromium的诞生于桌面(desktop)系统之上的,这其中包括Windows, Linux和Mac。这奠定了Google Chrome的地位,市场份额不断上升。随着移动操作系统的流行,Chromium也迫切需要拓展其在移动设备上的市场,所以Chromium的Android版和iOS版应运而生了,这两个背后有不同的故事。

    本章讨论一些有关移动版的有趣事情,这里面没有特别细节的东西,主要是一些技术方向性方面的描述。


    ## 移动版

    chromium的iOS版和Android是为两个流行的移动操作系统设计的,其区别与传统的桌面版,特别是UI方面进行了较大的重新设计。两者从外观上看颇为相似,但是其内部的渲染引擎的差别非常的大,原因在于iOS对应用程序的控制造成的,而非两个操作系统的差异性。


    ##Chromium的iOS版

    iOS是最受欢迎的移动操作系统之一,其设备数量以亿计,所以能在iOS上成功就特别重要了。显而易见,这有助于浏览器的市场份额。苹果对iOS上的应用程序是严格审核的,浏览器作为非常重要的应用程序,当然也不例外。

    不幸地是,苹果不允许浏览器有自己的内核(WebKit或者其他),理由是安全性。所以,chromium的iOS版始终没法通过审核,其中的争论也是非常激烈。抛开这些争论,Chromium的iOS版已经上线了,不过这是一个没有chromium内核的浏览器,其基于的是iOS提供的UIWebView(一个嵌入式的网络渲染模块,该模块提供对网页渲染和HTML5的支持),加上Chromium风格的UI。

    有趣的是这个UIWebView跟Safari的所使用的支持HTML5的模块是不一样的。相对于Safari的浏览器内核,其有两个明显的缺点:

    1. Safari使用Nitro JavaScript引擎,而UIWebView使用WebKit缺省JavaScript引擎,性能上要差很多;
    2. Safari使用单独的线程而不是主线程来做渲染工作,悲剧的是UIWebView渲染是在主线程来完成,这会阻碍事件的响应。
    好吧,有了这两点,其他基于UIWebView的浏览器被Safari抛开一大截了,而且这些浏览器只能使用UIWebView,而不能有自己的浏览器内核。


    ##Chromium的Android版

    我们知道Chromium是一个开源的项目,但是,chromium的Android版从开始之初就是一个闭源的项目,其基于一个稳定的chromium版本,在Google的内部开发,直到发布Google Chrome的Android 1.0版。

    跟iOS不一样,Android版从出生就是亲儿子,其跟Android关系非常紧密,怎么说呢,Android上的应用程序一般都是基于Android SDK和Android NDK的API来开发的,Chromium可不是这样,它其实是使用了Linux平台的API和很多第三方的库,可以说是一个有“特权”的应用程序。

    目前Google Chrome的Android版是基于chromium18开发的,虽然是闭源的,但是Google开放了c++端的代码(参考文献第一条可以下载这部分代码,是一个基于chromium18的zip包),而Java端的代码开放的很少,与UI和浏览器功能相关的则基本没有开放。Google Chrome的Android版本中也加入了一些新的特性和架构,例如in-process-gpu, threaded compositing,基于Android UID isolate的沙箱技术等等,对于HTML5的支持也非常的到位,各种主流的HTML5功能基本都支持,除了WebGL,这都会在以后的章节作一一介绍。

    无须担心的是Google的开放性。Google正在逐步释放出Android版的源代码到Chromium的源代码库(upstream trunk)中,目前对开放者来说,很多功能逐步加入,所以很多单元测试已经被打开了(实际上本人也参与贡献了一些patch)。对用户来说,主要的进展是能够通过一个简单的浏览器(content shell)渲染网页,虽然有很多的bug,但是基本的渲染功能是可以工作的,而且支持HTML5的canvas2D和WebGL等功能(当然,质量还是个问题)。这部分做过比较深的研究,也贡献给upstream一些代码,相对也比较熟悉,会在后面的章节中作专门的介绍。


    ## 参考文献

    1. https://developers.google.com/chrome/mobile/docs/faq

    2. http://peter.sh/2012/02/bringing-google-chrome-to-android/


    By yongsheng@chromium.org

  • 相关阅读:
    Javascript常用代码
    Node.cluster
    swift3.0 hello swift(1)
    vs2013 linq to mysql
    ThinkPHP5作业管理系统中处理学生未交作业与已交作业信息
    ThinkPHP5 Model分层及多对多关联的建立
    ThinkPHP5中Session的使用
    用户登陆模块的后端实现
    使用BootStrapValidator来完成前端输入验证
    空间session失效的解决方法
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6313862.html
Copyright © 2011-2022 走看看