写点什么

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

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

关注

评论

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

在Flexus X上部署ELK日志系统

轶天下事

Flexus X实例在华为云EulerOS环境中部署堡垒机Jumpserver的详细指南

轶天下事

2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n 和 m,以及一个正整数 k。 如果 nums1 数组中的元素 nums1[i] 能被

福大大架构师每日一题

福大大架构师每日一题

深入理解 Apache Calcite ValcanoPlanner 优化器

端小强

Calcite

华为云征文 云计算新纪元:Flexus云服务器X实例引领柔性算力时代,部署Zabbix运维监控

轶天下事

华为云Flexus X实例docker部署jdk21最新版jenkins搭建自己的devops服务器

轶天下事

采用华为云Flexus云服务器X实例部署YOLOv3算法完成目标检测

轶天下事

华为云Flexus X实例docker部署最新gitlab社区版,搭建自己的私人代码仓库

轶天下事

华为云Flexus云服务器X实例之Docker环境下部署JmalCloud个人网盘

轶天下事

华为云Flexus云服务器X实例部署Note Mark笔记工具

轶天下事

区块链RWA软件项目的开发

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

镜舟科技荣获 IT168 2024年度创新产品奖!

镜舟科技

开源 分析型数据库 StarRocks IT168 物化视图

深度探究 Apache Calcite SQL 校验器实现原理

端小强

Calcite

继 MagicEden、Pudgy Penguins 后,NFT 公链 Mint Blockchain 向 NFT 社区进行大规模空投

NFT Research

NFT 空投

还没分享过小米的面经呢,今天它来了

王中阳Go

Go 面试

Flexus X强大性能与高可靠性使用体验——手把手带你部署es docker rabbitmq

轶天下事

华为云Flexus云服务器docker部署srs6,协议可使用HLS协议

轶天下事

基于华为云Flexus云服务器X搭建jumpserver堡垒机软件

轶天下事

华为云Flexus X实例下的场景体验——小企业的福星——最简单的php环境搭建

轶天下事

基于Flexus云服务器X实例的应用场景-部署自己的博客系统

轶天下事

在华为云FlexusX实例上实现Docker容器的实时监控与可视化分析

轶天下事

区块链项目外包开发流程

北京木奇移动技术有限公司

区块链技术 智能合约开发 软件外包公司

区块链ETF软件的开发

北京木奇移动技术有限公司

区块链技术 软件外包公司 ETF

Shopify接口对接的详细流程

北京木奇移动技术有限公司

跨境电商 软件外包公司 shopify开发

AI口语App的开发流程

北京木奇移动技术有限公司

AI智能体 AI口语练习 APP外包公司

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