争论:Ajax技术是否即将没落?

cleverpig 发表于 2006-11-28 15:37:53
作者:cleverpig     来源:Matrix
评论数:38 点击数:3,156     投票总得分:23 投票总人次:5
关键字:ajax,技术,未来,expression

摘要:

在孟岩老师11月21日的blog中说他惊艳于微软公司新近推出的界面开发工具Expression,并且预言基于Web标准(通常即XHTML+CSS+JavaScript)的界面开发技术很快就会没落...对于这个预测,我和一些朋友认为孟岩老师过于乐观了。我预测至少到2010年,基于Web标准的界面开发技术仍然将是Web界面开发的主流技术,而这些技 术的集大成者就是Ajax。Ajax技术在最近两年中取得了很大的发展,并且仍然在迅速发展的过程中,现在就断言Ajax技术即将没落还为时尚早。

争论:Ajax技术是否即将没落?

作者:Dlee@ajaxcn

转发者:cleverpig

 

孟岩老师1121日的blog中说他惊艳于微软公司新近推出的界面开发工具Expression,并且预言基于Web标准(通常即XHTML+CSS+JavaScript)的界面开发技术很快就会没落。孟岩预测:最迟不超过2008年,在WPFFlashApollo)等RIA技术的夹攻之下,越来越多的Web应用将同时部署传统Web页面和新的RIA UI

 

对于这个预测,我和一些朋友认为孟岩老师过于乐观了。我预测至少到2010年,基于Web标准的界面开发技术仍然将是Web界面开发的主流技术,而这些技 术的集大成者就是AjaxAjax技术在最近两年中取得了很大的发展,并且仍然在迅速发展的过程中,现在就断言Ajax技术即将没落还为时尚早。

 

诚然,从纯技术的角度来看,我们也早就认为XUL/XAML一类使用XML来描述界面组件和布局的技术肯定是Web界面开发技术的发展趋势。W3C今年成 立了一个工作组,希望将XULXAMLMXML等几种界面描述语言统一为一种标准的格式(http://www.w3.org/2006/appformats/)。所以我们认为孟岩老师所看到的趋势是没有大问题的。从纯技术的角度来看,将来的Web 面开发肯定会发展到这种技术。

 

然而,能看到趋势当然很重要,但是我们还是需要解决很多现实的问题。我在这里提出几个问题来与大家探讨。

 

第一个问题是:这种趋势将会以多快的速度成为现实?

技术的发展和演进往往都是一个长期的过程。面向对象开发取代面向过程开发、Java取代C++Ruby逐渐取代Java都是一个长期的过程。孟岩老师所预测的2年和我所预测的4年似乎相差不大,但是对于我们现阶段所要采取的行动其实影响很大。

 

即使正如孟岩老师所预言的,这确实是技术发展的趋势又能怎样?我们是否一定要在今天为明天和后天发生的事情而买单。过早为将来发生的事情买单,很可能会代 价高昂。这跟炒股差不多,有经验的玩家会在最适当的时机入手。过早入手、过晚入手,都会蒙受损失。在这种趋势成为现实之前,我们是否坐等共产主义的实现? 我认为等待并不是一种积极的态度。

第二个问题是:Ajax有何优点?

我认为孟岩老师并没有充分地看到Ajax的优点。孟岩说:昨天我还在说Ajax是过渡技术,没想到几个小时之后就得到印证。 其实严格说来,任何的技术都可以称为是过渡技术,但是这并不会妨碍使用这种技术来为用户创造价值。孟岩只看到了使用基于Web标准的界面开发技术开发效率低下的一面。但是目前国内做界面开发的开发者有多少人真正理解了Web标准呢?根据笔者的经验,采用完全的CSS布局,将页面的结构、表现、行为三部分分离开,注重页面各部分的重用。经过一段时间的积累之后,基于Web标准的界面开发完全可以达到比较理想的开发效率。而配合使用Dojo ScriptaculousYUI等成熟的Ajax组件库,还可以更进一步提高界面的开发效率。

 

在笔者看来,影响开发效率的问题主要有两个方面:

1Web界面开发者没有充分理解Web标准。

2Web界面开发者没有尝试过组件化的开发方式。

 

相对于其他技术而言,Ajax最大的优点有这三点:

1 Ajax是完全基于Web标准的技术,Ajax所用到的所有的技术都是真正的Web标准。

2Ajax应用可以毫无障碍地部署到几乎所有的桌面电脑上。

3Ajax应用的开发和部署成本很低。

 

对于第一个优点,有人可能会争论说,标准其实并不重要。例如EJB 2.x是标准又如何,现在不是也一样被抛弃了吗?但是这两种标准是不可相提并论的。EJB的标准在推出之时,完全没有经过开发实践的检验,与开发实践严重 脱节。然而Web标准却是从开发实践中积累而来的。Ajax所基于的这些Web标准都是先有了非常成熟的应用和成功的商业案例之后才会形成标准。Web 准之所以成为了今天这个样子,是经得起历史考验的。如同TCP/IP标准一样,它仍然会长期沿用下去。

-1 浏览器大战

 

第二个优点其实是第一个优点所派生的。上世纪90年代末,在Web标准组织和W3C的不懈努力下,结束了浏览器大战,各种浏览器都承诺支持真正的Web 准。今天这种支持到了开花结果的时候,结出的果实就是诞生了一种称作Ajax的新技术。正是因为今天所有主流的浏览器都已经能够很好地支持Web标准(通常即XHTML+CSS+JavaScript),而几乎所有桌面电脑上都安装了某种主流的浏览器(IEFirefox/MozillaOpera Safarietc.),因此Ajax应用可以无痛地部署到几乎所有的桌面电脑上。尽管今天不同的浏览器对于Web标准某些部分的理解还略有歧义,实现上略有差异。但是只要基于成熟的组件库来做开发,这些差异可以被最小化,已经不会成为开发的障碍。

 

如果我在这两三年内想建立一个电子商务网站,却只能部署到几百万个安装了XAML render引擎的用户机器上(而不是像Ajax那样几乎所有的桌面电脑)。除非我的脑子坏掉了,我不会做出这样的选择。对于面向互联网的应用而言,基于 真正Web标准来做开发,并且随着Web标准及其浏览器实现的发展而演进,是实现最大商业利益的必然选择。

 

Ajax应用可以被部署到几乎所有桌面电脑上这个事实是其他所有技术多年来梦寐以求而不可达的理想国度。另外一种现实的选择是Flash UIFlash的部署范围也已经达到了足以大规模应用的程度。出于现实的商业考虑,我在几年之内都不会选择基于XAML建造我们的应用,除非它的部署范围达到了某个临界值,并且有朝一日成为真正的Web标准。

 

第三个优点是因为,开发Ajax应用所需要的工具几乎全部都是开源软件(详细的ajax开源软件列表),可以免费获得,因此不必花钱去购买昂贵的开发工具。其实开发简单的Ajax应用,一个主流的浏览器,再加上一个文本编辑器就已经足够了。只要你所开发的代码质量足够高,Ajax应用的部署可以达到完全的零成本。

 

第三个问题是:基于浏览器和Web标准的开发技术是否一定会没落?

和孟岩老师的一个主要的分歧在于,我并不认为基于浏览器和Web标准的开发技术一定会没落。

 

其实早在3年之前,当我尝试基于 XMLHttpRequest来设计我们的架构和开发我们的应用时,当时已经有很多人预言基于HTML(或者XHTML+JavaScript的开发方式必然会很快没落,并且对于我对JavaScript如此热衷很不理解。

-2 微软是后web2.0时代的缔造者?

 

但是几年过去了,这种开发技术非但没有没落,反而焕发出了勃勃的生机。这是在其没落或灭亡之前的回光返照吗?至少在我看来并不是这样,而是有其内在的规律。正是因为上面我所说到的这种开发技术的优点,今天几乎所有的Web用户都在使用这种技术。有庞大用户量、广泛使用的技术必然会不断发展,而不可能很快没落。其实XAML最终是否会取代Ajax,这并不是一个处于纯技术的考虑,而是涉及到整个 Web应用生态系统的迁移。今天90%以上(我的保守估计)的Web应用都建立在基于Web标准的界面开发技术之上,轻言这种技术在两年之内必然会没落是不严肃的。单靠微软等几个大公司想要扭转这种长期以来自然形成的状况,谈何容易?我认为不大可能。

 

所以在我看来,这种开发技术仍然会不断地发展和进步,自然地演化到一些新的Web标准(例如XHTML 2.0CSS 3.0JavaScript 2.0)。它的生命力会历久弥新,我敢与任何人打这个赌,至少到2010年,这种技术仍然将会是Web开发技术的主流。当然,到了那个时候,XAML也可能会发展为Web开发技术的主流,因此会出现一种百花齐放的状况。这并不是一场零和的游戏,只会出现一个赢家,其他人都会输,赢家通吃的情况我认为并不会出 现。

 

第四个问题是:是否深入学习Ajax就无法得到这一代Web技术和体系的理解

 

孟岩老师说:我们今天所说的Web开发高手,有多少是把自己的身家性命押宝在对这一代Web技术和体系的理解上?

 

这句话有很大的误导性,似乎深入学习Ajax就无法得到这一代Web技术和体系的理解。至少根据我的个人经验,深入学习Ajax可以帮助我们更好的获得这一代Web技术和体系的理解。我今年组织翻译了Ajax in ActionAjax Practices and Best Practices,还将要从台湾引进Ajax Design Patterns。这几本书使得我对于国外的Web开发高手的水平叹服不已,并且很大地加深了我对于这一代Web技术和体系的理解

 

孟岩老师还说:且不说他们日常工作中大多数时间花在了界面开发之上,就算是很多人引以为傲的所谓‘大负载量Web站点架构’也将随着RIA的兴起而发生一场巨大变革。大量页面状态将前移到客户端,Web服务端将以全新的观点重新组织资源,逐渐变成真正意义上的Web Services集合。旧的知识和经验迅速贬值,新的机会快速涌现,有的人沉下去,有的人飘起来,历史又要重来一遍了

 

我可以肯定孟岩老师并没有深入研究过Ajax应用的架构,因此才会误以为大量页面状态将前移到客户端,Web服务端将以全新的观点重新组织资源,逐渐变 成真正意义上的Web Services集合。,这与Ajax是完全矛盾的。与孟岩老师这种大开大合的革命性预测不同,我认为技术从来都不是以这种方式进步的。技术进步是一个自然的缓慢演化过程,面向对象逐渐取代面向过程、Java逐渐取代C++Ruby逐渐取代Java,都有很大的传承关系在里面。将某种技术描述为横空出世的天生石猴孙悟空,我认为是不严肃的,也是没有做深入研究的体现。我并不认为以前在传统Web开发技术方面所积累的知识就会很快贬值。只要自己与时俱进,不断补充新的营养,大负载Web站点架构的经验永远都是很宝贵的实践经验。

 

Ajax技术,正是目前绝大多数传统的Web开发团队向RIA时代迁移的最自然的选择路径。

 

第五个问题是:程序员做界面开发是否是不可能的?这是否就是Web应用开发效率的瓶颈所在?

 

孟岩老师说:因为今天Web开发中,设计人员基本只是解决页面布局与图片效果的设计,而大量动态界面效果还需要开发者来完成。Expression + Visual Studio的模型则将‘与用户交互的界面部分’与‘后台业务逻辑’完全分开。设计人员凭借类似Flash的方式,就可以开发出类似视频游戏那样的用户界面。

 

我是做Java开发的,如果我作为技术负责人,我的团队中将会有这些分工:

1. 业务逻辑开发人员,使用JavaSpring等框架做开发。

2. 界面逻辑开发人员,负责View的开发,精通FreeMarkerXHTMLCSSJavaScript等技术。

3.  美工,负责制作图片,对于页面的样式和配色提供指导,用Photoshop设计出页面样式,交给界面逻辑开发人员来制作。

 

由界面逻辑开发人员来制作页面,制作的页面必须达到我的要求。例如,完全基于CSS的布局,在各种主流浏览器上都要正常显示等等。

 

在我这里,业务逻辑开发人员和界面逻辑开发人员并不存在谁高谁低之分,薪水也是基本相同的水平。而孟岩认为在基于Web标准的开发过程中,程序员不应该做页面,这个看法是错误的。

-3 XCS三个火枪手

 

程序员是否做页面也并不是开发效率的瓶颈。如果某个程序员精通了上述这些技术,他完全可以迅速开发出美观的页面。特别是在注重页面中 XHTML/CSS/JavaScript各部分的重用的情况下,积累到一年之后,要开发的很多东西都是相似的。孟岩老师认为完全的分工可以达到最大的开发效率,这是一种幻想。为什么Web开发从 J2EE 非常清晰的分层又变成了在RoR中不是很清晰的分层?软件开发并不是流水线式生产。分工应该适当,分工太细,不同层次之间沟通的成本就会迅速上升。这又回到了《人月神话》中的命题:主要的成本在于沟通的成本。依靠细致的分工降低对开发人员素质的要求,实现流水线式生产,创造大批软件蓝领,这本身就是一个幻想。

 

Ruby解决问题的思路与此是不同的,Ruby的思路是提高抽象的层次,使得一个开发人员有能力承担更多功能的开发。

 

相关资源

孟岩的这一天终于来了

Ajaxcn.org站长Dlee的回击:《争论:Ajax技术是否即将没落?》

微软Expression产品页

 

感谢阅读此文

请支持cleverpig发起的 Matrix IAC计划

 


本页页面地址:

投票评分(记入本贴作者的专家分)

     非常好 还行 一般 扔鸡蛋          投票总得分: / 投票总人次:

用户评论列表

#1 评论作者: zhou7707 发表时间: 2006-11-28 06:24 下午

说的好,支持lz,什么孟岩老师,就快和王深一样只会吹牛了

#2 评论作者: David_w_johnson 发表时间: 2006-11-29 08:55 上午

有同感,老师也没方向了。

#3 评论作者: piaoling 发表时间: 2006-11-29 09:02 上午

技术的更新是必然的趋势,总不能因为地球有一天会消亡,我们就坐着等死。我感觉分析的很好。而且任何一种技术的兴起,总会有它的可取和学习之处,技术为生活服务,而不能将生活被技术所捆绑。

#4 评论作者: Jimshenjian 发表时间: 2006-11-29 09:22 上午

希望能够更多的介绍这些前沿知识的讨论

#5 评论作者: xqstation 发表时间: 2006-11-29 09:48 上午

如果孟老师现在去买手机,可能他的想法会有所转变. 他会发现盒子后面写着一行特别的标注: 支持XHTML
XHTML并不是支持所有桌面应用.
而是所有设备...所有设备...
站在冰箱前看超市今天的食品报价...
如果说XHTML没落,先问问做冰箱,洗衣机,手机的厂商吧.

#6 评论作者: tvb 发表时间: 2006-11-29 09:49 上午

很认同孟岩的观点,至于楼主的观点,觉得比较不成熟。

#7 评论作者: refactor 发表时间: 2006-11-29 10:13 上午

to tvb:
我觉得正好想法,楼主的观点更稳重成熟

#8 评论作者: fellix 发表时间: 2006-11-29 10:55 上午

个人也比较认同RIA和传统Web共存的观点
--在看了Flex和OpenLazlo以及portal server提供的特性之后
在分工上,比较赞同三层的,但是我觉得页面逻辑层可能需要精通jsf,gwt,可能还有portlet;至于三剑客,我觉得应该是美工比较拿手的东西
ajax我也觉得不会消亡,他和JEE要解决对主要问题不同,我们当然会同时在jsf页面上同时用到ajax
本人只是看了后有点晕,整理了一下自己的思路,仅个人观点

#9 评论作者: houor 发表时间: 2006-11-29 01:02 下午

技术仅仅是技术
只有大家使用,转化为市场动力的技术才能主导市场
任何技术都有优点和缺点,适合自己的才是最好的

#10 评论作者: sytemper 发表时间: 2006-11-29 01:13 下午

观望
不是我不明白,是这个世界变化太快。
现在需要关注的就是微软怎么推广Expression

#11 评论作者: crow0516 发表时间: 2006-11-29 04:07 下午

很赞同搂主的观点
先进的技术并不一定就是有市场的技术
就如同一个公司的系统,升级换代都是需要一个过程的,而且升级时间不短!
更不要说技术的更新换代了~

#12 评论作者: Jekey 发表时间: 2006-11-29 09:50 下午

还有待考验呢,犯得着这么激动吗?在CSDN已经被N多人BS了阿。

#13 评论作者: littlebat 发表时间: 2006-11-29 10:03 下午

孟岩老师是教书的老师吗?
Dlee@ajaxcn是搞开发的吗?
如果是的话,他们一个偏于理想、理论,一个偏于实际、实践就不奇怪了。
上面的内容都不懂,也许上面两人对立的看法综合一下说不一定是正解?:)

ps: 广告:JAVA学习日记,分享目标,分享快乐。

#14 评论作者: makeit 发表时间: 2006-11-30 08:35 上午

老師必竟不是開發者。

#15 评论作者: cleverpig 发表时间: 2006-11-30 09:10 上午

本人是赞同dlee的观点的,技术的更跌不但需要大厂商的推波助澜,而且需要其生根发芽的氛围。单一的偏袒哪一方面都不是客观的。微软等的厂商所推出的产品也并不是样样成为技术流行领航人,尤其是在web交互这一块,其产品有些跟风之嫌。
回头开一下web2.0会议,微软很少抛头露面,像是与web2.0界限分明的有意疏远。而这进一步体现了微软文化中的封闭、保守。而推崇Expression的孟老师又能如何仅在一堂product show中预言ajax的前途呢?

#16 评论作者: tim_jing 发表时间: 2006-11-30 09:49 上午

塌塌实实 一切源于跟本 哈哈

#17 评论作者: tvb 发表时间: 2006-11-30 10:35 上午

我现在待的公司,是个纯粹的web服务公司,技术上没有任何先进之处,
啥ajax, ruby, 甚至连ejb都没有,系统架构烂得,却照样赚钱;
而之前的公司,啥spring, hibernate, ajax 都上过,甚至 ruby 都想上,技术队伍非常强,却白辛苦。
现在的公司,最看重的是用户体验,其次是开发维护成本,已经叫嚣说web开发维护只需要高中学历,搞得作为架构师的我非常心寒。
如果抛开我作为技术人员的身份,用现在的公司老板的眼光来看,就会发现和孟岩一样的论调:
1、Web界面越花俏越好,同时开发维护要容易。
2、‘用户交互的界面部分’与‘后台业务逻辑’完全分开,程序员不参与web开发维护部署。因为programmer的成本要高于web工程师。
3、基于web services (ajax是轻量级的webservices),具体技术不重要。
4、因为全部都是外包的,所以ror更是要不得,因为看不懂 :-)
5、盈利来源于用户体验,而不是所谓的高技术。

#18 评论作者: damoo 发表时间: 2006-12-01 08:26 上午

"盈利来源于用户体验,而不是所谓的高技术"。
说的8错。

#19 评论作者: 王不留行 发表时间: 2006-12-01 11:56 上午

作为 forntpage 停止开发后的替代产品, Expression web 在 bata2 停止开发后,成为 office12 的一部分,是为 Microsoft Office SharePoint Designer 2007.

#20 评论作者: 112012292 发表时间: 2006-12-04 08:18 下午

ajax不会那么快就没落的!

#21 评论作者: refactor 发表时间: 2006-12-05 11:54 上午

tvb之前的公司的失败不说明什么,典型的逻辑错误:你不能拿一个单例来证明你的观点

#22 评论作者: Daric 发表时间: 2006-12-06 03:30 下午

那个孟岩是谁?
我想孟岩应该没有比尔牛吧,比牛当年也只是说了一句“PC只需要640K内存”而已。

#23 评论作者: shugengen 发表时间: 2006-12-08 05:03 下午

呵呵,正打算学习ajax呢

#24 评论作者: micro1984 发表时间: 2006-12-11 11:06 上午

比较赞同cleverpig的观点,孟岩也算是前辈了,也看过他写的一些文章和对一些技术的讨论,反正不管什么技术还是得看什么人去用还有怎么用吧

#25 评论作者: liusiyun 发表时间: 2006-12-12 01:19 下午

技术的兴起事由市场所决定的,但问题是,在这个商业环境下,还必须由推广者来宣扬,所以兴起=宣传+推广+技术的本身是否适应市场的变化

#26 评论作者: troyz 发表时间: 2006-12-12 01:45 下午

微软是资本实体,所以钱是第一。垄断是长久占领市场最好手段,所以垄断是微软的本质。这很多人都知道,但是很多人都用它的东西。因为对于开发者或者用户来说可以省去很多麻烦。国外的盗版抓的比较严,所以开源的东西得到了长足的发展。中国比较特殊,对于微软是最大的市场和最大的盗版者。我觉得微软的动向其实就是如何占领市场的动向。所以我觉得站在我们自己的立场和微软它的立场两方面考虑下,就能得出我们是否应该用它的东西了,毕竟我们自己的长久利益最重要。听说vista在中国销售价格将是全球最低,呵呵!

#27 评论作者: bluetrees 发表时间: 2006-12-15 10:10 下午

等到微软在客户端集成了WPF你看还有没有人用Ajax!

等到Vista占领80%的桌面,你看还有没有人用Ajax!

1、技术发展趋势如此
2、微软在桌面有垄断地位

有了这两点我不知道搂主在说什么了。

如果能够用C#写浏览器客户端,我不知道我还有什么理由要用JavaScript?

#28 评论作者: bluetrees 发表时间: 2006-12-15 10:15 下午

ajax要没落很快的

只要微软不再提供浏览器对ActiveX的支持,Ajax就算完了。

我可以找出无数的冠冕堂皇的理由让IE不再支持ActiveX。这样,在IE上赖以存在的Ajax的灵魂XMLHttpRequest就没普了。

还可以有无数的冠冕堂皇的理由只让IE支持.net对象!

Ajax要死还不容易吗?

除非用户都用FireFox去,用户是很简单的,他说你的网站还不如那个XXXX的好,你就会感到压力了,你让用装非IE的浏览器?用户会说浏览器是什么东西?有没有病毒啊?

这就是现实。你接受也好不接受也好,现实就是这样,当其他网站都采用WPF的时候,你抱残守缺,只有死路一条。

#29 评论作者: cleverpig 发表时间: 2006-12-19 09:37 上午

to bluetrees同学:
>>等到微软在客户端集成了WPF你看还有没有人用Ajax!
>>等到Vista占领80%的桌面,你看还有没有人用Ajax!
>>1、技术发展趋势如此
>>2、微软在桌面有垄断地位
假设总归是假设,谁又能为未来买单呢?前面的两个“等到”是假设,所以对我来讲是视而不见。

技术发展趋势如此?当微软早些年宣称将推出Longhorn时,何尝没有人认为那是技术发展的趋势呢?技术发展的趋势是由市场决定的,而不是微软巨人。

微软在桌面有垄断地位?想想长尾理论,你就会明白,随着竞争日益激烈,微软等大厂商仅能占有少于20%的市场,而其它的80%的市场是由大量的中小软件厂商提供。尽管目前微软占有桌面的绝对优势,但请“相信未来技术发展趋势的同学”想想未来将会是什么样?

#30 评论作者: lbn1012 发表时间: 2006-12-19 02:07 下午

to bluetrees同学:
   如果你从开始就在象一口井一样的MS的集成环境里做开发的话,你确实人为MS就是最棒的,因为在井里面就只有它自己的东东嘛.
     也许只有等MS把他的东西搬上可能是你觉得丑陋不堪的UNIX的时候,我才会去瞧他一眼.

#31 评论作者: darren 发表时间: 2006-12-19 08:49 下午

真头晕,作为开发人员感觉很累的,做MS的心理不踏实,做Linux的吧,又没有客户

#32 评论作者: jslwn 发表时间: 2006-12-20 02:57 下午

什么孟岩,我看只不过是个哗众取宠的废物。胡说八道

#33 评论作者: jslwn 发表时间: 2006-12-20 02:57 下午

什么孟岩,我看只不过是个哗众取宠的废物。胡说八道

#34 评论作者: jslwn 发表时间: 2006-12-20 02:57 下午

什么孟岩,我看只不过是个哗众取宠的废物。胡说八道

#35 评论作者: jslwn 发表时间: 2006-12-20 03:02 下午

这种人什么事情都做不出来的,只会吐吐口水而已,如果AJAX没没落,孟岩你他妈全家死光,你懂吗?死狗!连GOOGLEMAP都是AJAX技术。孟岩,你为中国的程序员做点实在事情好么?

#36 评论作者: sgby 发表时间: 2006-12-30 04:28 下午

正在学习AJAX中,

#37 评论作者: 84zz 发表时间: 2007-02-01 11:45 上午

一种技术被另一种取代是必然的,但是这个过程有多长没人知道,也许是明天,也许还要很多年


发表我的评论 (评论可增加个人积分...)

用户*: E-mail:
评论内容*:

支持BBCode
算术题*: + =