elphi 25岁了!尽管它不再是很多 Windows 开发的明显选择,但它的“长寿”证明了其性能之高。回想起来,为什么 Delphi 当初未能占领 Windows 开发市场的更多份额呢?本文细数以 Delphi 为首的编程语言以及软件创作系统所经历的 25 年风雨,以此祭奠老 Delphi 程序员们已逝的青春。
作者 | Jon Lennart Aasenden
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
我想通过本文细数以Delphi为首的编程语言以及软件创作系统所经历的25年风雨。我应该从哪里开始呢?史无前例的面向对象?事件驱动架构?蓬勃发展的组件市场?还是从x86汇编语言扩展到高性能ARM移动应用程序的技术?
我不想简单地列出各项技术,而是想以一种更加个人化的方式来撰写这篇Delphi的文章。毕竟Delphi 25周岁了,人们喜欢在生日这天举行演讲和反思:回顾过往的一切,同时坚定地展望未来。
简而言之,我只能通过本文传达在我作为软件开发人员的一生中Delphi给予我的宝贵价值,而且我相信数百万的Delphi开发人员感同身受。
我希望通过这篇文章,将我的想法传给现在刚开始学习Delphi的许多学生。希望为你们的学习提供一些有营养的见解,并希望你们能和我一样深爱Delphi。
Delphi 的起源
1990年初,计算机市场与今天相比有着截然不同的格局。在斯堪的纳维亚半岛和北欧,Commodore和IBM等公司仍然占据着家用台式机的市场。但是在短短的三年之内,IBM的OS/2就被微软的Windows淘汰了,而曾经的巨头Commodore也陷入了其不可避免的痛苦局面,这两家都无法或不愿意适应当时兴起的新业务模式。在同样动荡的1993年,微软和IBM正式分道扬镳,IBM转向了大型机及其PPC芯片组体系结构,后者在接下来的十年甚至更长的时间里一直是Macintosh计算机的核心。
我提到这些公司的原因是为了让你了解当时市场的混乱状况。对于像我这样的年轻学生来说,根本不可能知道应该在哪种技术上投入精力。我的编码生涯是从Commodore Amiga版本的Turbo Pascal开始的,该版本由英国公司Hi-Soft发布,称为High-Speed Pascal。当时,我还是工程系的新生,在学校里,我们主要使用Turbo Pascal和DBase。可惜当时的PC机非常昂贵,我没钱花4000美元购买PC,于是花了700美元买了一台Commodore Amiga。我觉得,Pascal编译器的价格约为,这对于一个努力维持生计的穷学生来说,可以省不少钱。
1994年的时候,我使用的编译器不能用了,很明显Commodore再也未能东山再起。值得庆幸的是,我忍无可忍,终于下血本买了第一台带有Turbo Pascal的PC机。我很高兴买了这台机器,因为第二年Delphi就发布了。
每当我提到Delphi曾经以及将来对我的影响,我一点都没有夸张。Delphi自问世以来,对整个软件开发行业的影响是巨大的。Delphi以及在此之前的Turbo Pascal,开创了许多当今开发人员认为理所当然的技术,甚至包括快速应用程序开发(Rapid Application Development,即RAD)周期本身。在Delphi之前,人们的目光都聚焦在投资回报率(ROI)和上市时间(TTM)上,编程语言带来的变化微乎其微。但是,当Delphi出现以后,时间和金钱的投入都非常清晰明确了,因为Delphi带来了颠覆性的变革(对于其竞争对手来说)。
因此,在90年代初期技术的战国时代,Delphi成为了最大的赢家。当之无愧。
飞跃发展
思想和观念的进化概念一直让我十分着迷。我经常在文章中提到这个概念。
我们总是认为进化是一个缓慢、渐进和线性的过程。但是当涉及到想法,尤其是技术时,我的经验是,好的技术会以快速、出乎意料的飞跃向前发展。孵化时间可能会有所不同,但最终在某种力量的推动下就会飞速向前。
1995年,Delphi进入市场时远远领先于竞争对手,人们发现Delphi很难学。但事件驱动编程的概念已经出现很长时间了(例如Visual Basic),因此Delphi并不是在真空中孵化的。虽然有一些C/C ++编译器也发展出了Delphi带进大众视野的语言功能,但是它们都缺乏Delphi的简单性和优雅性。
在伴随我长大的Commodore机器上,有很多软件支持拖放式表单设计,而且在某种程度上编程也采用了类似的方法(尽管处于更原始的状态)。但是,Delph的独特之处在于,没有公司将这些想法融合为一个连贯的整体。我从未见过VCL框架之类的东西,或能够与你的代码如此紧密地集成的IDE。
一款功能强大的编译器将所有这些元素组合在一起,比其他的编译器要早很多年。如今的C/C++编译器(从Pascal开发人员的角度来看)绝对非常强大,但是视觉设计在很大程度上需要独立完成(Borland C/C++具有类似OWL的框架,因此UI可以通过代码完成) 。因此,在竞争产品中,例如Wacom(1984~2010)或Storm C++(1995~2016),你需要在一个程序中创建UI,然后将这些设计作为资源文件导入到C/C ++项目中,与如今的苹果.nib文件没有什么不同。只有完成这些,你才可以开始构建程序。有的代码可能只需5分钟,而有的代码中该过程很容易超过5个小时。即使是很小的UI改动,也需要花几分钟才能生成代码和做链接。
Delphi强大的编译器和智能链接器可以将这个过程减少到几秒钟。这是十多年来世界上最快的编译器。它的速度如此之快,以至于大多数开发人员将编译功能当作一种快速检查繁琐的语法的方式。这对于其他语言来说都是不可想象的。
面向对象
毫无疑问,Delphi迈入了一个更高层的领域,即真正意义上的面向对象编程。在这之前,Pascal对面向对象还有点三心二意。Turbo Pascal 5.5是一流的DOS工具包(市场上称为“带对象的Turbo Pascal”),但其实它的对象只不过是带有程序的记录类型。除非你精通C++,否则你必须使用Modula II或Smalltalk之类的语言,才能获得Delphi提供的那种对象模型。但是,它们都缺乏Delphi擅长的RAD(快速应用程序开发)层。
整个80年代和90年代初期,在Delphi的推动下,所有播种和孵化的技术都飞跃发展成了系统,面向对象成了语言本身基本的特征,而不是作为附加功能使用。由于Delphi程序在完整的VMT(虚拟方法表)下运行,因此开发人员可以享受继承、虚拟和抽象方法以及可靠的数据封装——所有这些均来自于易学、易用和竞争激烈的语言。
锦上添花的是Delphi注重视觉编程。你可以将一个按钮拽到窗体上,然后双击填写事件处理程序,这个过程无需离开IDE或切换选项卡。之前已有其他编译器做到了这一点,但Delphi是真正的本地编译器,而不是通过字节码或托管系统让IDE按照自己的规则进行操作(以性能为代价)。Delphi是首个达到C/C ++级别的性能和深度(多亏了Object Pascal的易学和优雅)的语言。你还可以与Pascal并排编写机器代码,所以说Delphi与Visual Basic或SmallTalk是完全不同的级别。一夜之间Visual Basic从英雄变成了无名小卒。
现代Delphi与C/C++并肩,但仍非常重视可视化OOP编程
关于这一点,Object Pascal拥有与C/C++并驾齐驱的深度和功能,这是因为Delphi的视觉和非视觉组件库都是由Delphi制作的。换句话说,你没有强制依赖第三方提供的组件(这是竞争解决方案的惯用方法)。任何人都可以坐下来编写自己的组件;然后以可执行文件或源代码的形式打包出售。因此,组件市场蓬勃发展,导致竞争对手黯然失色。
我甚至想说,如果Delphi是在IBM OS/2上发布的,那么就可以拯救这个平台。意义非凡。
大学最后一年,我们的课程使用了Visual Basic,但其实背后我们都在使用Delphi。实际上,我从未参加过任何微软认证课程,而且只学习了一些基本知识就考出了好成绩。那时,我已经在用Delphi编写COM组件,远远超出了课程范围。
我至今仍记得有一天老师将课程放在一边,单独给我们讲起了Delphi。他是一位充满热情的开发人员,将Delphi的包装盒放在我们面前时,他几乎无法抑制自己的激动心情。我们睁大了眼睛,张着嘴,津津有味地听着有关这个奇妙的新系统的所有知识。充满热情的思想涌现出了很多新想法。那真是一个奇迹。
大学毕业后,我曾有机会从事教师的工作,但我拒绝了。除了Delphi之外,什么都不教的想法感觉像是倒退了一步。
Delphi教育
在结束了大学的学习后,头几年里我一直在担任技术新闻记者,同时也在提高自己的开发技术。当再次回到大学学习时,Delphi已被列入了教学大纲。如今,年轻的开发人员常常在问为什么RAD Studio同时包含Delphi和C++ Builder,其实这种结合构成了传统软件工程学位的骨干。这种趋势一直持续到2002年,而且如今世界部分地区仍然如此。
这两种语言并排发展,而且共同拥有一段1970年代的辉煌历史。尽管许多开发人员错误地认为Object Pascal很老,C/ C++是现代编程语言,但实际上C与Pascal属于同一个时代。就像Delphi并非凭空发展一样,C也不是。而BrianKernigan和Dennis Richie的标准也是基于大型机行业已有(且经常相互冲突)的工具。
因此,作为编程语言,Pascal和C以及进一步的Object Pascal和C++都是并排发展起来的,尽管它们之间的正式间隔是三年。
值得庆幸的是,Embarcadero继续出色地完成了Delphi产品的最新功能。多年来,泛型、匿名方法、辅助类、属性等功能已发展成为该语言的一部分。在这些工作的推动下,我们看到了Delphi的市场采用非常稳定。无论是使用过其他语言的成熟开发人员,还是新手开发人员都能感受到Delphi的生产力和强大。
振奋人心的一件事是,Delphi和C++ Builder再次在教育领域大展手脚。在担任Embarcadero的SC期间,我帮助挪威的两所大学建立了社区版。此外,在苏格兰、意大利、葡萄牙、南美和俄罗斯的一些机构Delphi也在蓬勃发展。
挪威的老师都很激动,因为他们在Borland时代教过Delphi。就像一位教授款款而谈:“就像问候多年的老朋友一样。”
上个月Embarcadero宣布,土耳其将免费向其学生提供Delphi课程。估计有100万学生参加,这真是个好消息!对于学生而言,最重要的还是领悟可靠、现代和原型编程语言的优势。这些能让他们成长为更好的开发人员,就像我与数不尽的其他人一样。
软件工程原理
我不想离题太远,只想简单地说说原型编程语言。这是一个专属领域,除了Delphi和C++ Builder之外,该领域只有一个其他的编程语言(尽管Rust绝对应该位列其中)。
原型语言是体现计算基本原理的一种语言。这些原则不受产品和市场变化等因素的影响,因为它们代表了计算机的基础逻辑,有点像物理定律。在撰写本文之际,只有汇编语言、C/C ++和Object Pascal才是原型语言。而且汇编语言是其他一切语言的基础。
另一种语言称为乐观语言,这个名字源自数据库技术的术语(例如,乐观锁定模型)。虽然我不打算在本文中讨论为何一门语言被称为乐观,但总的来说,乐观描述的是一种语言对于现有基础结构的依赖性的大小(因此被称为乐观,其意思就是认为存在某些特定条件是理所当然的)。汇编、C和Pascal是编写操作系统或内核的语言。从根本上讲,它们对操作系统的依赖性不如Java或JavaScript那么强。
从低级编程到高级编程,再到高级面向对象,Delphi在广泛的领域都有出色的表现
有好几种操作系统都是用Pascal编写的。最有名的系统莫过于苹果经典的Macintosh操作系统,该操作系统跨68k和PPC处理器。尽管毫无疑问,C/C++是这类工作的主要语言,但事实上,苹果一直将Pascal作为核心语言,直到1996年史蒂夫·乔布斯回归(乔布斯从NeXT带来了Objective-C和Unix),这足以证明Pascal的强大和多功能性。自那时以来,Pascal的多功能性得到了极大的扩展。
我还想说说Ultibo,它是当今物联网设备上非常流行的嵌入式系统。该系统包含一个完全用Object Pascal编写的内核,以及构建现代嵌入式系统所需的所有基本组件。从USB堆栈到网络的所有功能全是用Object Pascal编写的。
虽然该系统使用的是受Delphi启发的开源编译器(FreePascal,过去曾被Delphi作为早期的移动支持),但是Ultibo的许多代码都源自Delphi社区。
坦白来讲,对于乐观一族的语言来说,这种工作是不可能的,或者至少是非常不切实际的。你需要一个能够覆盖从汇编语言到高级构造的所有东西,才能真正在这个级别上开展工作。你不能用JavaScript编写内核,因为它具有大量的依赖关系。
经过25年的发展,Delphi像以往一样强大且通用。关于Delphi的讨论有很多层次,本文到目前为止,我们只说到了一些皮毛。
感言
在生日祝酒之前,我要先讲几句。
Delphi就像我们的家庭成员一样,这么多年来,我把Delphi当成了血肉至亲,所以过去我曾无数次表示赞赏Delphi,而且我希望告诉别人Delphi仍然很重要的一些原因,也许如今Delphi比过去更重要。
如果想细数Delphi拥有和能够做到的一切,那么我可以滔滔不绝地说个没完没了。它的功能千千万,能够胜任的任务跨度非常大。Delphi带来的创新源泉永不枯竭,我无法仅在一篇文章中尽数讲清楚。
Delphi和C++ Builder涵盖的技术领域非常广泛,能够从各种环境中轻松访问文档至关重要
在过去的15年中,我全身心投入到了Object Pascal和Delphi。我写过博客,写过论文,在学校教过Pascal,并尽我所能让每一个人都了解Pascal。我甚至编写了自己的开发环境,以方便Object Pascal能够适应Node.js和HTML5等新平台,而且全部都是用Delphi编写的。
多年来,软件开发界已经接受了大量的折衷方案,现在整个行业的质量和可靠性损失已显而易见。这也是学术界渴望扭转这一趋势,并让Delphi重返高等教育的原因。
我可以直言不讳:这个世界不需要JavaScript开发人员。我们不需要其他C#程序员。从整体看来,软件开发需要的是更多的Delphi和C/C ++开发人员,因为质量的需求已经证实了我上面提到的那些基本原理。
那些曾受过Delphi和C++ Builder等经典软件工程教育的开发人员,如今可以开发定义规范的产品和公司。能够撼动整个IT行业的人并非毕业于Java,他们是Java的缔造者。真正核心的一切都是用原型语言缔造的。这是一个无可争议的事实。如果Linus Torvalds抱着Java不放,那么这个世界上就没有Linux了。忠言逆耳,这些话可能很刺耳,但都是大实话。
我们生活在一个很难用一种编程语言谋生的世界里。我并不是说你只需要选择一种编程语言。每种语言都有各自的用途,每个开发人员都应该从多方面充实自己。但是我必须强调以原型语言为基础的重要性。
这与我个人的喜好无关,我也不是狂热分子。我只是根据35年的开发经验总结出来的。我觉得至少我有这方面的积累,可以公开谈论这个话题。
如果你想成为一名普通的程序员,那么可以专门研究普通的编程语言。然而,如果你想成为杰出的开发人员,那么必须学习一种原型语言,而且在我个人看来,Delphi是最有效的。
如果你了解Delphi或C++ Builder,那么学习其他任何语言都易如反掌。因为在你学习Delphi时,就熟练掌握了那些基本原理。就冲着一点,你就比其他人都高一级。
Delphi的优点在于,你可以从各个级别使用它。没有人期望你编写内联汇编程序,或从头开始创建数据库引擎。自Turbo Pascal以来,Delphi的覆盖范围已非常广泛,且已经过了时间的考验,已发展成熟和完善。
因此,你可以按照自己的情况发展和学习语言。只要你充满好奇心,且愿意挑战自己,那么Delphi绝对值得一试。
此外,与其他语言不同,无论将来你投身何处,深入Delphi所获得的知识和见解都会终身受益。Delphi?它是哲学,它是逻辑,它是艺术;它教你思考和提炼出解决方案,而其他人只能看到重重障碍。
本文的核心思想总结起来就一句话:
软件工程学位不是目的地,而是聪明人一生的起点。
亲爱的Delphi,我的老朋友,祝你生日快乐!
原文:https://community.idera.com/developer-tools/b/blog/posts/25-years-of-excellence
本文为 CSDN 翻译,转载请注明来源出处。
014年在传统PC端浏览器发展的过程中,应该属于全面进步的一年。本年度中,各家浏览器开发商纷纷使出着浑身解数,有的在逐渐地淡化用户对版本追逐;有的则侧重于浏览器界面的优化;还有的最终还是回归到技术层面上的提升。反正无论功夫下到什么位置上,开发商的初衷都是要在自身的品牌浏览器基础上,将更加精进的浏览器体验推送到用户面前。然而,经过了这一整年的发酵,我们也是时候来对本年度浏览器的一些新产品、新技术做一下总结了。
火拼"心"时代 PC端浏览器2014年度横评
每一款产品都具有自己的核心技术(当然也不完全例外)。而对于浏览器来说,核心技术所代表的范畴也许相对还要更大。最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”,负责对网页语法的解释。
所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。
说了这么多,笔者的意思无非是为大家讲述,作为一款浏览器产品,浏览器内核技术是那么的重要。就正如我们的横评主题一样,在这个拼“心”的竞争环境中,谁能提供更为精进的技术,并以这样的技术作为基础做好产品,谁就更容易获得用户青睐。那么,接下来的横评,我们从浏览器纯技术性能测试项展开本年度的PC浏览器横评。
测试平台选择
如上图所示,我们选用的是Windows 8.1操作系统平台。由于最新的Windows 10技术预览版目前仍然在更新之中,加之Win10正式版明年才会本正式推出。因此,为了确保测试进行过程中,避免受到不必要的干扰,造成数据的不准确。我们选用Windows 8.1 Pro(64 bit)。
参测浏览器内核及优劣势比较 | ||
软件名称 | 核心 | 优缺点 |
QQ浏览器 | Chrome Tab高速组件+IE高级内核 | 兼容性好扩展强大,GPU渲染稳定偏弱 |
Chrome浏览器 | Blink(Webkit分支) | 不易崩溃速度快,系统资源占用较高 |
IE11 | IE | 兼容性好,功能的扩展性差 |
Firefox | Gecko | 页面排版能力强,数据存储能力较差 |
猎豹浏览器 | Chrome/IE兼容核 | 数据安全性高,浏览器设计欠佳 |
搜狗浏览器 | WebKit/IE兼容核 | 加速效果好,账户管理能力较弱 |
傲游云浏览器 | Blink/IE兼容核 | 内存占用少,多页面加载稳定性差 |
360极速浏览器 | Chromium/IE兼容核 | 网页加载速度快,广告推送过频繁 |
百度浏览器 | Chrome/IE兼容核 | 聚合百度产品,运行慢占用高 |
本文九款参测浏览器产品中一,双核浏览器均为极速核心+兼容核心,下文中所出现的各项测试,碰到双核浏览器我们均以极速核作为主核心来进行测试。通过这样的方式,则更能将单双核浏览器在核心功能上的PK展现出来。
备注:由于软件通常是按照版本来进行更新的(少部分可能已经取消了版本号,但是日常的更新仍然是不断在跟进),所以大家可以随时关注ZOL软件下载频道各款参测产品的更新情况,以保证用户电脑中的浏览器保持最新的版本。
浏览器的加载测试,是每一款浏览器的基本功鉴定。虽然一众浏览器在开发之初的产品理念、定位以及侧重点可能并不是一样的,但是归根到底,浏览器最基本的功能就是针对网页的浏览体验。因此在网页的加载方面,是我们测试第一步所首先要考虑的数据标准。那么,在众多网页指标,如图文、视频、Flash等方面,本文所选用的9款PC浏览器的表现如何?我们接下来就为大家呈现。
傲游云浏览器标准加载最终速度
这里需要指出的是,用户普遍在使用不同浏览器的时候,在反应速度上的直接感觉,其中很大一部分就来自于这种单页面加载的速度的体现。然而,普通浏览器用户在使用浏览器过程中,除了在网页在线视频、游戏以外,其实绝大多数用户无非还是在于浏览图文信息页面。要判断一款浏览器是否好用,页面加载速度是一项重要指标。而针对相对更为“高大上”的浏览器其他指标,我们会在后文继续测试。
参测PC浏览器标准页面加载测试 | |
软件名称 | 测试结果 |
QQ浏览器 | speed=353kB/sec |
Chrome浏览器 | speed=340kB/sec |
IE11 | speed=351kB/sec |
Firefox | speed=283kB/sec |
猎豹浏览器 | speed=293kB/sec |
搜狗浏览器 | speed=360kB/sec |
傲游云浏览器 | speed=361kB/sec |
360极速浏览器 | speed=328kB/sec |
百度浏览器 | speed=358kB/sec |
点评:这里,需要说明的一点是,测试页面打开之后,PC浏览器对页面或多或少地存在着网页的缓存,这样导致测试的耗时会越来越短,速度也就越来越快了。因此,在标准加载测试中,我们只采取一次性测试并作为最终的测试结果。在之前的年度、半年度的浏览器大型横评中,我们进行了比较,傲游云浏览器在标准加载的多次测试中均处在了榜首位置上。本次横评傲游云浏览器也是以361的测试得分排在所有测试产品第一位。
JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本,同时,还能通过JavaScript测试来检测浏览器的性能。其中,JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的user Agent属性来判断的。然而,归根到底这两种方法在浏览器身上的体现,成为性能本质上的考量。
JavaScript测试QQ浏览器测试表现
在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的user Agent才能知道。从服务器端到用户的浏览器的界面上,浏览器内核对动态类型的对象分析过程需要花费一定的时间,最终结果将作为浏览器对动态页面加载的速度快慢程度的一种判断。
Javascript性能测试 | |
软件名称 | 结果(单位:毫秒,数值越小越好) |
QQ浏览器 | 119.2ms+/-2.0% |
Chrome浏览器 | 199.9ms+/-1.8% |
IE11 | 120.4ms+/-2.4% |
Firefox | 200.0ms+/-3.8% |
猎豹浏览器 | 214.1ms+/-2.1% |
搜狗浏览器 | 201.6ms+/-1.5% |
傲游云浏览器 | 218.2ms+/-2.8% |
360极速浏览器 | 218.7ms+/-2.2% |
百度浏览器 | 221.7ms+/-2.3% |
测试点评:JavaScript对浏览器进行加载特定的网页网站的加载测试更具意义。这就是在加载过程中,只需要来测试这个过程中打开网页所花费的时间,就可以比较出浏览器在JavaScript基准测试中的快慢情况。本轮测试相对来说,QQ浏览器优势非常明显,这也说明了使用QQ浏览器来加载大型网站页面的时候,将会显得更为给力。
从IE9之后,一众浏览器几乎在Web平台上,几乎都能进行完全而充分的硬件加速,全面支持HTML5 GPU硬件加速。那么,借助于GPU的效能来渲染标准的Web内容,如文字、图像、视频、SVG(可缩放矢量图形)等网络信息,减少CPU负荷,大大的提高浏览器的速度。浏览器在绝大部分情况下,对图形的处理非常重要,同时现在网页技术的不断进步,浏览器一个专门的图形的“核心处理器”成为了必备。
IE11浏览器GPU处理速度测试
硬件加速已经被各大浏览器厂商争相追捧,不同的浏览器使用不同的方法来实现硬件加速,因此它们的表现也不尽相同。使用IE Test Drive官方网站上新增的测试项目“FISH-GL”来对比测试各浏览器,对比它们在硬件加速方面的表现。
浏览器GPU处理速度测试 | |
软件名称 | 测试结果FPS(帧/秒)/GPU 3D渲染加速+ |
QQ浏览器 | 15 |
Chrome浏览器 | 22 |
IE11 | 25 |
Firefox | 21 |
猎豹浏览器 | 13 |
搜狗浏览器 | 23 |
傲游云浏览器 | 18 |
360极速浏览器 | 20 |
百度浏览器 | 16 |
点评:这个测试项目对浏览器的考验,主要使用了很多新兴的HTML5和SVG模式,比如SVG DOM处理、SVG元素变换、通过HTML5 audio标签播放背景音乐。测试会追踪浏览器的页面渲染帧率,测试人员可以通过调节右边位置上“鱼缸中鱼儿的数量”来减小浏览器渲染的需求,从而能够相对的提升一下最终的帧数(但需要注意的是,多款浏览器之间进行对比时,必须将鱼缸中鱼儿的数量保持相同的数量来测试,以确保测试的准确性。)
使用Javascript Raytracer可以测试出浏览器的JavaScript渲染性能,测试分为基本渲染和完全渲染,基本渲染测试时Javascript Raytracer会以三个像素为一组进行渲染,因此所需时间通常比较快。本项测试没有封顶数值,单位秒,分值越小越好;而完全渲染测试也是通过Javascript Raytracer进行的,与基本渲染的不同之处在于需要逐个像素的进行渲染。
完全渲染所得到的最终效果
基本渲染和完全渲染测试 | ||
软件名称 | 基本渲染测试(S) | 完全渲染(S) |
QQ浏览器 | 0.885 | 13.376 |
Chrome浏览器 | 0.747 | 21.089 |
IE11 | 0.930 | 15.832 |
Firefox | 2.828 | 35.215 |
猎豹浏览器 | 0.816 | 19.577 |
搜狗浏览器 | 0.684 | 15.197 |
傲游云浏览器 | 0.729 | 14.360 |
360极速浏览器 | 0.548 | 14.297 |
百度浏览器 | 0.717 | 20.799 |
基本渲染测试结果柱形图
完全渲染测试柱形图
测试分析:当引用了JS时候,浏览器在原理上会先发送1个jsrequest,一直等待该request的返回。因为浏览器需要1个稳定的DOM树结构,而JS中很有可能有代码直接改变了DOM树结构。浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现。这个过程,反应的时间虽然比较快,但却经历了大量的逻辑运算。因此,对于浏览器本身来说,不同的浏览器在应对一系列下载、加载以及呈现的运算时,需要的时间不一样,这样也就出现了最终测试结果的快慢不同。
CSS3是CSS技术的升级版本,CSS3语言开发是朝着模块化发展的。以前的规范作为一个模块实在是太庞大而且比较复杂,所以把它分解为一些小的模块,更多新的模块也被加入进来。这些模块包括:盒子模型、列表模块、超链接方式、语言模块、背景和边框、文字特效、多栏布局等。
性能测试的意义:斟酌浏览器的性能,通常都会进行性能测试,参考测试的标准,可以定位浏览器本身所具备的性能层次等级。经CSS3专业跑分,我们可以很方便地了解亮点。
360极速浏览器CSS3兼容性测试结果
浏览器CSS3兼容性测试 | |
软件名称 | 测试结果(%) |
QQ浏览器 | 51 |
Chrome浏览器 | 57 |
IE11 | 52 |
Firefox | 55 |
猎豹浏览器 | 56 |
搜狗浏览器 | 58 |
傲游云浏览器 | 55 |
360极速浏览器 | 60 |
百度浏览器 | 57 |
参测浏览器CSS3兼容性测试结果
CSS3 Selectors Test是CCS3选择器其中一项测试项目。启动后的测试,网页页面内套件会自动运行一个小测试,这将确定您的浏览器是否能够兼容大量CSS选择器中的测试项目。如果项目不被兼容,则该项就被标记为一个特定的标签。您可以点击每个CSS选择器的按钮查看到结果,每个测试都包含这一个小案例,以便提供给使用者对应的解释。
在技术上,CSS3 Selectors Test在模拟某些用户交互测试时是有限的,不仅仅依赖于用户交互的CSS选择器。几乎所有的浏览器都无法检测到访问和未访问链接之间隐私的变化 。影响到这些选择的能力测试,而无需用户交互。
测试总结:通过CSS3方面测试,同类产品进行了对比之后,可以得出360极速浏览器在CSS3测试中,得到了60%的分值,在对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制,性能表现具备了非常明显的优势。
HTML5是万维网的核心语言,是标准通用标记语言下的一个应用超文本标记语言。那么,作为目前浏览器的一项全新标准,HTML5将推动Web进入新的时代。以往Web还只是上网看一些基础文档,而如今,Web是一个极大丰富的平台。我们已经进入一个稳定阶段,每个人都可以按照标准行事,并且可用于所有浏览器。如果我们不能携起手来,就不会有统一的Web。
傲游云浏览器HTML5测试结果
HTML5标准的不断规范化,其中网页的开发者们有不可取代的功劳,希望大家能分享更多这些很炫的网站给我们。HTML5对于浏览器来说,意味着浏览器层次上的定位,当然它也是浏览器性能所不可获取的。
浏览器CSS3兼容性测试 | |
软件名称 | 测试结果 |
QQ浏览器 | 375 |
Chrome浏览器 | 505 |
IE11 | 372 |
Firefox | 471 |
猎豹浏览器 | 494 |
搜狗浏览器 | 467 |
傲游云浏览器 | 515 |
360极速浏览器 | 513 |
百度浏览器 | 439 |
HTML5具有两大特点:首先,强化了Web网页的表现性能;其次,追加了本地数据库等Web应用的功能。HTML5实际上包括HTML、CSS和JavaScript在内的一套技术组合。傲游云、360极速浏览器和Chrome的表现比较具有优势了。
评测总结
以上测试部分,我们与以往的测试过程做了一些改变,主要是体现在测试项目的选择上。本次我们加入了CSS3兼容性测试(本项测试定位浏览器本身所具备的性能层次等级)。经过以上详细的测试比较之后,这里我们可以来做一下总结,并找到其中的优势产品。(备注:由于测试的项目相对较多,在每一个细化测试项中,可能不同的浏览器获得的测试得分都会呈现高低不平,因此最终我们所找出的优势产品都是相对意义上的优势,是从综合角度上来考究的)
QQ浏览器
双核浏览器:本次表现相对比较突出的有QQ浏览器、傲游云浏览器和360极速浏览器。然而其中,无论是这三款双核哪一款浏览器产品,在经过本横评所选用的6项测试,即使是这三款相对优秀的产品,也无法做到所有无法在测试中完美取胜。而我们唯一可以去比较的是,这三款产品的特性决定了,QQ浏览器在前段的测试非常优秀,后段似乎略显“后劲不足”;而傲游云浏览器贯穿整个横评,测试性能相对要均衡平稳一些;360极速浏览器则为“后进型”,后段测试显得相对要突出不少。
单核浏览器:IE11浏览器
Internet Explorer 11
本次横评中,让笔者影响较深的是IE11浏览器,因为在本年度的横评中,我们看到在单核浏览器横评的最终的测试结果,几乎都要被Chrome浏览器囊括了,其他单核浏览器只得到了尴尬的局面。然而,这一次就不一样了,IE11浏览器在经过Windows 8、8.1甚至是目前最新的Windows 10开发洗礼之后,已经杀到了Chrome浏览器的前面来。
也许在大家的印象中,IE浏览器就是兼容性的化身。IE浏览器速度不算快,但是绝对不会让您感觉到难受;IE界面很简洁,乍一看去似乎什么功能都“没有”,然而您所需要的很多功能其实也都能找得到。说到底,IE11本次赛过了Chrome确实让人感到些许意外。
者 | Fundebug
责编 | 屠敏
前言
几乎所有JavaScript开发者每天都在使用Chrome,大家知道它是如何成为浏览器霸主的吗?
Google为什么要做浏览器?
其实,Google的联合创始人Larry Page和Sergey Brin早在2001年就想做浏览器,但是当时的CEO施密特一直反对,因为从头开发一个浏览器的成本太高了,不是一个创业公司可以承受的。因此,Google直到2006年,公司已经上市2年了,才开始做浏览器,秘密开发了2年,Chrome才正式发布。
Google真正开始开发Chrome是2006年,当时IE的市场占有率高达80%,Firefox大概是10%。自从击败Netscape之后,IE似乎可以高枕无忧了。如果那时候有人要做一个浏览器,大多数人都会质疑,还需要多个浏览器干嘛?IE和Firefox又不是不能用。
但是,2006年时的Web早已经不再是简单的静态页面,Gmail、Youtube、Google Maps,Facebook这些复杂的Web应用已经出现一段时间了,传统浏览器在架构、性能以及稳定性上已经逐渐不再适用了,这时正是需要一款更加强大的浏览器来满足用户与Web开发者的需求。
Google所做的最重要的事情,就是对成千上万的网页进行排序,所以它存在的意义是基于网页的。而一个更快、更好的浏览器,可以促进Web技术的发展,网页会越来越多,越来越好,用户花在Web上的时间越来越多,这对Google是有益。因此,Google要做浏览器,不只是想要一个搜索入口那么简单。
Google希望通过Chrome浏览器来促进Web技术的发展,从而让自己受益,这也不是什么秘密,Chrome团队的人都是这么说的,Google现在的CEO是Sundar Pichai,他当年发布Chrome的时候是这样说的:
We hope to collaborate with the entire community to help drive the web forward.
这样假大空的话当年大概没几个人相信,但是这不重要,重要的是Google真的做到了,Chrome确实推动了Web技术的发展。没有Chrome的话,现在的Web技术大概确实得落后不少。
如果Google只是想要一个搜索入口,它可以收购一个浏览器,或者基于开源浏览器套一个壳,做一下账户系统就够了,再通过Google网站进行推广。国内各个大厂的浏览器都是基于Chrome的开源版本Chromium实现的,某个浏览器甚至直接打包了Chrome的安装包。
既然Google想做的事情是推动Web技术发展,如果沿用旧的思想和技术的话,显然是做不到的。于是,他们设计了一个多进程的浏览器架构,重新写了一个性能彪悍的JavaScript引擎V8,后来又基于Webkit做了一个新的渲染引擎Blink。
不妨这样说,Google与国内的搜索引擎巨头们的还差一个Chrome浏览器。后者看到的是搜索流量带来的商业价值以及重新开发一个浏览器的巨大成本,而前者看到了Web技术发展对搜索引擎本身的长远价值。
Chrome就一定能成功吗?
Google终于决定做浏览器了,但这事能不能做成,其实也不一定。和每一个大公司一样,Google失败的项目远远多于成功的项目,大家不妨看看Killed by Google里面的列表。
Google确实有很多非常成功的产品,比如Android,Youtube,Google Maps, DeepMind,但是它们其实都是收购来的。Chrome算是Google为数不多的真正从零开始打造出来的产品。
下面这张图是Chrome发布时的照片:
图片来源:Niall Kennedy
照片中从左至右是Larry Page, Brian Rakowski, Sundar Pichai, Sergey Brin, Darin Fisher, Lars Bak和Ben Goodger,他们都是Chrome浏览器最关键人物,也都因为Chrome的成功而收益不菲。
Larry Page和Sergey Brin是Google的创始人,他们一直希望做浏览器;
Sundar Pichai当时是Google负责产品的副总裁,Chrome也在他的管理范围之类,现在他是Google的CEO;
Brian Rakowski当时是Chrome的产品经理,现在是Google负责产品的副总裁;
Lars Bak是JavaScript引擎V8的负责人,曾长期从事编程语言的虚拟机开发工作;
Darin Fisher是Chrome最早期的开发者,之前是Firefox的工程师,现在是Google负责Chrome的副总裁;
Ben Goodger是Chrome最早期的开发者,之前是Firefox的工程师,现在的职级为Distinguished Engineer,仅次于Google Fellow以及Senior Google Fellow;
照片中大家都挺开心的,秘密开发了2年的Chrome终于发布了,但是他们能想到10年后Chrome可以占有接近70%的市场份额吗?
下图是2009年到2019年浏览器的市场份额变化,Chrome一路飙升,而一度垄断市场的IE则刚好相反:
图片来源:Visual Capitalist
不妨对比一下1994年到2008年的浏览器市场份额,IE通过免费捆绑Windows把Netscape整垮了,巅峰时期的市场占有率高达96%:
图片来源:Wired
浏览器一直是一个硝烟四起的战场,因此浏览器市场份额的变化多少有点戏剧性。
Chrome为什么会成功?
Chrome为什么会这么成功呢?Google创始人Larry Page是这样说的:
Chrome has hundreds of millions of happy users and is growing fast thanks to its speed, simplicity and security.
Chrome很快,很简单,也很安全,所以它成功了,这是Page的观点。真的是这样吗?其实也差不多。不过还少了一点,stability,即稳定性。Chrome的产品哲学是一共是4个S:Speed, Security, Stability以及Simplicity。其实,这4个S适用于所有互联网产品,要做到话也不是那么容易。
说人话,Chrome究竟有哪些不一样呢?
简洁的用户界面(Simplicity)
多进程架构(Stability, Speed, Security)
JavaScript引擎V8(Speed)
渲染引擎Blink(Speed)
用户界面的Simplicity其实不难做到,现在很多浏览器和Chrome看起来也差不多,只是Chrome率先简化了浏览器的界面。这类似于iPhone发布之后,大家明白了一个简单的道理,原来手机只需要一块屏幕就够了,不需要那么多按键,后来所有智能手机基本上都长得一样了…
多进程架构、V8引擎以及Blink引擎都是非常硬核的技术,不是一般开发者可以做到的,就算是现在也很少有人或者公司去尝试做这个,所以现在国内外很多浏览器都是基于Chromium实现的。我想大家心里都清楚,要想这3点上超越Chrome,可能性非常小。
Blink渲染引擎的优化对提高Web性能也至关重要,只是Chrome刚开始用的是Webkit,我会在以后的博客中详细介绍Blink。
当然,Chrome所做的创新远不只这么多,我列举的4点是Chrome成功最关键的要素。
简洁的用户界面
Chrome已经发布10多年了,但是它的界面其实没怎么变过:后退图标,前进图标,刷新图标,合并的地址栏与搜索框,书签图标,登陆图标,设置图标…Chrome的界面非常简洁,没有任何多余的元素。
2009年的Chrome是这样的:
图片来源:Gmail in 30 seconds
2019年的Chrome是这样的:
Chrome发布时,IE8也差不多在同一时期发布,但是它的界面就没那么简洁了:
通常,用户应该不会去点击“页面”、“安全”、“工具”等选项,其实它们完全可以隐藏起来。Chrome的很多选项都是隐藏在设置选项里面,其实更加科学。
Chrome是第一个将地址栏与搜索框合并的浏览器,合并的框被称为Omnibox,用户既可以输入地址,也可以搜索关键字。当用户输入时,Chrome还会进行实时推荐用户可能要访问的网页。
Chrome还把书签栏给隐藏了,这对于重度书签用户(比如我)来说带来一些不便,但是这也让界面又简洁了很多。很多浏览器的书签栏不仅没有隐藏,还会添加很多莫名其妙的默认书签,甚至很多软件安装时也会给浏览器添加一些书签,而这些书签其实很多用户都不会访问。
合并地址栏和搜索框,隐藏书签栏,这样做不只是让用户界面更加简洁,还可以培养用户的搜索习惯,让用户不在需要记住特定的网站。
Chrome与IE8的Tab位置是不一样的,Chrome的Tab在上面,而IE8的Tab在下面,这个区别似乎没那么重要,不过也没那么简单。Tab是Chrome用户界面最重要的元素,每一个Tab使用独立的进程,Tab可以拖拽出来作为独立的窗口,相当于一个独立的应用。
Chrome的设计哲学是”Content, not Chrome”,因此它们Tab置顶,把一切可以省略的东西都去掉,比如搜索框、状态栏、书签栏以及各种设置的快捷方式,尽量让每一个Tab看起来像一个独立的应用:邮件、视频、社交或者购物等,不要让多余的浏览器元素影响用户体验,让用户专注于Web应用本身,让Web应用越来越重要,这不不正是Google的阳谋吗?
Chrome的产品哲学与iPhone以及微信本质是一样的,都是极简主义,这个地球人都知道,但是没有多少产品可以真正做到。为什么呢?因为要做到极简主义,需要深刻思考用户需求以及产品价值。
多进程架构
Chrome的每一个Tab和插件,都使用独立的进程。这样可以提高浏览器的性能、安全性以及稳定性:
充分利用多核CPU,不同的进程可以使用不同的CPU核运行;
便于限制Tab与插件进程的权限,减少安全隐患;
当某一个Tab的页面崩溃了,不会导致其他Tab崩溃,整个浏览器还可以正常使用;
多进程架构借鉴了现代操作系统的设计思想,浏览器不再是一个简单的应用,它是一个平台,可以用于独立运行各种各样的Web应用。
使用Chrome的任务管理器,可以查看每一个Tab和插件进程所使用的CPU、内存已经网络。这样可以帮助Web开发者优化代码,高效利用计算机资源。
既然多进程架构有这么多好处,那为什么以前的浏览器采用单进程架构呢?因为IE、Firefox等浏览器诞生时,Web还非常简单,大多是静态页面,单进程就够用了,而且当年也没有什么多核CPU。
从单进程架构切换到多进程架构是一个非常复杂的过程,Firefox从2009年到2017年花了整整8年时间才完成切换。从这一点来说,Firefox落后了Chrome接近10年。这倒不是因为Chrome的工程师特别厉害,而是因为Chrome从一开始就设计了多进程架构,没有什么技术债。
JavaScript引擎V8
Chrome的性能优异,很大程度上要归功于他们的重新的开发的JavaScript引擎V8。V8引擎可以将JS代码编译为高效的汇编代码,同时还要负责执行代码、分配内存以及垃圾回收。
V8引擎的命名灵感来自超级性能车的V8引擎,敢于这样命名确实需要一些实力,它性能确实一直在稳步提高,下面是使用Speedometer benchmark的测试结果:
图片来源:https://v8.dev
JavaScript是动态的,且没有类型,这会给V8引擎编译JS代码时带来很多麻烦。不过V8引擎可以记录代码第一次执行时的类型信息,当代码第二次执行时,则可以根据记录的类型信息生成优化的汇编代码。另外,V8引擎还会为Object生成动态的hidden class,用来记录Object的结构,以提高属性的访问速度。
V8引擎的垃圾回收算法也非常强大,可以大幅减少内存使用。最近有人对比了一下3中不同类型的JS引擎JavaScriptCore、Hermes以及V8在React Native应用中的内存使用情况,发现V8的内存使用量明显低于其他引擎,且非常平稳:
图片来源:Bhaskar gyan vardhan
V8引擎不只是让Chrome变快,它也让JavaScript变得更加强大,让JavaScript生态系统变得异常繁荣。Node.js也是基于V8引擎的,因为有Node.js,才有了数量庞大的NPM模块,才有了各种各样的JavaScript开发框架和工具。
Chrome会成为下一个IE吗?
也许是树大招风,最近批评Chrome的声音越来越多了,有人甚至说Chrome会成为下一个IE6。个人觉得这个有点危言耸听。
Chrome从一开始就是开源的,”Talk is cheap, show me the code”,如果实在对Chrome有啥特别不爽的地方,其实可以去改代码,或者fork一个更好的版本。
Chrome从一直是尊重技术标准的,它在发布的时候就通过了Acid测试,更重要的是,它一直在推动HTML5、CSS、ECMAScript、HTTPS, HTTP/2, WebAssembly, Service Workers, Source Map等Web相关技术标准的发展,大家可以在各个标准提案中看到Google工程师的身影。
有人说Google工程师最大的问题就是喜欢提新的技术标准,但是有标准比没有标准要好太多了,国内各个大厂小程序做了快3年了,至今连个标准都没有,各玩各的,这样做导致整个小程序行业一起加班,一起重复劳动。最严重的问题在于,没有标准会制约小程序的进一步发展,大家无法给用户提供最好的产品。
开放繁荣的Web符合Google的长远利益,因为Google是靠Web广告赚钱的;但是Web对于Microsoft来说一直就没有太大商业价值,因为Microsoft卖的是操作系统;按照吴军老师的基因论,IE之所以失败是Microsoft的基因决定的,而Google的基因决定了它必须把Chrome做好。
从目前的情况来看,Chrome依然会保持简洁的界面,性能也会一直提高,这样的话,用户和开发者也没有多少动力去换浏览器。我已经用了7年Chrome了,未来还会继续用下去,那你呢?
参考
The Google Chrome Comic
Inside Chrome: The Secret Project to Crush IE and Remake the Web
From PM to CEO: How Sundar Pichai’s Background in Product Paved the Way for Becoming CEO at Google
Chrome is turning into the new Internet Explorer 6
From 0 to 70% Market Share: How Google Chrome Ate the Internet
Google Chrome launch
Modern Multi-Process Browser Architecture
Photos: 10 years of Google Chrome
Timeline: The 30-Year History of the World Wide Web
How we designed Chrome 10 years ago
The Chromium Projects: Core Principles
【End】
下面给大家推荐 CSDN 的好朋友——程序人生。
*请认真填写需求信息,我们会在24小时内与您取得联系。