写点什么

Servo:开源嵌入式浏览器引擎

  • 2015-06-01
  • 本文字数:1040 字

    阅读完需:约 3 分钟

嵌入式浏览器引擎可以嵌入其它应用程序,像常规 Web 浏览器一样展示内容,并允许开发者自定义用户体验。Mike Blumenkrantz 是 Enlightenment 的发布经理,同时也是 EFL 工具包的核心开发者。近日,他撰文介绍了由Mozilla 基金会和三星共同推动的开源嵌入式浏览器引擎项目Servo。

许多公司都使用了Web 内容嵌入技术。比如,Rhythmbox、Kate、Eclipse 等流行Linux 应用程序、Microsoft Entourage、Apple Mail for Mac、Adobe 的产品以及Valve 的 Steam 客户端等等。然而,向应用程序嵌入 Web 内容的 API 却很少, WebKit 是最流行的一个。但它的问题是不稳定,开发者经常会因为需要与它的更新保持同步而不得不修改应用程序。 Blink 是 WebKit 的一个分支。它也有稳定性问题,而且只能用于 C++。要解决这些问题,可以使用 Chromium 嵌入式框架(CEF)。该框架基于 Blink 浏览器引擎,但它实现了用户与底层引擎变化的隔离,并提供了基本的 C API 以及 C++ 扩展。目前,Valve 的 Steam 客户端以及 Adobe 的多种产品都使用了该 API。

Servo 浏览器引擎的目标是为开发者提供最大的灵活性。为了实现这个目的,它必须提供稳定的 API 和 ABI 。它使用 Rust 编写,这使它可以提供能够从 C 语言中直接调用的 API。考虑到重新设计一个嵌入式 Web API 非常复杂,比如需要编写大量的文档,测试大量的框架以及大力的推广应用等,所以他们采用了一种不同的方式。

Servo 实现了 Chromium 嵌入式框架的 API。这意味着,正在使用 CEF 的开发者不需要对应用程序做任何修改就可以比较 Blink 和 Servo 引擎的性能,未来的开发者也不需要考虑另外一种浏览器 API。这种实现方式主要包含两个方面的工作:

  • 确保“符号(Symbol)”完全覆盖:Servo 嵌入式库可以钩连每个 CEF 函数调用。同时,任何时候分配的供外部使用的 struct,其大小和成员位置必须与真正的 CEF 所分配的 struct 类似。符号列表可以借助 Linux 工具 nm 取得。
  • 尽可能准确的模拟每个方法调用的功能:这需要完全了解 CEF 的每个函数以及它如何连接到浏览器引擎。

目前,Servo 尚处于起步阶段, 团队还非常小,项目还面临着一些问题,比如借助 CEF 提供的 C++ 扩展跟踪 C API 执行。因此,Mike 希望,感兴趣的开发者能够加入他们。更多信息请查看 GitHub 页面


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-06-01 09:498479
用户头像

发布了 1008 篇内容, 共 448.4 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

大数据应用

GalaxyCreater

大数据

非传统的“易观”,和他的技术驱动之路

易观大数据

【架构师训练营】第 12 周作业

花生无翼

第十二周总结

Linuxer

week12 作业

雪涛公子

第十二周学习总结

赵龙

week12

强哥

极客大学架构师训练营

隐秘的MySQL类型转换

架构精进之路

MySQL

大数据

GalaxyCreater

大数据

前端源码宝库

InfoQ_34a83d636158

区块链技术创新应用势在必行 食品药品开启全链条溯源时代

CECBC

区块链 溯源 药品

第 0 期架构师训练营第 7 周作业 1

fujin

打开 政务上链 应用场景

CECBC

区块链 数字身份 政务

后疫情时代 数字经济如何大显身手

CECBC

疫情 数字经济 数字技术

week12 总结

雪涛公子

大数据作用

纯纯

Android的特殊攻击面(三)——隐蔽的call函数

OPPO安全

android 安全攻防 安全 函数

如何判断程序员的代码是否优美?

Garfield

代码质量 代码 代码优化 代码重构

Android中的特殊攻击面(二)——危险的deeplink

OPPO安全

android 安全攻防 安全

架构师课程第十二周总结

dongge

第十二周作业

赵龙

释放数据价值:DAYU数据运营新能力解读

华为云开发者联盟

大数据 数字化转型 华为云 代码原理 数据运营

Android 中的特殊攻击面(一)——邪恶的对话框

OPPO安全

android 安全攻防 安全

为什么阿里巴巴的程序员成长速度这么快,看完他们的内部资料我明白了

Java迁哥

阿里巴巴Java开发手册-日志规约

魏杰

大数据总结

周冬辉

大数据

第 0 期架构师训练营第 7 周作业 2 ----总结

fujin

大数据简介&架构(一)

dony.zhang

大数据 hdfs hive YARN MAPRED

架构师训练营第十二周总结

R20114

超声大数据应用

周冬辉

大数据

SpreadJS 纯前端表格控件应用案例:Teammark知识管理库

葡萄城技术团队

SpreadJS

Servo:开源嵌入式浏览器引擎_语言 & 开发_谢丽_InfoQ精选文章