阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

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

关注

评论

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

NFT盲盒商城系统开发技术

薇電13242772558

NFT

Pandas+Seaborn+Plotly:联手探索苹果AppStore

Peter

数据挖掘 数据分析 可视化 Kaggle

【Python】这个列表TTT熟悉

謓泽

Python 2月月更

人大代表谈“元宇宙”:把握机遇,加速布局

CECBC

跨平台应用开发进阶(五) :uni-app 实现列表项左划操作

No Silver Bullet

uni-app 2月月更 左划删除

互联网产品管理课-笔记(16/100)

hackstoic

产品

最好用的 7 款 Vue admin 后台管理系统测评 - 卡拉云

蒋川

Vue Vue 3 vue cli

国内外好用的OKR管理工具有哪些?

PingCode

Go 语言入门很简单:Go 反射

宇宙之一粟

mxGraph教程-开发入门指南

No Silver Bullet

流程图 2月月更 mxGraph

亿级数据量场景下,如何优化数据库分页查询方法

华为云开发者联盟

MySQL 缓存 查询 数据表 分页查询

【干货】Servlet内存马加载流程分析

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

书单

林逸民

学习 读书

攻克MySQL-索引基础

javaadu

MySQL 面试题 索引

学生管理系统详细架构设计

Geek_8d5fe5

架构实战营

精选22个pandas实用函数

Peter

Python 数据分析 pandas

一次历史漏洞分析与复现的全部过程

H

网络安全

能源产业数字化转型:区块链如何“炼”?

CECBC

【ELT.ZIP】OpenHarmony啃论文俱乐部——综述视角解读压缩编码

ELT.ZIP

鸿蒙 OpenHarmony 数据压缩

SSR 和前端编译,在这点上是一样的

CRMEB

过完年了, 为明年设计一个春联自动生成器, 给大家助助兴

DS小龙哥

2月月更

模块八

Only

架构师实战营 「架构实战营」

如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表

蒋川

Vue Vue 3

权威可信 | 华为云云测通过中国电子技术标准院软件测试工具能力评价

华为云开发者联盟

软件测试 测试 华为云 测试工具 华为云云测

掌握这20个JS技巧,做一个不加班的前端人

华为云开发者联盟

JavaScript 数组 箭头函数 逻辑运算符 计数器对象

从俄乌战争看区块链技术在未来国防领域的应用

CECBC

梦幻联动!金蝶&华为云面向大企业发布数据库联合解决方案

华为云开发者联盟

数据库 华为云 数据管理 GaussDB(for openGauss) 金蝶

如何通过服务提升产品价值?

石云升

产品思维 体验设计 产品分析 2月月更 服务产品化

攻克MySQL—索引优化

javaadu

MySQL 面试题 索引

实践GoF的23种设计模式:SOLID原则

元闰子

设计模式 SOLID

设计千万级学生管理系统的考试试卷存储方案

王大胖

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