浏览器及其引擎原理介绍

什么是浏览器(Web browser)?

浏览器是一个用来在网上搜索展示信息的一个应用程序。
浏览器可以分为两部分,shell(浏览器的外壳)+内核(渲染引擎和JS引擎)。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎

内核引擎分类

渲染引擎(内核) 介绍 采用此内核的浏览器
Gecko Firefox
Presto 以前Opera的内核,但由于市场选择问题,主要应用在手机平台Opera mini,现在Opera使用Blink
Trident 又称为MSHTML IE 以Trident 作为内核引擎(IE10以前)
EdgeHTML 在Trident基础上删除了过时的旧技术支持的代码,扩展和优化了对新的技术的支持 旧版本的edge浏览器(IE10)
WebKit WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎(渲染引擎)和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS 早期的Chromium。当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度,苹果公司将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的浏览器 Safari。
Blink 从 WebKit 直接fork出的一个版本,然后将与 chromium 无关的 Ports 全部移除掉,将代码结构重新整理 现在的Chromium。新版Edge(使用了cromium)。现在的Opera。

注:
1.WebKit2相对于WebKit(狭义上的webkit是指webkit在各个平台的的移植并提供相对应的Web接口,也就是WebView或者类似WebView,这些接口提供操作和显示网页的能力,广义指WebCore,其中包含了对HTML,CSS等很多W3C规范的实现)而言,它不是WebKit简单的第二个版本,它是一个新的API层,其最主要的变化在于将网页的渲染置于单独的进程,而接口层则在另外一个进程,它们之间通过IPC来通讯。好处是,当网页的渲染出现问题时,不会阻碍Web接口的调用者进程。
2.Chromium是Crome的开源版本

单核/双核浏览器

单核:只使用了一种浏览器内核
双核:(trident和webkit).。双核的意思是一般网页用webkit(高速模式)打开,网银等指定的网页用trident(兼容模式)内核打开。 并不是1个网页同时用2个内核处理。

谷歌如何做到Chromium开源而crome闭源的?

BSD开源协议是一个给予使用者很大自由的协议。基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但"为所欲为"的前提是当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:1.如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。2.如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。3.不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

参考

https://segmentfault.com/a/1190000018806562
https://zhuanlan.zhihu.com/p/372283240