一、 B2G介绍
B2G是“Boot To Gecko”的缩写,是Mozilla公司基于Web标准开发的完全开放的移动操作系统,从系统本身到应用程序完全由HTML5、CSS和JS来写的。
B2G将为用户提供一个基于网络的操作平台,该平台将直接和设备的内核进行交互,而系统 上的所有应用和内容都是基于网络的。在这个Web平台上提供和优化蓝牙、短信等原生App的功能,与原生HTML5应用紧密联系在一起。用户开机即进入到 Gecko内核,用户看到的应用全部都是基于Web的应用。
B2G全部基于开放标准的JavaScript和HTML5进行设计和开发,并且同 Mozilla的其他产品一样,是完全开源的。B2G在移动平台上帮助Mozilla完成它的使命:创建一个开放的、为用户所掌控的更好 的互联网环境。与此同时,Mozilla也在和W3C共同商讨制定新的移动互联网平台标准。
B2G建立Linux内核之上的,看起来好像是用于Android操作系统。事实上,虽然B2G的底层采用了Android开源项目的某些底层设计,包括 内核定制方面的一些细节,这样能让B2G更容易在Android硬件设备上运行。但B2G既不是基于Android的平台,也不会运行Android应 用。B2G路线图显示该操作系统已经支持加内置摄像头拍照、打电话、查看电池状态、发送及管理SMS短消息、查看用户的地址簿、振动等。但没有整合蓝牙、 USB与NFC等功能。B2G将使 用Mozilla的Gaia UI,并使用自己的浏览器和应用程序商店,电子书阅读器,媒体播放器,以及相机/图片库。
B2G和OpenwebOS有什么不同?
webOS 使用 Enyo,固然也是基于 HTML5 + JavaScript 实现的,具有一定的跨平台跨浏览器功能,但是对于设备特殊功能(比如拨号、蓝牙传输等)的访问是通过自定义的 API 实现的,并未标准化。这意味着若是 Web 程序使用了这些特殊功能的话,将只能在 webOS 设备上运行。而 Mozilla 和 W3C 紧密合作推进 WebAPI 意味着针对 B2G 编写的 Web 程序将可以运行在包括 Firefox for Mobile 在内的任何浏览器和手持设备上。此外,webOS 使用 WebKit 做为网页渲染引擎,而 B2G 使用的是 Gecko。
对于普通用户B2G有什么意义?
对于普通用户来讲 B2G 代表未来与设备和平台无关的移动互联网体验,购买的一个 Web 程序,将可以在任何通过 Persona 授权的设备上运行,不再会因为更换手机操作系统而不得不购买新平台的相同程序。
MozillaB2G 系统开发者体验
- 使用 Boot-to-Gecko 的设备将会非常便宜,约为 iPhone 的十分之一。
- 设备启动速度非常快,冷启动 14s。
- 对于开发者来说,可以随时查看任何程序的代码。
- 和 Telefonica 合作的参考设备将会使用开源硬件产品。
- 针对 Mozilla Marketplace 设计的程序将不局限于 B2G 系统,可以运行在任何 Firefox 可以运行的平台。在 Android 平台亦可创建独立的启动器。
- 暂时没有计划提供如同 WebOS 上的 NodeJS 一样的服务层结构,不过欢迎应用程序开发者提出自己的观点。
二、 B2G高级特性
1. B2G系统层次
B2G平台主要由三个层次构成。底层被称为Gonk,包括Linux内核、硬件抽象层(HAL)、电话协议栈以及其他低级系统构件。中层是经过 改进的Gecko页面渲染引擎,其新型API可显示设备性能。顶层是B2G的用户界面Gaia,它是完全用HTML和JavaScript创建的。
据悉,Gonk中采用的Linux内核与上游Linux“相当接近”。来自Mozilla的文件显示,Gonk采用了Android开源项目的 某些底层设计,包括内核定制方面的一些细节,这样能让B2G更容易在Android硬件设备上运行。然而,B2G既不是基于Android的平台,也不会 运行Android应用。目前已经有可能在三星的Galaxy S II智能手机上以B2G取代Android环境。
Gecko和Gonk两层之间的互动大多由一个B2G进程来调解,该进程拥有很高的优先级,作用有些像Gecko的服务器。该B2G进程会渲染至帧缓冲,并且会与内置GPS天线或摄像头等硬件元件互动。
无线接口层守护进程(RIL Daemon)具有无线调制解调器功能,通过一个简单代理进程与B2G互动。实际的网络内容与多媒体重播,都由与B2G进程相连的独立进程分别处理。
2. WebAPI让网页内容实现应用功能
Mozilla的目标是:用原生的HTML和JavaScript构建整个B2G用户界面和应用程序栈。为了实现这一目标,Mozilla启动了WebAPI项目,它通过JavaScript API向网络内容显示设备功能。Mozilla此前已经推出了用于连接特定设备功能的API,如移动版火狐浏览器所支持的加速计与地理定位API等等。
WebAPI项目进一步添加了更多功能,例如用内置摄像头拍照、打电话、查看电池状态、发送及管理SMS短消息、查看用户的地址簿、产生振动等 等。这些功能大多都是通过一组JavaScript API在网页内容上实现的。以B2G拨号界面为例,它其实只是一个利用JavaScript功能来拨打电话的网页。
Mozilla正在通过W3C设备API工作组来实现以上API的标准化。理论上讲,用于实现B2G平台基本功能的基础JavaScript API,最终也能被其他平台所装载的网络浏览器默认支持。
围绕设备API进行的标准化尤其重要。如果这些API被广泛采用,那么标准化的B2G用户体验和应用程序栈(它们在本质上只不过是网页内容)就 有可能被推广到其他平台的网络浏览器上。Mozilla的B2G项目包涵了一种对未来的愿景——将来那些用标准HTML和JavaScript构建的、基 于浏览器的移动应用,可以通过原生的移动应用开发架构,来实现现有应用的所有功能。
WebAPI列表
API | 描述 | 进度 |
允许拨打和接听电话以及建立呼叫界面 | ||
控制设备振动,诸如游戏中的触感反馈。不包括为通知而振动 | 在B2G和android上完成。标准化进行中 | |
发送/接收短消息以及短消息存储于设备 | 在B2G上完成。但android上完成,但由于安全原因可能ship there | |
当用户处于空闲状态时得到通知 | Implemented | |
屏幕方向改变时得到通知,并能控制屏幕方向改变 | Implemented | |
设置永久保存在设备上的系统配置 | 内容实施完成,chrome进行中 | |
打开/关闭屏幕、CPU和设备等的电源。监听和检查资源锁事件 | API设计和实施进行中 | |
显示GSM和其他移动网络的信号强度、运营商等信息。不包括wifi | 完成 | |
TCP Socket API | 底层的TCP socket API。包括SSL支持。 | 实施中 |
Geolocation API | 地理信息API,与Firefox3.5的API相同 | 需要应用程序权限模型 |
Sensor API | 访问设备的传感器,如加速度计,磁场(指南针),感应,环境光线等 | 完成 |
特权API来获取可用的WiFi网络列表。还可以获取当前连接网络的信号强度和名称等 | API起草 | |
添加/读取/修改存储设备上的central location上的文件。例如桌面平台上的“图片”文件夹或者移动设备上的照片存储 | ||
添加/读取/修改设备联系人地址簿 | ||
锁定鼠标。获得movement deltas,而不是坐标 |
| |
安装web应用,并管理已安装的web应用。并允许已安装的应用获取付费信息。这些都需要建立一个开放的应用程序商店 | ||
对蓝牙硬件的底层访问 | ||
获取当前网络连接的基本信息。例如当前连接的网速 | ||
有关电池电量的信息,如果设备已插上 | ||
安排的通知,或在特定时间开启应用程序 | ||
Browser API | 启动一个应用网络技术的完整的浏览器 | |
Time/Clock API | 设置当前时间。时区在Settings API中设置 | |
委派一个活动到另一个应用程序 |
| |
Keyboard/IME API | 启动虚拟键盘 |
|
允许平台发送消息给特定应用 |
| |
Permissions API | 允许Settings app在一个集中的位置管理所有应用程序的权限 | |
FM Radio API | FM收音机功能 | |
写文件锁定 |
| |
Network Stats API | 监控数据的使用并对特权应用程序公开数据 |
|
防止资源被关闭,例如屏幕,wifi关闭,CPU进入睡眠模式等 | 完成 | |
UDP Datagram Socket API | 底层UDP API | 计划中 |
USB file-reading API | 当启用时,允许安装连接在计算机上的USB文件系统存储设备 |
|
WebRTC的一部分 | ||
WebRTC的一部分 |
| |
访问NFC硬件的底层API。当前主要是NDEF支持 | ||
访问USB硬件的底层API | ||
HTTP-cache API | 查询存储在浏览器的HTTP缓存中的内容。添加/删除条目。更新过期时间。直接从缓存中获取数据。 |
|
添加/读取/修改设备日历 |
| |
Spellcheck API | 启用webpage来检查文本拼写是否正确以及给出更正建议 |
|
启用后台Web应用程序,同步执行任务或响应传入的消息 | ||
允许将用户活动注册到手机 |
|
3. 可塑性极大,易受硬件厂商欢迎
目前的Gaia系统环境依然过于简单、不够完善,但是它所展示的智能手机用户体验相当有吸引力,因为它完全由网页内容打造,颠覆了传统的网页概 念。在B2G用户界面内可以实现所有能用HTML和CSS实现的功能,所以其样式与主题有着极大的可塑性。这种与生俱来的可塑性让B2G对硬件厂商极具吸 引力,因为它能简化创建品牌个性化定制用户界面的过程。
Mozilla尚未创建出基于HTML的应用开发窗口工具包。目前包含在Gaia内的应用还都只是用CSS设计的直接标记。但是理论上讲,在B2G内使用jQuery Mobile和Sencha Touch等现有HTML窗口工具包也是有可能实现的。
还有一件值得一提的事:B2G项目是完全开放的。艾希指出,B2G项目从它开始的第一天就实行公开化管理,并且公开了源代码。B2G也受益于Mozilla的工程师人才和潜在合作伙伴。B2G平台有望成为打破现有移动平台竞争格局的有力竞争者。
三、 B2G浏览器功能及高级特性
1. 浏览器功能介绍(gaia v1)
· 核心功能:
- 用户可以通过在地址栏输入URL而轻松快捷的打开浏览器
- 用户可以通过前进和后退来选择网页
- 当页面完成加载后,用户可以在任何时候进行重新加载
- 用户可以在任何时候停止加载网页
- 可视的指示符来通知用户页面加载进度
- 当向下滚动页面时, 浏览器会隐藏顶部操作栏并使内容最大化
- 用户可以设置并保存书签
- 用户可以设置书签名
- 用户可以删除书签
- 用户可以阅览特定类型的文档:
- 当网络连接不可用时将通知用户
- 锁形指示符通知用户该站点经过加密,是安全的。
· 手势:
- 用户可以通过手势来滚动页面
- 用户可以缩放页面中的某些区域和对象(除去被优化的站点)
- 输入框/图片/section: double-tap
- 普通区域: pinch-to-zoom
- 用户可以通过手势来显示/隐藏标签托盘
- 标签页:
- 用户可以创建新的标签页
- 用户可以通过打开标签页来快速跳转
- 用户可以取消/关闭任何打开的标签页
- AwesomeScreen:
- 当在地址栏键入时,会提示用户曾经访问过的站点
- 没有键入时,会提供给用户最后访问过的网站
- 选择“书签”,可以打开书签列表
- 选择“历史”,可以打开最近访问过的站点列表
- 设置:
- 清空历史
- 清空Cookies和数据
- 取消追踪 (this is tied to the main Settings app and permissions model)
- 开启Cookies
- 发送性能数据
· 起始页是一个可视页面提供 AwesomeScreen 的功能
- 类似于Fennec的起始页, it offers a 'speed dial' like experience
· 地址栏提供搜索功能
· 用户可以将书签变成一个应用图标加入主界面中
2. 浏览器功能介绍(gaia v2)
- 用户可以通过特定的应用分享站点链接:
- SMS
- 第三方应用 (如社交应用)
- 用户可以阅览特定类型的文档:
- .doc
- .xls
- .ppt
- 手势:
- 用户可以通过手势打开网页或对象的context菜单
- 例如, 一副图片的 context 菜单提供给用户“保存图片”到图片库的功能
- 用户可以通过手势来选择文本
- 用户可以通过手势来前进或后退
- 用户可以通过手势打开网页或对象的context菜单
- AwesomeScreen:
- 提供给用户“搜索建议”
- 用户管理/组织与其他客户端同步浏览器数据的选项
- 书签
- 密码
- 表单
- 设置:
- 用户主密码
- 记住密码
- 通过'New Tab' or 'In Background'打开连接
- 私人浏览模式