服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 专题栏目 > WEB2.0新技术 > 查看文档

sun披上ajax的时尚外衣

  2006年是属于ajax的,sun也未能免俗,为自己赶制了几件ajax的时尚外衣。ajax的流行,让sun不惜放弃原则,加入ajax的阵营,并在ajax上投入重兵,推出了jmaki和phobos两个为ajax量身定做的开源项目,更通过dynamic faces项目将委以重任的jsf和ajax绑定在一起。sun决定着java的未来,不管ajax之举对java来说是福是祸,java都只能接受。

  2006年是属于ajax的,sun也未能免俗,为自己赶制了几件ajax的时尚外衣。ajax的流行,让sun不惜放弃原则,加入ajax的阵营,并在ajax上投入重兵,推出了jmaki和phobos两个为ajax量身定做的开源项目,更通过dynamic faces项目将委以重任的jsf和ajax绑定在一起。sun决定着java的未来,不管ajax之举对java来说是福是祸,java都只能接受。

  1. 2006年是属于ajax的,sun也未能免俗

  毫无疑问,刚刚过去的2006年,是属于ajax的,到处都在谈论ajax,谁都希望和ajax沾上一点边。ajax就像巴黎时装设计师手里的布料,经过一番裁剪缝合之后,变成了举世瞩目的流行趋势。那些完全不像衣服的时装,披在靓丽模特身上,在t台上随着模特夸张的猫步,接受全球目光的洗礼之后,堂而皇之地占据所有时尚杂志的封面。虽然可以肯定,来年流行的一定会是另一种颜色,另一种款式,不过,今年的风头已经被ajax占尽。

  ajax以令人瞠目结舌的速度,渗透到软件技术的方方面面,sun自然也未能免俗。不妨举jsf的例子来说明。作为一项新兴的、处于推广中的web框架技术,jsf要想在web框架领域里,博得一席之地,除了尽其所能地吸引程序员飘忽的目光以外,没有其他更好的办法。眼球对于初出茅庐者是至关重要的,因此,只要是有助于留住程序员鼠标的方法,jsf都会不吝一试。这解释了为什么风头正劲的ajax,会与急欲推销自己的jsf一拍即合。

  不管从哪个角度看,jsf都是一项优秀的web表示层框架技术,它的组件模型和事件驱动模式,取代了传统的请求和响应处理流程,在简化java web应用开发的道路上迈出了意义深刻的一步。jsf的成长历程充满坎坷,2001年通过jsr申请,到2004年才推出规范的第一个版本,那时已经是struts的天下,jsf错过了最好的发展时机。

  雪上加霜的是,sun在jsf的推广上缺乏得力措施,jsf命名又严重失策,未继续沿用延续jsp的名字,丧失了借用jsp雄厚用户基础快速发展的机会。再加上jsf虽然用法简单,但本身的技术原理比较复杂,sun的文档没有强调jsf的易用性,反而突出了jsf的深奥技术,让很多程序员失去了继续学习的耐心,与jsf失之交臂。所有这一切,都影响了jsf在程序员社区中的推广,使得jsf养在深闺无人知。

  2006年,来自内部的改革呼声和外部的竞争压力,促使sun作出了简化java开发的决策,java ee 5应运而生,而jsf因为能够大大简化java web开发,顺利地上升为java ee 5规范的强制部分。从这时开始,所有遵循java ee 5规范的应用服务器,必须支持jsf。sun终于在jsf的推广上落下了一剂重药。sun在jsf上押上了更多的赌注,jsf在某种程度上,成为sun与竞争对手周旋的筹码。

  ajax的窜红,sun当然留意到了,并且想到了jsf。sun认识到,将jsf和ajax联系在一起,是扩大jsf知名度的绝佳机会。这次的sun一改以往的官僚作风,动作迅速地加入了ajax的阵营。sun在jsf项目上的合作伙伴也不甘落后,纷纷高举ajax的大旗,将jsf与ajax的大车,牢牢地绑在一起。一时间,大小厂商尽皆忙于穿针引线,赶制ajax的时尚外衣,短短数月,jsf已经披上了厚厚的ajax时装。

  2. sun为ajax放弃自己的原则

  sun对ajax的态度,可以说是爱恨交加。以sun在java领域多年的技术老大的地位,sun对于技术的崇尚程度,可想而知。正如那句俗语所说,一流的厂商卖标准,sun向以规范称雄java世界,规范和产品的不同之处在于,产品是不公开的,缺陷只有厂家自己知道,而规范必须暴露于大庭广众之下,任何一点小的瑕疵,都会被人不客气地挑出来批评。所以,sun在技术上必须一丝不苟,不允许自己有半点含糊。用一个词来概括sun对待技术的态度,那就是:严谨规范。

  随便看看sun的任何一份规范,都能感受到sun的学究气质,甚至连遣词造句都循规蹈矩。该用should的地方,绝不能用must,英语语义上的区别,sun已经具体化了。可以想见,一心追求严谨的sun,对ajax多少有一些看不上眼。ajax本身没有值得称道的技术,只是几种现有技术的组合,就像web2.0一样,既没有令人信服的理论体系,也没有经得起推敲的概念和术语,甚至连最基本的定义也莫衷一是,离作为一项技术的标准还远着呢!

  不过,理想是一回事,现实又是另一回事,不和ajax攀上亲戚,sun恐怕要失去一些用户,所以,sun最终还是“低下了高贵的头颅”,放弃自己的原则,在ajaxworld conference & expo上,sun被公开评论,将在ajax上“shine more light”。“shine more light”是说得好听的,说得不好听一点,那就是“表现得更卖力一些”。

  ajax以javascript为其编程语言,而javascript在开发人员的眼里,名声不是太好,很多人甚至害怕用javascript写程序。也许sun已经认识到这一点,所以,sun在ajax上的努力,集中于如何使javascript为java程序员所接受。ajax和web 2.0对sun而言非常重要,这种重要性不是体现在技术方面,更多地是出于商业上的需要,因此,为了保持java的“时尚性”,不至于落在潮流之后,sun不得不提供对javascript这样的脚本语言编程模式的支持。据说java的下一个版本,java standard edition 6,将支持javascript。

  某种程度上,sun向javascript示好,对于程序员来说,是个好消息。以sun的一贯做法,如果涉足javascript,首先,肯定会想方设法让javascript变得规范起来。事实上,以纯java编写的javascript已经出现,那就是rhino。多数人使用javascript的方式,是在web页面上添加脚本,而rhino只实现了语言的核心,并不包含处理html文档的任何对象或者方法。rhino支持javascript 1.5的所有特性,而其独到之处是允许直接java脚本,这显然是一种更规范的方式。

  另外一个可以预测的变化,是javascript的使用将会变得简单,因为2007年是“简化java开发”的实质性一年,sun不会允许javascript增加java开发的复杂度。javascript的自动生成、javascript的高度抽象、以及javascript的工具包等,sun将会使用多种技术简化javascript的使用和编程。

  3. sun在ajax上投入重兵

  sun在ajax上的投入,体现为三个项目,其中两个开源项目,project jmaki和project phobos,第三个则是jsf的新扩展版本,project dynamic faces。

  jmaki是轻量级的客户端/服务器框架,用来生成以javascript为核心的web2.0或者具备ajax功能的应用。正如人们所预料的那样,jmaki对javascript和css进行了高度的抽象,使javascript工具包和css的易用性得到了改善。有了jmaki,java开发者在java应用中对javascript的使用,就简化为jsp的标签库,或者jsf的组件了。

  jmaki由客户端和服务器端模块组成。在客户端,核心模块是jmaki client runtime,建立在jmaki client runtime之上的,是jmaki的部件模型(widget model),jmaki的布局(layouts)和jmaki的客户端服务。jmaki 的布局(layouts)是web应用开发的起点,提供了若干种标准的页面布局;jmaki的部件模型是一种可重用的javascript组件模型,基于javascript、html和css技术。在jmaki部件模型的支撑下,程序员可以开发自己的部件,也可以使用现成的部件包;

  jmaki的客户端服务是jmaki部件通信的纽带,采用订阅/发行机制,像胶水一样将不同的部件联系在一起。jmaki client runtime可以和服务器端的各种runtime交互,包括java,php等,这种交互是以服务器端的jmaki server runtime为中介的。在服务器端,jmaki还有一个称为xmlhttpproxy的模块,用来访问外部的一些服务。

  另一个ajax的开源项目,称为phobos。随着脚本和动态语言在开发人员中的流行,尤其是在web应用领域,开发人员对于此类应用的快速开发和部署的需求与日俱增,phobos项目正是在这种情形下启动的。phobos是java平台上的一个web应用环境,对脚本语言友好,其目标是使java se和ee成为优秀的服务器端脚本语言平台。phobos是开源项目glassfish的一部分,phobos对脚本和动态语言的支持,既建立在java ee平台之上,同时也是对java ee平台的补充,phobos将使脚本和动态语言与java ee平台的集成变得容易。

  也许sun对于ajax的最直接响应,非project dynamic faces项目莫属了。dynamic faces是jsf的下一个扩展版本,这个版本完全是对开发者社区的一种回应,以满足程序员们对于ajax功能的呼吁。dynamic faces项目扩展jsf的服务器端组件模型,允许开发人员给web应用中现有的jsf组件插上ajax的翅膀,而这一切无需对组件代码作任何修改,也不必重写应用程序,只需简单地指明,页面上的哪些部件需要ajax功能。

  jsf的页面是由一个组件树来代表的,和html的dom树类似。ajax程序员用ajax部分地更新html的dom树,而jsf程序员则通过dynamic faces指定需要异步更新的jsf组件,所以,dynamic faces的方法,对ajax程序员和jsf程序员都不陌生,容易接受。更重要的是,利用jsf组件模型的优势,dynamic faces对ajax功能的支持,在效率方面改善明显。

  这主要得益于组件模型内在的协作性。在ajax环境下,当页面上一个javascript事件发生时,它可能引发该页上一系列部件的异步更新,dynamic faces可以将所有这些异步更新,在一个单独的ajax请求中完成,而不是每个更新都需要一个ajax请求。这显然减轻了服务器的负担。

  为一项技术启动三个项目,这在java的历史上并不多见。

  4. 福兮,祸兮,sun的改变

  纵观整个2006年,sun在ajax上的大手笔,仅仅是sun一系列出人意表举动中的一个。entity beans被放弃了,取而代之的是类hibernate的jpa;一直秘而不宣的java 平台核心代码开源了,sun向世界敞开了大门。孤立地看,这些事件无非是sun的几次技术调整,但是,如果联系起来观察,不难发现,sun正在改变自己。

  有人说sun顺潮流而动,审时度势,海纳百川,表现出一流厂商的大度胸襟;也有人说sun随波逐流,看风使舵,沦落为平阳之虎。sun庇护之下的java,和sun一起,风风雨雨,走过十年,sun的改变,java自然是春江水暖鸭先知,sun的一举一动,无不影响着java的未来。

  随着sun脱下实验室工程师一丝不苟的白大褂,穿上五颜六色的斑斓时装,java身上逐渐多了些市井,少了些书香。关于java何去何从的争论,对java前景的担忧和憧憬,是最近以来业界长盛不衰的话题,对于java来说,sun的改变是祸是福,那是仁者见仁,智者见智了,不过,生活总是要继续的,除了义无反顾地一路前行,java没有别的选择,sun也没有。

扫描关注微信公众号