【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

关注

评论

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

数学,离一个程序员有多近?

小傅哥

程序员 面试

产业区块链蓬勃发展 联盟链成为落地应用最大杀器

CECBC

区块链

“复制”马斯克(二):“一无所有”的世界首富想要什么?

脑极体

DevOps到底是什么意思?

xcbeyond

DevOps 方法论 软件测试 28天写作

编程小技巧之 Linux 文本处理命令(二)

程序员历小冰

Linux 编辑器 sed

智能电动车的估值模式及电气架构变迁 (28天写作 Day21/28)

mtfelix

汽车电子 28天写作 智能汽车 汽车电气架构

DjangoRestFramework框架简介及基本使用

行者AI

RESTful

我国首个自主可控区块链软硬件技术体系发布

CECBC

区块链

北京朝阳法院借力区块链化解物业纠纷

CECBC

法院调解

加油,成功通过阿里P7Java岗面试,分享一些面试心得

Java架构之路

Java 程序员 架构 面试 编程语言

2021直播电商下半场,“网易严选们”为何成主播良港?

脑极体

2021年了,还听到有些兄弟在问Kafka香不香?

后台技术汇

28天写作

七面阿里成功offer,入职就是25k*16薪,还原我的大厂面经

Java 程序员 面试

《我们一起学集合》-ArrayList

蚊子

数据结构 面试 ArrayList JAVA集合

微服务“大门”如何选择?

阿里巴巴中间件

悟透前端 | javascript中变量声明var、let、const的区别

devpoint

var const let js变量声明

服务网格的最佳实践

阿里巴巴中间件

当视频恋爱 App 用上了 Serverless

阿里巴巴中间件

Spring Security 实战干货:分布式对象SharedObject

Java spring 分布式

Elastic开源协议改了,用户怎么办?

星环科技

讲真,一位8 年 Java 经验大牛的面试总结,你照猫画虎还怕收不到offer?

Java架构之路

Java 程序员 架构 面试 编程语言

CSS(七)——设置背景颜色和背景图像

程序员的时光

程序员 大前端 七日更 28天写作

IntelliJ IDEA 20周岁啦,为期2天的周年庆活动对开发者免费开放

YourBatman

eclipse ide IDEA IntelliJ IDEA

为什么这么一道iOS小题目,这么多面试者搞不定?

Geek_24a3d9

面试 技术交流 ios开发

IDEA Malformed argument has embedded quote

会飞的猪

IDEA

技术资讯 | 百度智能云拿下MTCS最高安全评级

百度开发者中心

行业资讯

阿里云重磅发布云拨测产品:深度挖掘数据,精准定位 IT 问题

阿里巴巴中间件

try-catch-finally中的4个大坑,不小心就栽进去了!

王磊

Java 异常处理 try finally

“删库跑路”,这背后的数据安全你悟到了吗?

BinTools图尔兹

数据库 大数据 数据安全 数据库管理工具 删库

阿里直招怒斩“P7“offer,自曝狂啃六遍的面试笔记

Java架构之路

Java 程序员 架构 面试 编程语言

在游戏运营行业,函数计算如何解决数据采集分析痛点?

阿里巴巴中间件

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