初步了解Google Blink

简介: Chromium Blink基于WebKit而来,从2008年Google开发自己的浏览就选择参与了WebKit社区。当自己还弱小时最优的方式就是与WebKit保持同步。
Chromium Blink基于WebKit而来,从2008年Google开发自己的浏览就选择参与了WebKit社区。当自己还弱小时最优的方式就是与WebKit保持同步。最明确的证据就是在自立门户之前buildbot上提供了chrome-release-webkit-latest功能, 自动使用最新的WebKit进行编译。

在实现上,尽量利用WebKit的各式client完成功能,再通过一层WebKit Glue (现在是Blink Public API)来封装,以便上层使用。这样就将WebKit包成了一个对外透明的模块。相对整个WebKit工程的目录结构如下:
          


但当两年过去,Goolge工程师渐渐成了WebKit社区的主要贡献者,再后面都超越了WebKit的东家:Apple。有下图为证(WebKit通过Review的提交数量):


Google的团队就这样长大了!

于是他们发现Apple管得太严了,兼容各类平台导致代码改动困难。还有Google不想将自己实现的多进程架构贡献给WebKit,反正各种不爽!是时候了,于是Google在2013年4月,Blink就诞生了。 一家老牌的浏览器开发商Opera随后就表示将使用Blink进行浏览器开发(PC版),和当年Google一样觉得背靠大树好乘凉啊。(其后不久, Mozilla也宣布与Sumsung联合研发下一代渲染引擎Servo。)

Blink的推进步骤是先移除自己不需要的代码(毕竟WebKit的贡献者比较多,兼容很多平台),可谓轻装上阵,然后再将代码稳定到一定程度:
we anticipate that we’ll be able to remove 7 build systems and delete more than 7,000 files—comprising more than 4.5 million lines—right off the bat. Over the long term a healthier codebase leads to more stability and fewer bugs.

然后再推动一系列结合自身需求的创新:
1. Out-Of-Process iFrames (进行中)
2. Fix networking code to be faster and simpler (已经算是比较完整的实现了)
3. Move DOM in JS (进行中)
4. Others:
  • Move code to use the sandbox Platform API directly instead of WebCore/platform where possible (DONE)
  • Establish a simpler, stricter tree-gardening system that does not require 2 full time engineers per day (DONE)
  • Replace WebKitIDL with WebIDL (DONE)
  • Teach WebCore about multi-process history (currently it assumes same-process synchronous History access)
  • Delete the Widget tree (a Mac WebKit1 constraint)
  • Split WebCore into modules
  • Experiment with moving the DOM into the JS heap
  • Increase multicore use (e.g., html parser, style engine, javascript parser)
  • Remove obscure parts of the DOM and make backwards-incompatible changes to obscure parts of the DOM that benefit performance or remove complexity.
  • Use a modern, faster tcmalloc throughout all of Mac chrome
  • Experiment with incremental or parallel layout
  • Fix memory leaks by removing the ScriptValue/ScriptState abstractions now that there’s only one JavaScript engine.
  • Remove custom JavaScript bindings code
  • Bring WebCore up to speed with DOM3 Events / [DOM] UI Events.

Blink团队也意识到最大的问题开源于推动Web技术发展与保持兼容性之间的矛盾。他们通过分别评估,最终加以平衡的方法来时行决策。最理想的情况当然是既推动了Web技术发展,又没有任何兼容性风险。

从Blink的演变过程来看,和咱们中国的技术拷贝过程是相似的。能力弱的时候参与到社区中,充分利用别人的成果(拿来主义)。当时机成熟后(团队培养好了,未来规划也完备了),另起炉灶。国内选择基于Chromium进行开发的团队越来越多,但不是所有人都能像Google那样进展到第二步的。项目是开源的,一切都是自由的,至于能得到什么,拼的还是实力,特别是团队整体的实力!

参考:

Blink’s Mission:
To improve the open web through 
technical innovation and good citizenship

目录
相关文章
|
Java 流计算
【Flink实战系列】Blink的UI焕然一新,我觉得还行
今天带大家看一下Blink的UI的一些新功能,编译的过程这里就不说了,网上也有很多的教程,我们直接启动一个Blink的standalone的集群,然后进入他的UI页面,我先放几张截图,大家随意感受一下 首先给人的第一感觉就是界面做的很炫酷,比Flink的UI要丰富很多,不像Flink的UI那样简单,界面也很阿里风格,多了很多新的功能,然后我们直接提交一个job上去,选择正在运行的job,如下图所示
|
IDE Java 编译器
Flink 1.11.x WatermarkStrategy 不兼容问题
最近群里的一个同学问了这么一个问题,在 Scala 代码中使用了 WatermarkStrategy ,代码在编译的时候会抛出异常,具体的报错信息如下: Error:Error:line (31)Static methods in interface require -target:jvm-1.8 .assignTimestampsAndWatermarks(WatermarkStrategy.forBoundedOutOfOrderness[String](Duration.ofSeconds(5))) 刚开始我以为是他的 JDK 版本设置的有问题,后来他说
Flink 1.11.x WatermarkStrategy 不兼容问题
|
SQL 消息中间件 资源调度
Flink 1.10 正式发布!——与Blink集成完成,集成Hive,K8S
Apache Flink社区宣布Flink 1.10.0正式发布! 本次Release版本修复1.2K个问题,对Flink作业的整体性能和稳定性做了重大改进,同时增加了对K8S,Python的支持。 这个版本标志着与Blink集成的完成,并且强化了流式SQL与Hive的集成,本文将详细介绍新功能和主要的改进。
504 0
Flink 1.10 正式发布!——与Blink集成完成,集成Hive,K8S
|
机器学习/深度学习 消息中间件 存储
Alink、Tensorflow on Flink 在京东的应用
京东张颖、刘露在 FFA 2021 的分享内容
Alink、Tensorflow on Flink 在京东的应用
|
API 开发者
Google 宣布 Google Glass 的 Mirror API 向所有开发者者开放
Google Glass 的 Mirror API 允许开发者将信息同步到设备并且以卡片式交互的方式显示出来。因此这一API是开发新闻、社交类应用的利器。不过目前还是不能在没有Glass 设备的情况下开发相关应用。
207 0
Google 宣布 Google Glass 的 Mirror API 向所有开发者者开放
|
NoSQL Java 应用服务中间件
搜狗服务器引擎Sogou C++ Workflow开源啦!
搜狗服务器引擎Sogou C++ Workflow开源啦!
搜狗服务器引擎Sogou C++ Workflow开源啦!
|
搜索推荐 API vr&ar
Mars 开源月报(2020.3)
本月,Mars 发布了 0.4.0b1 ,0.4.0b2 和 0.3.2 以及 0.3.3,点击链接查看详细的 Release Notes。本月两次发布版本是特殊情况,0.4.0b2 修复了 0.4.0b1 中比较紧急的问题。
2098 0
Mars 开源月报(2020.3)
|
SQL API Apache
终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码
如同我们去年12月在 Flink Forward China 峰会所约,阿里巴巴内部 Flink 版本 Blink 将于 2019 年 1 月底正式开源。今天,我们终于等到了这一刻。
26691 0
|
流计算 API SQL
开篇 | 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?
本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识、实践、调优、内部实现等各个方面,带你由浅入深地全面了解 Flink SQL。
开篇 | 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?
|
分布式计算
Google MapReduce到底解决什么问题?
搞架构的人,Google的架构论文是必看的,但好像大家都不愿意去啃英文论文。故把自己的读书笔记,加入自己的思考,分享给大家。
896 0