写在前面
我不得不承认,使用这样的标题有点煽情,甚至有点夸大其辞,网络更加流行,我听到新名词的频率也越来越高,什么Web,什么Java,什么J2EE、.NET……我又听到了Longhorn,听到XAML(发音“zammel”,大家不妨读着“折磨”吧,反正我自己已经被折磨的够呛)。跟着时代走,我也冒天下大不帏的使用了“战争与和平”这样的词眼。
每段过去都意味着一个故事,只是故事里头的人物和细节,在多年以后我们都彼此遗忘罢了,在我们感觉知识接受疲惫的时刻,停下来泡一杯浓浓的咖啡,来和我回味那段历史,那段浏览器的历史。看不见鲜血,看不见硝烟,在我们理所当然的认为浏览器就是IE的时刻,你是否知道曾经有一场战争在上演,在已经“和平”的年代,我们缅怀过去的勇士,感谢他们曾经做出的努力,因为竞争,所以进步。
在那场战争里头,有人哭,有人笑,“成王败寇”,这是一个无法改变的法则,我无意去讨论商业方面的运作,也不去阐述当年那场争霸战的道德是非,只是从一个旁者的角度去看待发生过的事实,从一个技术人员的角度去说那些技术给我们带来的好处。
请在此刻,放飞你的心情,随我一起回到过去……
谁也不否认,在80年代,凭借MS DOS和后来的Win3.1图形操作系统,技术天才比尔.盖茨创建的微软成为PC时代的霸主,谁也不会去怀疑整个80年代到94年微软公司的告诉发展,可是天才也有选择错误的时候。
相距一步
1993年5月,伊利诺斯州大学的天才少年Marc Andreessen开发了第一个浏览器Mosaic,1994年上半年他和Jim Clark成立了Mosaic Communications(也就是Netscape的前身),同年10月发布了Netscape 0.9,这个是我们看到的第一个浏览器的Logo,虽然今日已经面目全非。
11月因为和伊利诺斯州大学的法律问题,公司被迫改名为“Netscape Communications”,同时在站点LOGO中移除了“M”的标志,自此,Netscapte正式走上历史舞台,开始了真正的所谓“Internet”时代,下图是当初的全部开发工程师,不知道今天还有几个人依然执作于当年的事业,不知道是否一如当年的意气风发。
1994年Netscape开发工程师
同年10月,微软发布了它的浏览器软件Internet Explorer,但当时微软正忙着为Windows 95接生,并没有预见到网络时代的迅速到来。所以在微软的战略中,IE浏览器只不过是微软所发布的一个普通应用软件而已。
1995年Netscape公司的股票上市时,Netscape浏览器几乎拿下了整个浏览器市场,这个时候微软才真正意识到网络时代的到来,同时觉察到了自己的战略失误,并下大力气力挽狂澜,迅速地调整了自己的互联网业务战略,将微软牵回到了Internet的宽阔大道上。1995年11月,微软发布了它的浏览器软件IE 2,1996年3月份微软推出了IE3.0,不过这个时候依然是互联网络的迟到者,虽然一个免费软件,但是笨拙的操作界面和访问速度并没有引起太多人的关注,江山依旧,在互联网络的世界netscape风光无限,而微软的IE,则只不过是杂志专栏作家们的取笑对象。这就是迟到者必须付出的代价。
奋起直追
1997年微软推出了IE4.0版本,加入了ActiveForm和频道的支持,DHTML的引入为其的加入了竞争的筹码,同时第一次将Outlook Express集成安装,不过此时的DHTML和DOM依然功能有限,特别是设计比较笨拙的Jscript脚本引擎并没有能够吸引太多的用户转投IE。
为了扭转这一局面,1997年10月,微软将其IE浏览器与Windows 95操作系统进行捆绑出售,推出了被我们习惯称之为Windows 97的操作系统升级版本。虽然这样做法引起业内人士的强烈反对,但是不管如何,还是让让IE浏览器在浏览器市场中所占的份额迅速扩大,并逐渐超过Netscape。
在IE5之前,我始终认为是windows对于netscape的“政治施压”而让IE浏览器取得不俗的市场份额的,在易用性和功能方面Netcape绝对不会逊色,唯一的区别是IE是Windows捆绑销售的免费产品,而Netscape是收费的。
1998年6月25日,微软发布的新一代操作系统Windows 98(也就是我们通常说的Win98第二版)实现了与IE浏览器的完全融合。在这个时候IE在市场和技术方面已经取得了绝对的优势,如果说IE5.0之前的版本成功在于微软的捆绑销售策略,那么IE5.0的成功应该在于技术方面。
这是一个在市场和技术都非常成功的经典之作,5.0版本整体的设计思想在后来的基本版本中没有本质性的变化,而正是这个版本,奠定了后来的IE一统天下。1998年的此时,Netscape还拥有32%的市场份额,同年11月Netscape取消了基于新技术(Gecko aka Raptor)的Netscape 5.0的开发计划,同月,AOL收购了Netscape公司,这颗互联网的明星,正在一点一点的走向没落。
这个版本的IE终于完全体现出微软在互联网络方面的决心,除了实现HTML 4.0和DHTML以外,微软加入了许多自己定义的技术,不论这些技术是否兼容,但从实际情况来看却是促进了更多人使用IE,html3.2时代的thin client已经在改变,浏览器不再是一个单纯的内容浏览器,更加具备了交互的功能:
1. 在支持NetScape的JavaScript(ECMA Script)的基础上实现了功能更加强大的Jscript引擎。
2. ActiveX的兼容让浏览器不仅仅是一个哑终端,而是通过ActiveX和ActiveX Document具备了高度交互的能力
3. 优化CSS(级联样式单),让Web界面的内容表现更加丰富
4. 针对Web开发人员提出了HTC(HTMLComponent)和HTA(HTML Application),通过编写脚本方式的组件和应用程序让HTML无所不在,而浏览器和操作系统的无缝结合正是这一技术的基础。
5. 内置了矢量图形解析引擎。VML(Vector Markup Language)是其在浏览器矢量图形方面的一个比较小但是非常实用的应用。相对于当时的SVG标准而言,VML远没有其功能强大,但是标记内置和解析引擎内置的方式却能够让Web开发人员容易的使用,Office的艺术字就是一个比较经典的应用。
6. 通过ActiveX的方式内置了MSXML解析引擎,支持DOM和XSLT.
雄霸天下
AOL并购Netscape公司后,终于在2000年11月推出了新版的Netscape软件Netscape 6,而在此前的两年间里,2002年8月26日,Netscape浏览器的市场份额只剩下3.4%,创下了历史最低纪录。2001年9月20日IE6.0的发布,标志着浏览器大战的彻底终结,不管在市场还是在技术方面,相对于IE浏览器的对手Netscape,此时已经取得了绝对的成功。
6.0是这两年来的最后推出的一个版本,在这个版本中,一些在5.0和5.5版本提出的一些技术都得到了比较好的实现。主要表现如下:
1) 5.0版本提出了behavior的概念,就是可以通过定义html标签的style=”behavior:url(mybehavior.htc)”的方式附加脚本逻辑,在5.5版本提出支持自定义html标签和支持二进制Behavior,不过依然不够稳定,而这一切问题在6.0终于得到比较好的解决。
2) 基于矢量作图的VML在5.0推出以后,图形引擎方面还不够完美,整体感觉在做一些曲线图形的时候不够流畅,并且如果通过DHTML控制,会严重的影响效率,在6.0终于看到了一个高效流畅的图形显示引擎。
3) 内嵌的XML引擎终于升级到了3.0,配合JavaScript和MSXML,在IE方面终于能够更好的使用xml,包括日前正火的Web Service
4) 内置了更多的Binary Behavior,如History,Snapshot等等
5) 增强了多媒体支持,内容在网页编程中方便的控制多媒体。
虽然系统服务架构千差万别,但是有一点可以肯定的是在客户端浏览器IE已经成为一个事实上的标准,在浏览器市场,微软后来居上,真正建立了他的大统一帝国。
战争已经尘埃落定,微软再一次成为市场的赢家。
浏览器之争带给我们什么?
我们姑且不去评论在这场战争中微软商业运作的道德是非,但是有一点谁都可以肯定,竞争促进了浏览器技术的发展,而战争的结局,当然是那个帝国之子笑了。
上文提到IE5.0版本应该是IE浏览器的经典之作,后续的版本都无法脱离这个框架,6.0作为Internet Explorer的最后一个版本,已经非常稳定和强健,在互联网,企业信息通,办公自动化等等原先基于C/S架构的应用已经渐渐迁移到B/S架构上,而浏览器毫无疑问的是选择IE.。
IE中的主要核心技术和应用如下
1. 建立公共访问的站点,通过JavaScript和DHTML来加强页面的交互能力,CSS 2.0的绝大部分支持和filter(滤镜)提供更加丰富的图形表现界面。
2. 构建企业平台级的应用系统,通过JavaScript实现高交互,而XML的内置支持为其提供了数据交换的方便性。
3. 通过VML或SVG或ActiveX 插件技术构建基于浏览器的游戏软件。
4. 通过内置的HTML+TIME(Timed Interactive Multimedia Extensions)建立高度交互的多媒体应用程序。
5. 在丰富的界面表示层的支持下逐渐形成Rich Client的演化,使用XML,HTML,DHTML,JavaScript,CSS等等各个相关的知识开始出现大量客户端承载部分逻辑的应用。比如CSDN站点的论坛实现技术,就大量采用了XML和XSLT技术,将界面表示的负载尽可能的迁移到客户端,这样为B/S架构应用高度交互和高负载提供了可能。
IE5提出到6.0成熟的HTC技术,为广大的开发人员提供基于构件实现的可能,于是在网络上一些应用的HTC层出不穷,组件式Web开发的经典之作可以在 http://www.stedy.com 找到你在Window开发方面的踪影,而基于JavaScript OOP编程的做平应该是前段日子网络讨论的Bindows,这是一个完整的Web UI的SDK,类似于Java SDK中的swing,有时间去看看他们的代码,确实深感巧夺天工,大家可以在http://www.bindows.net/ 和作者Erik交流Bindows相关的内容。下图是Bindows程序界面,如果没有接触过,很难想象在浏览器上能够完成如此的开发。
另外一个等待
2001年到今天的这段岁月,对于Web开发人员而言是一种不幸,因为竞争所以进步,失去了Netscape的挑战,2年多来浏览器技术没有根本性的变化,IE的开发计划似乎早被束之高阁,唯一的就是推出了一个无关紧要的Service Pack 1。
因为绝对的统治,从6.0之后到现在似乎进入了一个苦闷的和平年代,“不在沉默中爆发,就在沉默中死亡”,针对于浏览器的开发工作没有停止,而且渐渐形成一些实用的代码库,不过我们依然在等待,依然在彷徨,总是担心在浏览器上面太多的开发会因为新版本浏览器的推出变的没有任何意义。
当我听到Longhorn远处传来的声音,突然之间有点不知所措,那个Avalon,那个XAML,在长久的和平以后带给我们的将是什么呢?也许失望,也许震撼,也许无动于衷……
我的朋友,不知道你是否喝完了咖啡,那么就小憩一会儿吧,静静地等待明天要发生的故事,剧本已经有人去写,只是不知道演出的时候是否会改变,希望这个世界还有东西值得你期待。忘记过去的硝烟和苦闷,这个世界与你同在。
附录:Netscape和IE版本更新过程
IE
1995年7月,IE1.0版本发布
1996年3月22日,IE2.x发布
1996年8月1日,IE3.x发布
1997年9月22日,IE4.x发布,同时开始和我们通常提到的Window97进行捆绑,通过免费的形式发送给用户,正是这一策略,使IE在浏览器的市场份额迅速增长,并且渐渐的超过了当时的龙头老大Netscape
1998年9月18日,IE5.0正式发布。这是一个设计非常成功的版本,通过和Window Second Edition的捆绑,因为和操作系统的无缝结合,奠定了后来IE一统天下的基础。整个浏览器提出了许多相当有建设性的技术,比如HTC,HTA,XML,VML等等,也就是因为这些技术使的后来的Web开发大放异彩
2000年12月31日,IE5.5正式发布。这是一个过度时期的产品,在上个版本的架构上没有根本性的变化,但是加入了比如Print Templates,自定义标签,二进制行为(Binary Behavior)等等比较有意思的技术。
2001年12月31日,时隔一年,IE6.0正式发布,在5.0和5.5提出的一些想法上进行了晚上,使得更加稳定易用。浏览器大战尘埃落定,此时的IE浏览器已经成为事实意义的浏览器标准。
2002年8月30日,IE6.0 Service Pack1也就是我们通常说的IE6.1发布,这个是微软公司迄今为止发布的最后一个版本浏览器
Netscape
1993年5月,Netscape的前身Mosaic出现
1994年10月,Netscape0.9发布,这个时候仅仅支持少量的HTML
1995年4月,Netscape1.1发布
1995年7月,Netscape1.2发布,此时超过80%的Internet用户使用Netscape,Netscpe成就短暂的辉煌
1996年3月,Netscape2.0发布,提出了很多建设性的技术,比如JavaScript,Java Applet,Frame等等
1996年8月,Netscape3.0发布
1997年2月,Netscape4.0发布,首次加入了CSS(样式单)的支持
1998年1月,迫于微软的节节逼近,Netscape浏览器提供免费下载,并且成为一个开源软件,http://www.mozilla.org 同时成立
1998年3月31日,Netscape第一次提供代码下载
1998年10月19日,Netscate 4.5正式发布
1998年11月,Netscape 5.0的开发计划取消,我们似乎在那个时候已经看见了结局
2000年11月,基于Mozilla0.6内核的Netscape 6.0发布
2002年5月22日,Netscape7.0预览版发布,不过此时大势已去,无法改变注定被埋藏的命运,一切早早尘埃落定。