写点什么

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

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

关注

评论

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

一文读懂区块链技术如何改变非洲贸易(上)

CECBC

大型企业采购云管理平台的诉求分析-行云管家

行云管家

云计算 云安全 云管平台 云资源

光子是深度学习的未来!光子有望替代电子计算机加速神经网络计算

百度开发者中心

深度学习 最佳实践 方法论

结构化流-Structured Streaming(八-上)

Databri_AI

spark 查询引擎 结构化思维

下一代5G计算终端,正在你我的案头苏醒

脑极体

腾讯、网易纷纷出手,火到出圈的元宇宙到底是个啥?

行者AI

游戏

【堡垒机】堡垒机到底有用不?国内哪家堡垒机好用?

行云管家

云计算 数据安全 堡垒机

Pravega Flink connector 的过去、现在和未来

阿里云大数据AI技术

河南平安,附最全自救锦囊

石云升

7月日更 郑州加油

为什么开发人员都不愿写 API 文档?

狐哥说技术

Postman Apifox 接口文档 接口管理

没有你,对我很重要|靠谱点评

无量靠谱

现代分布式架构设计原则-互操作性

余先生

RESTful 接口 REST API

Java的内存区域是如何划分的?

卢卡多多

内存 Java内存模型 7月日更

gitlab ee 14.1稳定版安装教程

阿呆

gitlab

质量基础建设一站式服务平台搭建

声网Agora 教育 aPaaS 灵动课堂升级:UI与业务逻辑分离,界面、功能自定义更灵活

声网

在线教育 网络

gopher成长之路(一):致三年前的我

非晓为骁

个人成长 架构师 全栈工程师 Go 语言 努力

我们都是那条流浪的小黄狗|靠谱点评

无量靠谱

《小马哥java项目实战》训练营培训小结

夏日

什么是共识?(生活篇)

趣链科技

免费分享Redis从入门到精通的优秀图书

Java入门到架构

Java 书籍

基于机器学习的语音编解码器声网Agora Silver:支持超低码率下的高音质语音互动

声网

RTE 技术详解 音频体验 AI Codec

盘点Java线程池配置的常见误区,你中了几个?

北游学Java

Java 多线程

好未来 x StarRocks:全新实时数仓实践,深入释放实时数据价值

StarRocks

数据库 flink 实时数仓 好未来 StarRocks

想聊天?自己搭建个聊天机器人吧!

百度大脑

人工智能 聊天 飞桨

注意:线程的执行顺序与你想象的可能不一样!

冰河

Java 程序员 并发编程 多线程 异步编程

为什么BAT的程序员能月薪 20k ,而你一个月只能拿 6K 的低保?差别就在这!

白亦杨

Java 编程 程序员

有图,有代码,好理解,学习内存管理,mmap机制

奔着腾讯去

Linux 内存管理 Mmap 内存映射

澳鹏看点 | 厉害了,3D点云语义分割

澳鹏Appen

人工智能 自动驾驶 语义分割 数据标注 3D点云

优秀!百度技术官甩出SpringBoot全栈小册,GitHub星标92.5k

Java 编程 程序员

手写归并排序算法

实力程序员

程序员 C语言 排序算法 实力 编程实战

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