写点什么

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:497892
用户头像

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

关注

评论

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

信创时代的数据库之路:2024 Top10 国产数据库迁移与同步指南

tapdata

数据复制 oceanbase 国产数据库 数据迁移工具 PolarD

鸿蒙NEXT开发案例:字数统计

zhongcx

Python创建虚拟环境报错:Error: Command......

codists

Python

手把手教学攻略:如何在Anolis OS上部署OpenVINO深度学习模型?

OpenAnolis小助手

AI 操作系统 OpenVINO Anolis OS

腾讯云 AI 代码助手:产品研发过程的思考和方法论

腾讯云代码助手

腾讯云 代码 腾讯云AI代码助手

360企业云盘怎么样?与9款云盘的详细对比

易成研发中心

用 DataEase 分析北京近年房价变化

搞大屏的小北

数据分析 数据可视化 BI 分析工具 DataEase 房价

探索工程智能体和RAG建设的思考

腾讯云代码助手

腾讯云 腾讯 腾讯云AI代码助手

商业画布如何制作?10个优质商业画布模板案例推荐!

职场工具箱

商业模式 在线白板 办公软件 绘图软件 商业模式画布

巧用观测云可用性监测(云拨测)

观测云

云拨测

TapData 正式加入 openEuler 社区,达成开源共识,携手推进国产基础软件生态创新与发展

tapdata

openEuler 开源社区 Tapdata 开源操作系统

“双龙”联合!助力辽宁沈抚示范区打造安全可靠的政务云平台 | 龙蜥案例

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥案例

深度盘点:国内 7 大企业网盘私有化部署厂商

易成研发中心

【IoTDB 线上小课 09】时序大模型的发展历程,出现高性能国产成果?

Apache IoTDB

Coolbpf 最新特性系列解读:eNetSTL 网络功能加速库在龙蜥社区开源

OpenAnolis小助手

操作系统 龙蜥社区 coolbpf 龙蜥系统运维联盟

开源生态发展合作倡议

OpenAnolis小助手

开源 操作系统 龙蜥社区 OpenAnolis

数智化浪潮:如何利用低代码平台加速企业创新

不在线第一只蜗牛

低代码 数智化

鸿蒙NEXT开发案例:数字转中文大小写

zhongcx

鸿蒙

高性能网络SIG月度动态: 推进SMC支持基于eBPF透明替换和内存水位限制等多项功能支持

OpenAnolis小助手

开源 操作系统 龙蜥社区 OpenAnolis 龙蜥社区SIG

克服 Prometheus 单值数据模型的局限性 — GreptimeDB 的新路径

Greptime 格睿科技

数据库 Promethues

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