- 浏览: 1397109 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (328)
- JSF (27)
- 生活 (12)
- Ajax (26)
- Maven (6)
- CSS (1)
- Shale (3)
- SiteMesh (1)
- Ext (15)
- JMX (2)
- Windows技巧 (7)
- 工作感悟 (18)
- SVN (2)
- SVG (0)
- GoogleGear (0)
- RAP (2)
- SOA与WebService (3)
- 笔记本技术研究 (1)
- Microsoft (2)
- 英语学习 (3)
- PHP (7)
- web 2.0 (6)
- 语义Web (1)
- IT史话 (3)
- iText (3)
- JVM (1)
- PropertiesEditor (1)
- J2SE (33)
- Spring (2)
- Java Batch (1)
- log (2)
- Struts2 (2)
- DWR (0)
- JAAS (3)
- EJB3 (4)
- Flex (8)
- JFreeChart (1)
- WAS (0)
- 数据库 (2)
- 摄影 (0)
- SQL (1)
- Google App Engine (1)
- linux (5)
- Eclipse plugin (10)
- Testing (0)
- Portal (0)
- 移动互联网 (0)
- SWTBot (1)
最新评论
-
江奇缘:
不错!!!!!!
web.xml里<filter-mapping>中的<dispatcher>作用 -
yy8093:
commonj 第三步,那个调用的方法要在哪里调?servle ...
JAVA中多种计时器的比较与分析 -
di1984HIT:
学习了,不错~
web.xml里<filter-mapping>中的<dispatcher>作用 -
penkee:
com.lowagie.text.DocumentExcept ...
iText中输出 中文 -
氵壞男亼乀:
我想请问下 你哪个html里面引入的几个js文件没看懂!你 ...
DWR入门教程之HelloWorld
陈金洲观点
毫无疑问,AJAX被越来越多的接受。这不仅仅体现在技术的应用上,更体现在行业范围内的需求提升上。Web应用这种类型不仅仅被用在企业业务系统,更多被用在Web2.0应用中。这些应用意味着以前只能被几十人几百人使用的系统,突然之间会有几十万几百万的用户。用户有了更多选择,能够吸引用户驻留的,除了华丽的界面,那么就是流畅的操作界面和快速的响应。作为实现不打断用户操作的关键技术AJAX, 从吸引用户这一点上,具有不可替代的使命。
意味着华丽、AJAX的Web2.0应用同样也冲击着企业应用的需求。虽然没有统计数据,但可以看到越来越多的企业应用要求更直观的界面,更流畅的操作,更少的延迟。例如,在前两年,级联下拉框的实现,大多数的框架(或者应用)的实现是选中一个时刷新整个页面,然后根据选中的那个更新下一个下拉框的待选值列表。这个实现在今天看起来几乎是完全不可接受的,无论对客户还是对开发者。
开发者这边,去年还有关于AJAX几宗罪的讨论,然而现在看来,更多的讨论沉浸到了某一个具体技术中。在认清AJAX技术本质之后,更多的开发者或欣然接受,或用户要求,开始了AJAX相关技术的学习和使用。从我周围看来,曾经认为JavaScript是不太入流的语言的程序员,现在已然逐渐发现,JavaScript很有趣,很强大;用JavaScript实现很酷的网页效果,很有成就感,等等。
另外, AJAX这个词本身,早已远远超越了它所代表的本来含义。AJAX原本是异步的JavaScript和XML。然而一看到一个绚丽的网页(Web应用),几乎大多数人,具备Web相关知识的,第一个问题往往是:这用的AJAX吧?──AJAX现在几乎成为圆角、拖拽、绚丽、无刷新的代名词。当一个名称上升为一种概念、一种直觉的时候,我们应该知道,相关的技术应用到了什么程度。
现在几乎已经没有人手工与XMLHttp对象打交道,绝大多数的开发者都使用Buffalo, DWR, Prototype等辅助库、框架进行开发。
AJAX框架的选择
由于现在很少有人只用一种AJAX技术,我将AJAX框架的范围扩大一些,分为偏重展现、偏重传输、工具型三个部分。由于我自己的Web工作语言主要在Java, Ruby以及Python之间,以下的评价不包含PHP, .NET下的一些工具。另外,对自己开发的和它的主要竞争者DWR有主要的比较,其他的仅作泛泛评述,估妄言之。
偏重展现:YUI, Qooxdoo, Dojo
·YUI :目前设计比较完整,美观,全面的界面工具库。
·Qooxdoo: 开源的另一种选择。
·Dojo: 比较完善的库结构,丰富的界面控件。
偏重传输:Buffalo, DWR
Buffalo特性:
1、基于prototype。如果你的AJAX应用也是基于prototype,那么可以减少重复加载prototype的带宽,并且获得相当一致的编程概念。
2、Bind: 提供了对结果数据的处理,直接将数据绑定到页面对象并展示,这是一个动人的特性。在2.0中,Bind能力更加强大,能够将值直接绑定到表单元素、表格、DIV/Span、甚至整个表单上。关键是这种绑定是无侵入并且与buffalo整体结构完全整合,对外表现只有一个简单的{{buffalo.bindReply}}或者{{Buffalo.Bind.bind}}即可。
3、序列化:Buffalo支持任意对象,任意深度,任意数据结构的Java到JavaScript以及JavaScript到Java的双向序列化,并且支持引用。
4、生命周期对象访问:1.2.4之前需要继承一个BuffaloService,从1.2.4开始就不需要继承了,引入了线程安全的BuffaloContext对象,只需要通过BuffaloContext.getContext()即可获得一个线程安全的引用,并且对Request的各种属性进行操作。
5、对Collection/Array的模糊处理:Buffalo中提供了对Collection/Array对象的模糊识别能力。例如:服务器端有一个方法需要List参数,客户端传递过去一个javascript数组就可以了,不需要费心的组装对象。
6、客户端组装对象:Buffalo支持在客户端组装对象,甚至可以直接将整个表单序列化为一个对象作为参数传给远程客户端。
7、对重载方法的处理能力:由于Java与JavaScript之间类型的不匹配,DWR的代码生成无法对重载方法进行处理。例如,sum(double,double), sum(int, int) DWR很可能不知道你要调用哪一个。从2.0开始Buffalo支持了对重载的处理。
DWR特性:
1、支持Batch,可以将多个Service函数调用放在一个XMLHttpRequest请求中完成。
2、Converter:可以转换任意类型的Java对象到JavaScript,并允许直接使用。例如:Customer类包含一个address变量,当AjaxCall返回Customer对象的时候,可以直接在Javascript中使用customer.address来获得Address的信息。
3、允许Expose部分函数和属性。(Buffalo无限制,可以访问Service中的任意函数。)
4、DWR2.0中提出了Reverse Ajax,提供在Java代码中来处理页面上元素的功能。
工具型:Prototype, JQuery, Dojo
·Prototype:得益于Ruby语言的设计,它使得你能够以几乎类似于编写Ruby的方式编写JavaScript。由于绑定在Ruby On Rails的发行包中,它成为近两年最流行的AJAX工具。早期它小巧灵活,现在由于加入太多的特性,日渐臃肿。目前1.6版本大小已经超过120K。
·JQuery:Prototype的主要竞争者。简单是它最大的优点。大多数常见的复杂操作、效果,JQuery的代码量能够比Prototype少50%以上。
·Dojo:采用类似于Java包的管理方式,实现按需加载JS。提供了全面的AJAX、DOM操作支持。然而需要在HTML TAG中嵌入额外的属性,使得网页不能遵守W3C标准,不少开发者对此耿耿于怀。
来自RIA框架的冲击?
我并不赞同这种说法,恰恰相反,我认为像Silverlight,Flex等这些RIA框架要考虑来自Web应用的冲击。Web领域几乎已经不存在技术壁垒,能做哪些,那些不适合,负载均衡等等已经有充分的资源可以参考。各种模式都可以灵活的应用到其中,各种测试工具(如Selenium网页测试工具)、开发工具支持得非常出色。而RIA框架要考虑的问题远远要比现在的Web应用多得多。除了RIA所承诺的更容易的实现华丽的效果──在多种JS库的支持下这些效果在Web下并非难事──他们有更多的问题需要考虑:资源的获取和释放,测试的支持,本地存储的问题,事件机制,状态的同步,客户机、服务器数据交互机制(序列化反序列化)等等。RIA想如同现在的Web应用般大规模,远不到时候。大多数基于RIA应用的考虑是让应用能够离线运行,然而与此同时浏览器也在发展,基于网页的本地存贮已经在Google Reader中可以实际使用。也许某一天浏览器就是一个完美的RIA平台,Web应用只需添加本地存贮支持就可以离线使用──类似于Flex、Silverlight的RIA技术,与Web应用,哪个更容易被接受,还真难见分晓。
毫无疑问,AJAX被越来越多的接受。这不仅仅体现在技术的应用上,更体现在行业范围内的需求提升上。Web应用这种类型不仅仅被用在企业业务系统,更多被用在Web2.0应用中。这些应用意味着以前只能被几十人几百人使用的系统,突然之间会有几十万几百万的用户。用户有了更多选择,能够吸引用户驻留的,除了华丽的界面,那么就是流畅的操作界面和快速的响应。作为实现不打断用户操作的关键技术AJAX, 从吸引用户这一点上,具有不可替代的使命。
意味着华丽、AJAX的Web2.0应用同样也冲击着企业应用的需求。虽然没有统计数据,但可以看到越来越多的企业应用要求更直观的界面,更流畅的操作,更少的延迟。例如,在前两年,级联下拉框的实现,大多数的框架(或者应用)的实现是选中一个时刷新整个页面,然后根据选中的那个更新下一个下拉框的待选值列表。这个实现在今天看起来几乎是完全不可接受的,无论对客户还是对开发者。
开发者这边,去年还有关于AJAX几宗罪的讨论,然而现在看来,更多的讨论沉浸到了某一个具体技术中。在认清AJAX技术本质之后,更多的开发者或欣然接受,或用户要求,开始了AJAX相关技术的学习和使用。从我周围看来,曾经认为JavaScript是不太入流的语言的程序员,现在已然逐渐发现,JavaScript很有趣,很强大;用JavaScript实现很酷的网页效果,很有成就感,等等。
另外, AJAX这个词本身,早已远远超越了它所代表的本来含义。AJAX原本是异步的JavaScript和XML。然而一看到一个绚丽的网页(Web应用),几乎大多数人,具备Web相关知识的,第一个问题往往是:这用的AJAX吧?──AJAX现在几乎成为圆角、拖拽、绚丽、无刷新的代名词。当一个名称上升为一种概念、一种直觉的时候,我们应该知道,相关的技术应用到了什么程度。
现在几乎已经没有人手工与XMLHttp对象打交道,绝大多数的开发者都使用Buffalo, DWR, Prototype等辅助库、框架进行开发。
AJAX框架的选择
由于现在很少有人只用一种AJAX技术,我将AJAX框架的范围扩大一些,分为偏重展现、偏重传输、工具型三个部分。由于我自己的Web工作语言主要在Java, Ruby以及Python之间,以下的评价不包含PHP, .NET下的一些工具。另外,对自己开发的和它的主要竞争者DWR有主要的比较,其他的仅作泛泛评述,估妄言之。
偏重展现:YUI, Qooxdoo, Dojo
·YUI :目前设计比较完整,美观,全面的界面工具库。
·Qooxdoo: 开源的另一种选择。
·Dojo: 比较完善的库结构,丰富的界面控件。
偏重传输:Buffalo, DWR
Buffalo特性:
1、基于prototype。如果你的AJAX应用也是基于prototype,那么可以减少重复加载prototype的带宽,并且获得相当一致的编程概念。
2、Bind: 提供了对结果数据的处理,直接将数据绑定到页面对象并展示,这是一个动人的特性。在2.0中,Bind能力更加强大,能够将值直接绑定到表单元素、表格、DIV/Span、甚至整个表单上。关键是这种绑定是无侵入并且与buffalo整体结构完全整合,对外表现只有一个简单的{{buffalo.bindReply}}或者{{Buffalo.Bind.bind}}即可。
3、序列化:Buffalo支持任意对象,任意深度,任意数据结构的Java到JavaScript以及JavaScript到Java的双向序列化,并且支持引用。
4、生命周期对象访问:1.2.4之前需要继承一个BuffaloService,从1.2.4开始就不需要继承了,引入了线程安全的BuffaloContext对象,只需要通过BuffaloContext.getContext()即可获得一个线程安全的引用,并且对Request的各种属性进行操作。
5、对Collection/Array的模糊处理:Buffalo中提供了对Collection/Array对象的模糊识别能力。例如:服务器端有一个方法需要List参数,客户端传递过去一个javascript数组就可以了,不需要费心的组装对象。
6、客户端组装对象:Buffalo支持在客户端组装对象,甚至可以直接将整个表单序列化为一个对象作为参数传给远程客户端。
7、对重载方法的处理能力:由于Java与JavaScript之间类型的不匹配,DWR的代码生成无法对重载方法进行处理。例如,sum(double,double), sum(int, int) DWR很可能不知道你要调用哪一个。从2.0开始Buffalo支持了对重载的处理。
DWR特性:
1、支持Batch,可以将多个Service函数调用放在一个XMLHttpRequest请求中完成。
2、Converter:可以转换任意类型的Java对象到JavaScript,并允许直接使用。例如:Customer类包含一个address变量,当AjaxCall返回Customer对象的时候,可以直接在Javascript中使用customer.address来获得Address的信息。
3、允许Expose部分函数和属性。(Buffalo无限制,可以访问Service中的任意函数。)
4、DWR2.0中提出了Reverse Ajax,提供在Java代码中来处理页面上元素的功能。
工具型:Prototype, JQuery, Dojo
·Prototype:得益于Ruby语言的设计,它使得你能够以几乎类似于编写Ruby的方式编写JavaScript。由于绑定在Ruby On Rails的发行包中,它成为近两年最流行的AJAX工具。早期它小巧灵活,现在由于加入太多的特性,日渐臃肿。目前1.6版本大小已经超过120K。
·JQuery:Prototype的主要竞争者。简单是它最大的优点。大多数常见的复杂操作、效果,JQuery的代码量能够比Prototype少50%以上。
·Dojo:采用类似于Java包的管理方式,实现按需加载JS。提供了全面的AJAX、DOM操作支持。然而需要在HTML TAG中嵌入额外的属性,使得网页不能遵守W3C标准,不少开发者对此耿耿于怀。
来自RIA框架的冲击?
我并不赞同这种说法,恰恰相反,我认为像Silverlight,Flex等这些RIA框架要考虑来自Web应用的冲击。Web领域几乎已经不存在技术壁垒,能做哪些,那些不适合,负载均衡等等已经有充分的资源可以参考。各种模式都可以灵活的应用到其中,各种测试工具(如Selenium网页测试工具)、开发工具支持得非常出色。而RIA框架要考虑的问题远远要比现在的Web应用多得多。除了RIA所承诺的更容易的实现华丽的效果──在多种JS库的支持下这些效果在Web下并非难事──他们有更多的问题需要考虑:资源的获取和释放,测试的支持,本地存储的问题,事件机制,状态的同步,客户机、服务器数据交互机制(序列化反序列化)等等。RIA想如同现在的Web应用般大规模,远不到时候。大多数基于RIA应用的考虑是让应用能够离线运行,然而与此同时浏览器也在发展,基于网页的本地存贮已经在Google Reader中可以实际使用。也许某一天浏览器就是一个完美的RIA平台,Web应用只需添加本地存贮支持就可以离线使用──类似于Flex、Silverlight的RIA技术,与Web应用,哪个更容易被接受,还真难见分晓。
发表评论
-
超强1000个jquery极品插件!(连载中。。。。最近更新20090710)
2009-11-26 16:01 4757花N长时间积累的Jquery插件,希望大家喜欢。大家 ... -
jquery cycle plugin
2009-11-04 15:38 2589‹‹ home jQuery Cycle Pl ... -
VIM技巧
2009-04-24 16:06 1872(1).w跳到下面一个单词(word) (2).b跳到上面一 ... -
HTML 特殊字符表
2009-04-01 16:01 1701With the exception of HTML 2.0 ... -
Web开发中不可缺少的浏览器相关工具
2009-03-24 13:45 1926整理了一些Web前端开发的资源,包括有浏览器开发工具,Micr ... -
jsp重定向forward和sendRedirect的比较
2008-12-05 12:28 7384JSP的重定向有两种:forw ... -
AJAX开发简略 (第一部分)7.1、AJAX应用到的技术
2008-11-14 12:18 1987在使用浏览器浏览网页的时候,当页面刷新很慢的时候,你的浏览器在 ... -
JSON的三个好处
2008-10-27 10:38 2542JSON的三个好处收藏 <script>f ... -
自定义可排序表格
2008-10-15 15:22 2029首先,定义一个js: tableSort.js: func ... -
DWR对象构造,深入分析dwr中的DWRUtil.getValues
2008-09-12 09:51 2181当你需要通过dwr完成类似提交form的操作,了解DWRU ... -
深入分析dwr中的DWRUtil.$
2008-09-12 09:47 1408from:http://blog.csdn.net/pwl ... -
查看JSON对象结构
2008-08-25 10:37 4730在使用DWR时我们经常需要返回一个复杂的java对象,对于这个 ... -
DWR中数组的使用
2008-07-24 09:28 3578近日研究DWR,对于数组的转换始终有些不太明白,昨天终于了解了 ... -
Java open source forum大搜捕
2008-04-21 00:13 6651JIVE:这是个很多人非常熟悉的forum,可惜它3.0版本之 ... -
白话 Ajax 及其入门基础
2008-03-26 10:17 1735一、白话Ajax的原理 这个可以从 C/S 和 B/S 的原理 ... -
DWR入门教程之提示性文字
2008-03-25 15:40 2432DWR可以让您做个简单的 ... -
DWR入门教程之HelloWorld
2008-03-25 14:26 21208说明:这本是林信良(良葛格)的专栏 的文章,但是受不了繁体字的 ... -
2007年最新web2.0开源程序代码集合
2008-03-20 12:29 1841来自:http://www.prothink.cn/blog/ ... -
Web开发技术史话
2008-03-20 12:18 17261. 荒芜年代 1990-1 ... -
css教程–十步学会用css建站(全)
2008-03-19 12:58 2832本教程主要参考Creating a CSS Layout fr ...
相关推荐
第一章 从计算机说起 第二章 数是什么 第三章 运算的规律 第四章 怎样才能算的快 第五章 对数、算尺与算图 ……
漫话IP:TCP_IP基础知识读本
一、对数——化乘除为加减二、常用对数三、对数的尺度四、e的现身——从一个复利问题谈起五、自然指数函数和自然对数函数六、无所不在的e七、离不开e的奇妙曲线八、由实变数到复变数附表 常用对数的尾数表(兼作常用...
### 初等组合学漫话:算法的基础 在探讨初等组合数学之前,我们首先要明确这一领域的核心概念及其与算法之间的联系。初等组合数学作为数学的一个分支,它研究的是有限集合元素的不同组合方式,包括排列、组合以及...
《教育漫话》是17世纪英国哲学家约翰·洛克的一部重要教育著作,它对幼儿教育实践提供了深刻的启示。洛克在书中强调了健康教育、道德教育和知识教育的重要性,这些观点至今仍对现代幼儿教育有着深远的影响。 首先,...
约翰·洛克的《教育漫话》作为教育领域的经典著作,通过信件的形式详细探讨了教育的各个层面,特别是家庭教育的要点,为现代教育者和家长提供了深远的启示。在这部作品中,洛克不仅指出了教育的重要性,还提出了对...
《漫话九月会》是一篇回顾旧时中国北方地区农历九月集市活动的文章。文章通过对过去一段历史时期九月会的描述,带读者回到作者童年时的记忆中,展现了那个时代特有的社会生活和风俗习惯。从文章中可以提取出以下知识...
初中语文语文论文漫话教育诚信
《解码三大数学常数:e的密码》与《漫话e》这两本书都是关于数学常数e的科普读物,旨在深入浅出地介绍这个神秘而重要的数学概念。数学常数e,通常表示为2.71828…,在数学中占据着至关重要的地位,它不仅在自然对数...
漫话ERP- 轻松掌控现代管理工具 以生動幽默的寫法,詳細說明ERP的建構理論
地理学科漫话自然灾害的双重性.doc
《漫话三国英雄》的主题显然聚焦于中国历史上的三国时期,这一时代因其英雄辈出而闻名,其中最为人们津津乐道的人物包括关羽、曹操、诸葛亮、曹植和张飞等。他们各自的故事和言行,成为了后世诸多成语和典故的来源。...
总的来说,“漫话数据结构-什么是查找”引导我们理解查找的本质、相关术语和分类,以及查找在实际问题中的应用。通过学习,我们可以提升解决问题的能力,为编写高效、优化的程序奠定基础,拯救程序的灵魂。
冒泡排序是一种基础的排序算法,它通过重复遍历待排序的列表,...在"漫话数据结构"这样的学习资源中,通过轻松易懂的方式讲解这些基础概念,能够有效地拯救程序的灵魂,让学习者更好地掌握数据结构和算法的基础知识。
【漫话互联网产品经理】课程旨在深入探讨互联网产品经理这一角色,帮助学员全面了解产品经理的工作内容、职责以及所需的技能。课程从“什么是产品经理”开始,强调产品经理是产品的守护者,负责产品从构思到终结的全...
当我们翻阅“初中语文文摘社会北京四格漫话”,我们不仅仅是翻阅文字,更是翻开了一幅幅生动的北京社会生活的画卷。通过这些精彩篇章,我们可以领略北京动物园里的故事、个人成长与职场经历的波折,以及城市与人物...
《教育漫话》是17世纪英国哲学家约翰·洛克的杰作,经过几个世纪的洗礼,这部作品依旧闪耀着教育智慧的光辉。洛克以他独特的见解,将教育分为体育、德育和智育三个核心领域,并在《教育漫话》中详细阐述了他对每个...
第一轮找出最小的5并与第一个元素64交换,第二轮找出次小的6并与第二个元素交换,依此类推,直到整个数组有序。通过这一过程,我们可以直观地看到数据是如何一步步变得有序的,这对于初学者来说是学习排序算法的一个...
在《漫话清高》这篇文章中,作者金开诚深入地探讨了“清高”的含义,通过对中国古代历史人物的事迹分析,揭示了“清高”所涵盖的多层面意义。 文章一开篇便引用了屈原的名句“举世皆浊我独清,举世皆醉我独醒”,这...
- 第二轮:2,4,5,7,8(1号猴子被淘汰) - 第三轮:4,5,7,8(2号猴子被淘汰) - 第四轮:4,7,8(5号猴子被淘汰) - 第五轮:4,8(7号猴子被淘汰) - 第六轮:8(4号猴子被淘汰) 从这个例子中可以看出,数据结构的...