漫画 | 为什么中国没有搞出浏览器引擎?
注意,是浏览器引擎,不是浏览器!
浏览器引擎主要有两个功能,一个负责渲染/页面布局,另外一个是执行JavaScript。
国内搞出的浏览器挺多的,不过都是基于外国的开源引擎。 为什么没有自主的,或者主导的开源引擎呢?
回答这个问题之前,我们先看看浏览器引擎的发展历史,答案就在其中。
1990年夏日的一天,阳光明媚,这对于寒冷的挪威来说,非常难得。
两个程序员走出办公室,步入公园,坐在长凳上享受美好的阳光。
他们俩正在用C++开发一个超声波图像程序,遇到了一个跨平台的问题。
这两个程序员,一个叫做Haavard ,另外一个叫做Eirik , 他们计划开发框架就是大名鼎鼎的QT 。
经过两人几年的辛苦努力,QT于1995年发布了第一个版本。
作为一个跨平台的GUI框架,QT深受C++程序员的欢迎,被广泛地应用在汽车、消费电子、医疗、娱乐和工业自动化等领域。
Haavard 和Eirik 不失时机地成立了一个叫做Trolltech的公司,专门开发QT, 并且提供专家咨询服务。
让我们把目光再转向德国,1996年,一个德国大学生Matthias Ettrich在使用Unix桌面时候,觉得非常不爽。
他当然不能从零开始开发,一番调查研究之后,Matthias 发现了QT这个宝藏
Trolltech公司的大力支持让他下定决心采用QT来开发一个Unix的桌面:KDE
也许是对QT太喜欢了, Matthias在1998年干脆加入了Trolltech公司。
与此同时,Trolltech公司也有很多员工参与到了KDE的开发当中,甚至成为领导者,Trolltech和KDE可真是一对好基友。
在大西洋另一边的美国,Web已经成为最热门的发展方向,风起云涌,英雄辈出。
网景率先推出Navigator,拔得头筹。
微软不甘落后,搞出了Explorer。
IE靠着和Windows捆绑策略,后来居上,统治了浏览器市场。
KDE作为一个桌面环境,自然也不能落伍, 也开发了属于自己的浏览器:Konqueror。
Konqueror(其实是Conqueror,KDE的项目都以K开头) 从名称上看就野心勃勃
Konqueror并没有实现征服,因为Unix/Linux在桌面市场的占有率实在太低了。
但是Konqueror的两个重要组件:渲染引擎KHTML和JS引擎KJS却在后来大放异彩。
2001年,苹果想为自家的Mac OS X开发一个浏览器, KHTML和KJS进入了他们的视线。
苹果的开发人员对KHTML和KJS做了一个分支, 移植到了OS X上,改名为WebCore 和JavaScriptCore。
2003年,乔布斯在Macworld Expo 上正式发布了浏览器Safari 和WebCore。
但是KHTML团队和Apple团队之间的关系却日趋紧张
两个团队分裂了,开始独立发展。
2005年,Apple 把WebCore和JavaScriptCore打包到Webkit中,作为一个开源软件向公众发布
Webkit 是个优秀的浏览器引擎, 小巧、灵活又十分强大。
它率先实现了CSS3和HTML5的功能, 受到业界的喜爱, 围绕着它有很多浏览器发展起来。
Webkit的成功引起了Google的注意,作为一个互联网领域的巨无霸,它也要占据流量的入口,实现自己的浏览器。
不过,Google 对当时的Web有着深刻的洞察力,它认为Web和之前已经完全不同了。
这些在浏览器中运行的应用程序基本上都是JavaScript来实现的,JavaScript引擎必须极为强劲才行。
既然JavaScriptCore不能满足需求,那就自己造一个吧!
当然,布局和渲染引擎还可以用Webkit 的WebCore。
2009年,搭载着WebCore和V8的Chrome问世了, Chrome界面简洁、稳定, V8引擎极为强劲,引发了下载的狂潮,并迅速成为了浏览器的霸主!
此后,Google也fork了Webkit的源码,并且花了大功夫梳理,使得使得可读性更好,编译效率更高,2013年形成了一个新的开源浏览器引擎Blink。
这几个浏览器引擎的关系是这样的。
再加上Firefox的Gecko , 三大浏览器引擎正式形成!
当然,我们不能忘了曾经的浏览器霸主IE和它的引擎Trident。
终于可以回到文章开头的问题了:为什么国内的IT巨头不搞出一个浏览器引擎呢?
回顾这些浏览器引擎的发展历史,它们几乎都起源于90年代, 当时国内软件业非常薄弱, 错过了浏览器开发的这一波浪潮。
随着Web标准的不断发展和完善,浏览器引擎也变得极为复杂,代码量动辄就是千万行级别,工作量巨大。
浏览器引擎需要经年累月的积累,没法弯道超车。
即使是强如Google、Apple 也都是站在别人的肩膀上,加上自己的创新, 慢慢发展起来的。
国内的互联网巨头又专注于商业模式,主要在应用层折腾,对底层技术重视不够。把别人的浏览器引擎拿过来,包装一下,形成自己的浏览器,这是性价比最高的做法。
但是,我们要提出一个问题:当你用了别人的东西,是不是也要做出贡献呢?有没有可能自主创新后搞出自己的分支、然后占据主导地位呢?
你看到的只是冰山一角!
点击下方图片,查看更多文章吧 !
下面是我开的一个备份号,防止被人投诉后失联,请小伙伴们保存一下吧。
这个号不会空着,经常会发一下轻松有趣的东西,让大家在紧张的工作之余乐呵一下。
漫画 | 为什么中国没有搞出浏览器引擎?相关推荐
- ONE- Open Navigator Engine 开放式浏览器引擎
ONE在-- http://www.cnblogs.com/blog4one/archive/2010/01/06/1640398.html 网站 http://www.one-lab.net 架构 ...
- python+selenium_浏览器引擎
import configparser import os.path from selenium import webdriver from basework.logger import Logger ...
- python火狐配置文件_Python+Selenium中级篇之4-封装一个自己的类-浏览器引擎类/Python读取配置文件内容...
封装一个自己的类-浏览器引擎类 前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断和控制启动 ...
- Vendor Prefix:为什么需要浏览器引擎前缀
浏览器引擎前缀(Vendor Prefix)是什么? Vendor prefix-浏览器引擎前缀,是一些放在CSS属性前的小字符串,用来确保这种属性只在特定的浏览器渲染引擎下才能识别和生效.谷歌浏览器 ...
- 开源的WebKit 浏览器引擎受多个漏洞影响,可导致 RCE 后果
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 摘要 WebKit 浏览器引擎受多个漏洞影响,其中有些漏洞可被用于执行远程代码. WebKit 是一款开源引擎,用于 Safari 和 ...
- 【Unity入门教程】 第八章 人工智能【中国大学MOOC游戏引擎原理及应用】
以下均为来自中国大学mooc 游戏引擎原理及应用时的学习笔记,不含商用,仅供学习交流使用,如果侵权请联系作者删除. 文章目录 8.1 自动寻路 8.2 巡逻 8.3 视野 8.4 自动攻击 8.5 追 ...
- 开源浏览器引擎Webkit引发浏览器格局变化
几乎一夜之间,原本采用IE核心的国产浏览器纷纷上马双核心,也让Webkit这个本不为大众熟知的技术术语走向前台.国产浏览器为何青睐Webkit?Webkit又会为竞争激烈的浏览器市场带来什么样的变化? ...
- 微软中国发布“IE8浏览器性能解密”,为金山网盾辟谣
天,微软中国安全技术团队摘取解释了<Internet Explorer 8 Performance Whitepaper><IE8性能白皮书>的部分内容. 微软安全团队为了避免 ...
- Gecko浏览器引擎
1 名称简介 Gecko在互联网中是最流行的排版引擎之一,其流行程度仅次于Trident(用于Windows版的Internet Explorer4.0版本开始),其后尚有WebKit(用于Safar ...
最新文章
- Rest Framework:序列化组件
- react 引入 mobx @babel/core: 7.2.2
- java后台 flex前台例子_flex+blazeds+java后台消息推送(简单示例)
- 【Java】函数式接口与Lambda表达式
- 看老友记_马云对话周星驰
- 在MACBook笔记本上通过Safari 访问EBS系统
- mysql去除重复数据 重建表_MySQL 中重建mysql库中的表
- vb.net 教程 6-1 进程 Process类初探
- 软件安全(开发模型、需求分析、测试)总结
- plotyy函数_matlab中plotyy函数加入双y轴说明的方法
- callable的使用方法详解
- css3从入门到熟练运用(三):炫目字体,多样背景和渐变颜色,神奇边框
- C++STL常用操作之prev、next篇
- 【新生请继续猛击】NEW COMER SECOND BLOOD 完全题解及代码
- html5 比例尺,24厘米和4毫米的比例尺
- 键入1-5输出对应的礼拜天
- SAP 如何拆分发票
- nodejs 通过ffmpeg,实现微信jsapi上传mp3录音
- 传智播客python培训班 青岛
- [golang gin框架] 6.Gin GORM简介以及安装
热门文章
- PCM / I2S / AC97/PDM
- 短视频开发,Android 应用接入新浪微博分享
- Java项目使用Druid数据库连接断线后自动重连
- Android_Learning_Notes_Part 1
- 容易会计算机音乐歌词,【歌曲推荐】喜欢听歌的进来听听吧,会附上推荐歌曲歌词和链接...
- uniapp实现中英双语(vue-i18n)
- 一个简单的影像切片工具,生成xyz格式
- 【项目精选】基于Spring Boot的综合性B2C电商平台--迷你天猫商城
- mysql bulk update_Django bulk_create()、update()与数据库事务的效率对比分析
- Models Genesis: Generic Autodidactic Models for 3D Medical Image Analysis精读