浏览器开发难吗?难非常难。
如果你留心的话你会看到,360浏览器用的内核也不是自己开发的,因为它使用的是谷歌浏览器和IE浏览器的内核,都是互相可以兼容的。只需其他什么的搜狗浏览器、傲腾浏览器,雷暴浏览器等等不是使用谷歌内核就是火狐内核,那么为什么我们不自己开发一个浏览器呢?因为开发一个成熟的浏览器内核不亚于开发一个操作系统。
开发浏览器内核和开发操作系统属于一个维度。
首先从技术角度来看,互联网的很多标准都是国外公司首先制定的,如果你单独去搞一套东西没有人愿意去适配你的产品,你做出来的东西也只是无用之物。因此你在研发内核的同时需要遵循别人的定制的标准,这就要熟悉他们的技术,这其中就设计了很多复杂的内容,由于需要遵循别人的标准,因此单独的掣肘就很多,就好比移动通信的2G、3G、4G一样,你是绕不开的领域。
其次如今一个浏览器代码接近2400万行,从项目规模来说,已经接近半个操作系统了。谷歌浏览器的背后那可是有着几千名程序员和工程师在那里支撑着这个东西,就说这十几年以来,光支付的人工成本也几十亿美金了吧,更别提市场推广的费用了,可想而知,国内谁没事整合上百亿资金去搞一个浏览器内核,并且这个内核搞出来怎么去实现盈利还是一个未知数,因为已经有了更成熟的产品,你没必要单独去搞一个费钱费力的东西。
因此不重复造轮子,而是用别人的东西来实现自己的产品才是现在很多厂商的首选方案,像华为那样重新制定市场规则的企业不是谁都能做到的。
另外如果大家没事了看下一本书叫做《操作系统设计与实现》,然后在看下浏览器的具体实现过程什么进程调度,IO系统,存贮系统,文件系统,网络系统基本你能在操作系统开发上用到的技术,浏览器大概都用到了,想想linux内核代码也就是2多万行,而谷歌浏览器也两千多万行,可以说浏览器内核的开发和操作系统的开发基本上是属于一个维度的。
再强调下浏览器内核的复杂性,html协议本身就是一个松散的协议,而且很庞大。光是处理这些就相当的麻烦,而这只是内核处理的一部分。并且还要考虑超级多的属性用法,实现各种属性的渲染,还要涉及到算法优化,另外图形方面的知识也是必须懂的。当然开发浏览器的C++语法,你至少也是精通才行,否则免谈。
还有就是光JS引擎就要程序员吃上好几本书,更何况浏览器内核涉及编译原理、计算机图形学、计算机网络、计算机操作系统、数据结构,此外还有一大堆标准、兼容性问题,想想都可怕。
最后,你所有的都搞定了还差一样安全性,如果学过计算机安全的同学估计都应该知道,微软以前没事干最喜欢打补丁,其中涉及到浏览器安全补丁的就占了近一半的数量,因此对于浏览器的安全领域也是一个及其复杂的工作。当然除了安全,你做出来的浏览器还需要一个词,性能,对没有足够好的性能照样是死路一条啊。
总之你只需要知道,「浏览器内核」与「操作系统内核」比在工程复杂度上有过之而无不及。