赛迪网 > IT技术 Java > Java大图列表
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Ajax优于JSF的原因

发布时间:2007.12.06 09:10     来源:赛迪网    作者:baocl

Sun为什么会搞出一个JSF,JSF为什么会是现在这个样子,我想原因是这样的: 首先,基于组件的Web开发将来会是一个趋势。自包含的组件便于IDE的处理,可以提高开发效率。

   就是说JSF优于Struts/WebWork这类MVC框架的优势,在于它可以与IDE结合来自动生成代码。 而传统的纯手工编写的MVC框架,影响了开发效率。 因为Java技术在客户端并没有明显的优势。Applet已经被抛弃掉,Java的强项在服务器端。Sun不可能跑去使用JavaScript,因为在传统开发者眼里,JS只配做一点很琐碎的任务。

    于是在他们设计的这个架构中,所有的用户事件都放在了服务器端来处理, 这个决策造成了JSF致命的缺点。它把事件处理模型绑死在服务器上,限制了响应性更加灵敏的交互设计。随之而来的网络延迟会毁掉软件的可用性。 这也是Ajax在JSF的架构中无法充分发挥作用的原因。

    JSF的设计思路有点模仿VB,组件化的开发这个方向是没错的,Ajax开发将来也会走这条路。但是JSF与VB最大的差别是VB的事件模型都是位于本地来处理的。这是一种本质上的差别,所以如果JSF确实想模仿VB,那也是东施效颦。 而且在JSF的设计阶段,同步的请求/响应是主流,他们的思路仍然牢牢束缚在基于页面的开发方式上。根本就没有思考过其他的可能。

     异步请求/响应是Ajax与传统开发方式最大的差别,异步带来了更好的交互设计。

    在Ajax in Action第1章中作者举了一个令人信服的例子。Google Maps中当用户滚动地图时,获取新的地图图片,由于是异步请求的,因此不会打断用户的操作流程。 而在传统的地图服务,每次滚动可能都需要刷新页面。 用一下微软的那个地图服务就可以感觉到明显的差距,它甚至根本就不允许用户滚动地图。

http://terraserver.microsoft.com/

    以前我说Google Maps不是Ajax,因为没有使用XMLHttpRequest,这样说看来理解有些狭隘。 Google Maps请求地图的图片,采用的是修改动态创建的img元素的src属性的方式,这样的请求不会打断用户的操作,因此就是异步的。 我们在Ajax in Action中看到作者将Google Maps当作Ajax应用,而在Pragmatic Ajax中作者说Google Maps不是严格意义上的Ajax,两种说法都有道理。

     JSF其实如果和Applet结合,可能更好些。Applet是多线程的,可以捕获用户的操作事件,采用异步方式发送到服务器。这样就不会打断用户的操作了。 但是这样一来设计的这个架构就复杂了。而且Applet是已经决定抛弃的东西。 JSF和Java Web Start结合也可以,不过JWS设计用来建造一类完全不同的Web应用,即Rich Client,而不是设计用来建造运行于浏览器之内的RIA应用。 所以JSF最多只是一种过渡方案,在Ajax/Flash的竞争下早已风光不在。

    未来基于浏览器的RIA开发,Ajax、Flash是两种最有前途的技术。

    按照泽欣的判断可能是三分天下,Ajax、Flash/Flex/Laszlo、还有M$的Atlas。 Atlas是M$开发的类似于Flash的一种技术,目前还只是一个vaporware,没有看到其庐山真面目。 Java Web Start相比之下只能局限于一些内部应用。

    将来位于客户端的表现层开发可能会完全没有Java的位置,这是Sun不愿意看到的,但是Sun在这场角逐中只不过是一个小角色。

   (责任编辑:包春林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Java基础:看Web会话状态是如何维持的 (12-05) · 谈谈在jsp中如何用JDBC连接各种数据库 (12-05)
· 程序员必读--在java里读取大对象数据 (12-05) · JAVA进阶--看XML配置文件的读取处理 (12-05)
· 基础:Java中文问题详解,底层编码解剖 (12-05) · 浅谈 JAVA 中用动态代理类实现记忆功能 (12-05)
· java做的比较完善的FTP连接上传下载文件 (12-05) · 谈论如何用开源软件构建 java 编程环境 (12-05)
· JAVA进阶:如何用Java动态代理实现AOP (12-05) · J2EE平台WEB组件开发中如何使用定制标签 (12-05)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 知识亦有成熟过程 隐性知识该如何管理?
· 从平庸中脱颖而出:CIO成功的八大诀窍
· 网店新规能否继续实施 绿色数据中心绿在何处
· 通方期货CRM解决方案 房地产行业CRM解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统