文/深圳分公司 燕双龙
软件领域将向何处发展?
这个问题可能是所有IT人都在想的问题,谁掌握了这个问题的要点,谁能先知先觉,那么就能引领这个行业。但是很多情况下,我们无法预测未来,只能在埋头苦干的过程中迷失方向。
最常见的预测未来的方式,就是分析历史,以史为鉴,以史为尺来度量可能的未来。
软件领域也有一段不长也不短的历史。说她不长,是因为只有了了的几十年,说他不短,是因为在这短短的几十年,却似乎经理了漫长的几个世纪一样,曲折离奇、英雄辈出。所以有很多很好的看点供我们研究,供我们学习。也能够为我们提供分析未来的依据。
软件行业从整体来说,可分为三个大的朝代。第一个朝代是上世纪四十年代到七十年代,这个年代是软件的孕育期,多数时候软件不能单独成为体系,只是作为硬件的附属物。第二个朝代是上世纪七十年代末到九十年代末,这个朝代,软件翻身做了主人,能够“脱离”硬件独成体系。第三个朝代就是二十一世纪初到如今,这个时期硬件、软件已逐渐与网络不可分离,成为了网络的附属物,整个时代也变成了网络时代。
我们的这次旅行,主要是为了找到软件及网络的发展,所以不考虑远古的硬件时代,只从第二个时代开始分析。看看能否找到通向未来的康庄大道。
盘古开天
上个世纪80年代,微软带着让所有个人用户拥有一台个人电脑并且这些电脑上都安装了微软的操作系统的梦想,发明了DOS和Windows,因此微软也从一个小公司一跃成为了美国领先的软件公司。这是一个神话,从来没有人认为一段0和1组成的代码,竟然能够成就一个财富的奇迹。
90年代,随着Windows3.X的发布,个人计算机开始进入图形化的时代。人机的交互更加友好,使微软更上一层楼,成为全球领先的软件公司。
随之整个计算机界展开了一段新的历史,微软的作用不可磨灭。这段将利用代码来盈利的历史,可比喻为个人软件时代的“盘古开天”。
炎黄之战
但是巨人在开天辟地之后,或许被突如其来的荣誉冲击了一下,有些打盹。在不知不觉中,还没有完全走向个人化的电脑时代,又被一个新的朝代——网络时代冲击了。
94年出现了第一款浏览器软件——Netscape。全新的计算机操作,拉近了人与人之间的关系,让更多的信息可以快速传递。于是这个浏览器开始了风光的历程。
而微软由于Windows 95等版本的问题,未及时发现这个小小的浏览器会有多大的市场(就像是当年IBM多么不看重微软小小的DOS一样),会给软件带来多大的冲击。因此并未在意Netscape的发展。
可是,网络的发展是不以微软的意志为转移的,爆炸式的用户增长,使Netscape迅速成为众人的焦点,占据了几乎全部的浏览器市场。任何一个产品,不管他是否真的赚钱,只要他拥有大量的用户,那么就拥有了真正的财富。
此时的微软才发现,可能他错了。于是开始研发自己的浏览器——Internet Explorer。由于仓促上线,最初版本的IE漏洞百出,操作不灵活,无法与Netscape竞争。后来微软加大投入,并在很短的时间内推出了IE2.0、3.0、4.0等版本,这些版本作了大量的改动,并在97年将IE与Windows95捆绑起来,借着Windows的市场迅速让IE占据了浏览器主动权。
因此引发的很多垄断及法律问题在这里不进行讨论,我们重点关注浏览器的发展。
此后因为这个捆绑举动,使得Netscape每况愈下,并逐步的退出了历史舞台。这就是第一次浏览器战争,最终是以微软的胜利而告终。
这段战争,预示着网络时代黎明前的黑暗,好比是华夏文明起源之时炎帝和黄帝之间的争斗,奠定了后来文明的诞生。毫无疑问,微软和Netscape的争斗,对于网络时代来说也有如此的功效。
战国纷争
那么这场一个浏览器的争斗与软件发展有什么关系呢?
别急,这个需要慢慢来讲。
在微软为浏览器大战的同时,另一个网络时代的诸侯Sun在95年推出了Java,并借此开始逐渐显现出他对网络时代开发的影响力。软件开发方式开始出现B/S与C/S的纷争。并越来越向B/S方向靠拢。正是因为有了浏览器的这种形式,才出现了软件开发模式从C/S向B/S的转变。从实质上来说,这两种模式没有真正的区别,当C/S程序过度的集成化之后,将控件及各项功能都脚本化之后,其实就变成了B/S程序。只不过这个集成的过程交给了浏览器来完成,因此才无需安装客户端程序了。
而微软是靠着强大的操作系统(这是世界上最大的C/S系统)发家的,执着于C/S技术的微软不相信事态转变的会如此之快。一个小小的Java怎能对微软形成威胁?
所以在进行浏览器大战时,微软并未在开发模式上投入太多,去与Java抗衡。但是当他发现单纯占领浏览器市场也无法应对网络时代变化的时候,他做了又一个决定。
推出了另外一个重要的概念——.NET——他就是想通过该计划与Sun相抗争,并且想借此建立新的互联网秩序。
此时Sun的Java在开发领域形成了一道新的风景线——软件开发已经逐步变成了B/S模式,开发人员无需了解操作系统只需要知道脚本和Java语言体系就可以开发软件。这种软件开发方式是前所未有的,而此时微软还正在利用VB和VC等客户端技术开发软件,因此这也在挑战微软的权威。
.NET战略似乎是Java的翻版,也具有虚拟机,也具有与Java语法结构类似的C#语言。虽然这次是看起来模仿的举动,但是投入却是十分大的,因为Java是免费的,微软的这套新的模式也不能收费太高。而且对于开发模式的创新,是需要大量的投入,因此微软大量的人员又继而投入.NET战略。
可能是因为.NET忙于与Sun抗争,所以IE浏览器在6.0版本之后,很长时间内没有大的变动,整个微软的互联网时代进入了冰河时期。看来微软这个巨人,也不能多线同时作战,也是顾此失彼。
这个时期,是2001年到2006年底,IE接近6年没有推出新的版本,同时Windows也有差不多6年没有新版本。这种情况,预示着暴风雨就要来临。
软件产品不能持续的发布新版本,就代表他的生命力正在减弱。
微软没有发展,但是Sun没有停歇,Java继续保持强劲的势头,逐步统治了Web应用的市场。大量的Java Web应用涌现出来,几乎同时占据了所有主流网站的市场。
微软只有跟在Sun的后面,不断的更新.NET的版本,从1.0到2.0挣扎了接近5年的时间。
这边战火继续,那边烽烟又起,Netscape的阴魂不散,与他有千丝万缕关系的Mozilla基金会,在2003年Netscape解散不久,于2004年11月发布了一个叫Firefox的新浏览器。
她趁着微软在忙活着与Sun斗争的间隙,抓住了IE6.0的缺陷,迅速在浏览器市场崛起,占有率开始逐步攀升。
在浏览器市场和开发市场多重压力下,微软仓促推出了IE7和Vista操作系统来应对这种现状。但是为时已晚,随后的IE版本并没有挽回局面,操作系统操作不方便运行速度慢,浏览器也同时存在这个问题,导致IE的市场占有率还是在继续的下降。
在微软遭受多重压力的时候,Sun又与很多大鳄联手,继续领跑基础技术,微软的日子似乎越来越不好过。一波未平一波又起,在微软通过完善IE打算与Firefox争斗的同时,另外一个虎狼之师杀入了战斗。那就是谷歌,谷歌在搜索市场上,的成绩让他有了足够的能量,他们看准了未来的发展方向。提出了一个很惊人的概念,那就是“浏览器操作系统”,该操作系统是以浏览器为主题,除此之外别无他物。全部的应用都通过浏览器去服务器获取,将整个计算机概念小型化。这个概念无疑对微软是个打击,因为微软的主体业务是操作系统,如果谷歌的这个概念成立,那么将来将没有了操作系统的位置,那么微软将走向毁灭。
微软、Sun、IBM、谷歌以及后来义军崛起的开源软件,形成了诸侯纷争的局面。可见软件行业是一个看不见硝烟的战场,不发展,不改进,就会慢慢的被淘汰。直到现在为止,软件行业的战国时代也没结束,而且还呈现出越来越复杂的局面。
大家都在抢占软件行业的唯一一块地盘——互联网。而这块地盘中最容易看到的两块肉就是浏览器和Web应用,鹿死谁手难见分晓!
百家争鸣
从“盘古开天”到“战国纷争”,可以看到大家围绕的都是网络时代的两块大肉——浏览器和Web应用。
浏览器对于网络来说,就像操作系统对于计算机一样的重要,因此他是网络时代诸侯必须争夺的一块土地。
而浏览器只是个载体,他是展示技术的舞台,实际的网络技术才是决定将来发展的必然。
那么什么技术是浏览器的核心呢?首要的就是B/S与C/S的区别。
在软件发展的远古时代——上世纪五六十年代,软件结构都是客户端/服务器模式,也就是我们所说的C/S模式。因为那个时期软件规模很小,网络技术也不发达,所以大多数软件只要在本地执行,与远程服务器做简单的数据交互就可以了。
随着软件的不断发展,大型的系统越来越常见,这种C/S模式逐步暴露出了很多弊端,如安装复杂程度太高、软件更新复杂、维护部方便等等。随着时间的推移,这种问题和矛盾愈演愈烈。从浏览器的诞生到Java的诞生,改变了这种开发模式,逐步形成了新的模式——B/S模式——浏览器/服务器模式。通过这种形式,将软件的主体数据和业务规则都放到服务器上,然后通过一个统一的协议,下发给客户端的浏览器。客户端上只需要安装浏览器而不再需要安装其他东西,就可以运行一些程序。
这是Netscape带给我们的,我们永远都会记住他。
这次的变革,使得软件行业的发展走向了另外一个开端。
也就是因为这种技术与微软的操作系统有着本质的不同,所以微软在初期才没有太在乎她,因而落后于她。
第一次浏览器大战结束后,在微软的冰河时期,Sun、Adobe和各种软件组织逐步发展出了各种基于B/S的新技术。比如Ajax、Flash、JavaFX。他们都是抓住了B/S的技术特点,创造出的新概念。旨在提高浏览器的速度、用户的交互性以及提高娱乐性等,尽可能的达到在浏览器中的操作无限的接近C/S操作,因为C/S程序在某些领域还是优越于B/S程序的,比如用户交互性、媒体展示等。
这些层出不穷的次生技术,堪称软件行业的百家。他们各有优点,各有特长。
Ajax,是想解决B/S中客户端与服务器的交互模式,让用户感觉操作更加流畅,看起来像是在操作本地的一个软件。
Flash,专注于媒体,将动画与编程有效的结合起来,逐步占领了B/S应用的一个独特领域。现在流行的各种不需要安装既可以在浏览器上运行的网络游戏,也都出自Flash之手。
JavaFX,则关注协议,想通过更加优化的协议,将各项技术统一起来。实现更复杂的Java系统。
除此之外,还有很多不同的技术都在各个层面上占据地位,如HTML、脚本语言等。
而这些技术,微软都没有参与,不知道他们是被什么冲昏了头脑。
这种百家争鸣的态势,使得互联网从泡沫中走出来,迅速成为当今社会的主流。结合着浏览器,他们更加如鱼得水。
浏览器就好比是春秋战国的诸侯,而各种技术就好比是这个时期出现的百家争鸣。一旦某个诸侯利用好了某个大家的思想,他就将统治这个时代。
微软意识到了这一点,千呼万唤中,他创造了他的诸侯和大家。Vista和.NET3.0。
天下归一?
Vista和.NET3.0的最初思想是非常好的,他是想利用托管技术,将整个操作系统都架构在.NET3.0之上,让整个操作系统都与互联网打成一片。
很不幸,Vista和.NET3.0并就像是商鞅变法一样,虽然看起来很美,却没有长时间的给微软带来利益,反而处处被骂。其原因就是,这个想法太庞大了,需要更长的时间来开发,也需要更长的时间来培养用户。
2000多年前,虽然商鞅变法中商鞅的下场不是太好,但是他的影响极其大,最终他的这种思想使得秦国统一了六国,那就是法家的思想。
那么微软这次Vista和.NET3.0升级是否存在这种思想呢?
在我看来,确实存在这种东西,还是不能小瞧微软的。在这次升级中,微软大胆引入了几个非常重要的概念,WPF、WCF、WF,他们关注了从界面层到通讯层再到管理层等方面,构成了新形势的操作系统架构。
虽然Vista版本下,没有太多作为,但是随后微软推出的.NET3.5和.NET4.0,以及相应的Windows7和将来会发布的Windows8,都将真正形成竞争力。当前的Windows7就已经出显出他的才华。
说到这里,看起来前后各不相同,他们有什么关系吗?从软件发展史,到浏览器大战,再到技术的百家争鸣,现在又说道了操作系统和.NET。他们有联系吗?
任何历史的发展,都是这样的,不到事情最终结果出来,大家是很难知道现在的事情与以前的事情有什么关联。
微软想借此拯救他的未来,而其他人呢?他们也正在同样的创造新概念来拯救自己。比如IBM、比如谷歌。
救世主诞生
拿什么来拯救?
创新!
如何创新?
方便用户!
如何方便用户?
不需要安装、不需要学习只需要网络。
谷歌在最初推出他的浏览器时,其实就是为了架构一个平台,一个网络操作系统应用平台。这是他的救命稻草,也是他的杀手锏。
如何做?
先让浏览器占领市场,不惜任何代价的开发高可用性的浏览器。这一点今天来看几乎做到,他的Chrome浏览器,是我最喜欢的,速度最快(只不过对于网上银行支持的不太好)。亏本的买卖谁做?谷歌就在做,这个浏览器不需要钱来购买,他只需要占领这个市场,有了客户何愁没有钱?
然后,在这个浏览器能够达到要求时,推出平板电脑(iPad之类的只包含浏览器的电脑),平板电脑、手机都可以集成他的应用,这样大量的硬件就带来了源源不断的收入。不过这一点似乎被苹果先入为主,他的iPod,iPhone,iPad,iMac在这种模式下大赚了一笔。
微软只能望着这个市场而叹息!
在这种新型的方式之下,国内也在跃跃欲试。同样是拥有大量用户的QQ和360,相继推出了自己的Web应用平台,QQ推出的是WebQQ和桌面版。只要打开IE访问WebQQ,就可以看到一个类似操作系统的网页。里面格式的网络应用都有,似乎不需要Windows就能达到Windows的功能了。而且其中所有的应用也都来自于他的合作商,利用他的协议方式,开发基于他的平台的应用。
同时,360也有这么一套,而且界面样式看起来跟腾讯的WebQQ相仿,大量的服务和应用集成在其中。
这种方式在十年前可能无法深入人心,但是现在和将来,随着人们的习惯改变,会深入人心。等到将来的某一天,或许我们根本不知道还有微软的Windows这么个东西了。
从单机版的Dos,到Windows,再到Linux,再到浏览器,软件一路发展到现在,已经改变了我们的生活方式。通过对这段历史的分析,我们看到,将来的软件可能不可拜托浏览器,也不可拜托Web应用模式。软件将完全免费,而收费的是在某个平台之下,大量实用的应用(在Windows体系下叫做程序、软件)。各大厂商,在火拼之后,将形成几个重要的平台,如百度平台、谷歌平台、WebQQ平台、360应用平台,他们也都有自主开发的网页浏览器程序。他们厮杀之后,剩下的王者,或许会占领平板电脑市场、手机市场。
软件的发展也将不再是什么C/S还是B/S,客户端或者非客户端。而是基于某个平台下的应用,只需要有浏览器,就能完成所有电脑需要做的事情。