`
lgx522
  • 浏览: 126579 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java Web层的下一个王者是谁?

    博客分类:
  • Java
阅读更多
经过数年的“框架大战”,Java界的各种框架找到了自己应有的位置。

Spring+Hibernate+Struts已成为Java开发的主流体系。在这个体系中,Spring+Hibernate的地位应该说短期内是难以撼动了。除了新兴的Jboss Seam作为挑战者之外,几乎难有劲敌。有趣的是当初Spring、Hibernate作为挑战者,将官方的EJB成功挑落马下;这次反倒是官方的EBJ3成了挑战者,不知结局如何。

Java B/S编程中历来战火最激烈的其实还在Web层,框架的数量最多,争议最大。
一切由Struts而起,而Struts最终也坐稳了第一个时代的王座。在技术层面,Struts 1.x已经被无数人抱怨过、批评过,但终于还是稳坐王位,这充分说明了习惯的力量。“稳定压倒一切”,这句话在IT技术领域仍旧适用。
其实IT应用技术,什么新鲜玩意并不难学。难的是标准化和规范化。每个程序员都有自己的思路和习惯,写出来的代码自然是五花八门。Java何以成为编程界的老大,很重要的一点在于Java的规范化。这种规范化很高的语言适用于多人合作的大型项目,便于沟通和理解,也就便于集成和维护。Java世界为什么会框架横飞,说到底还是规范化的需要。纯JSP和Struts写Web谁快,摆明了是JSP。那撑饱了用Struts?原因在于100个人写出来的JSP,有100种写法;而100个人写出来的Struts,基本相似。Struts之成功,正缘于其在Java Web层的规范化方面所做出的贡献。

然而长江后浪推前浪,Struts 1.x的技术缺陷毕竟是隐患。
Sun力推JSF,打算一雪Web层框架缺失之耻。可惜JSF既要沿用Swing的技术路线,又要学ASP.NET,还要照顾产商的IDE,结果搞了个四不象,弄得里外不是人。当然Sun的技术实力毕竟是超强的,只要别重蹈EJB的覆辙,拿出点专断的精神(像这两年的NetBeans),做出像Swing那样水准的东西,JSF当大有作为。JSF现在比较有优势的是对Ajax的集成,这一点走在了其他框架的前面。

而Struts就更没有志气了,把WebWork换了个标签,凑出个Struts2,Bug多多。说实在话,根本不如原版的WebWork。如果不是靠了原先的fans捧场,根本就没得混。不过Struts原本就不是以技术取胜的,靠的是抢占先机带来的习惯优势。如果原先的fans们在这两年内都能转到Struts2,那么Struts二世仍将雄霸天下。

综上所述,未来两年,JSF与Struts将展开Java Web框架的最终战争。
以笔者愚见,结局有二:一是不论Struts还是JSF获胜,Java Web层都将结束混战的局面,这对Java Web开发的标准化是非常有利的,并有助于巩固Java在B/S界的地位;二是Struts1.x、Struts2、JSF三分天下,必然从整体上削弱Java在B/S界的竞争力,并将进一步被RoR、ASP.NET、PHP所蚕食。

有兴趣者参加讨论。
分享到:
评论
18 楼 Julien 2007-04-20  
如果能够出现一套杀手级的AJAX平台,特性包括类Delphi的界面定制,简单的JAVA SERVICE调用,内建的安全机制,那么这个玩意会成为新王者,而JSF就不用存在了,而struts2还有生存空间。
毕竟操作监听器这种东西天经地义就应该放在客户端而不是放在服务端的。服务端只应该处理service。
17 楼 dlee 2007-04-20  
icess 写道
jsf对AJAX的集成,就是关注在一些普遍,简单的ajax功能上,让开发者可以不用写任何js代码就可以开发出ajax功能从程序,这其他东西可以实现吗.

瞧把你给美的,ASP.NET Ajax早就可以做这些事情了。
而且JSF给Ajax造成的紧耦合,事件模型和状态存储与服务器的严重绑定,这些是不能不考虑的。
给你一点甜头你果然就上钩了。
16 楼 icess 2007-04-20  
对于没有使用过JS的Java开发者来说,开发JS会很容易吗?
在AJAX火的时候,一个同事曾经第一时间买了那本中文的 AJAX 书,
看完后,对我说,"如果有替代的产品,再也不自己写JS了,太痛苦了"
我自己也简单了看看那本书,确实,和开发java来说,一个天上,一个地下.

jsf对AJAX的集成,就是关注在一些普遍,简单的ajax功能上,让开发者可以不用写任何js代码就可以开发出ajax功能从程序,这其他东西可以实现吗.

看看这里的ajax demo示例, [url]http://livedemo.exadel.com/richfaces-demo  [/url]
不用写js代码 就可以轻易实现这些功能,这难道不是工业化生产所需要的吗.

但是,有些开发者喜欢写js,这属于个人爱好, 就没办法了. ^_^.

开发JavaScript并不像某些人宣传的那样是一个地狱

15 楼 icess 2007-04-20  
struts1.X 由于遗留系统太多, 还会继续有市场,

JSF 是SUN,IBM,Oracle等几家大型厂商公共制定的一个JSR, 是个标准


Java Community Process(JCP)制定的Java Specification Requests(JSR) 127 - Java Server Faces(JSF)( http://www.jcp.org/en/jsr/detail?id=127) 就是一个基于JAVA技术的Web应用框架标准,同时也是对于J2EE标准的一个重大补充。JSF使得您能够轻松而方便地设计开发基于JAVA技术的 Web应用,同时所开发出来的应用也会非常易于维护、重用和扩展。 JAVA/J2EE业界普遍认为JSF将会在不久的未来取代目前业界非常流行的Apache Struts框架。



有一个事实非常有趣,Apache Jakarta Struts框架的作者Craig McClanahan同时也是JSR 127 JSF项目的两个领导人之一,这似乎保证了未来两种框架之间的易迁移性;那么再从应用开发的角度来看的话,Struts和JSF两种框架也有很多相似之处,比如就像Struts框架一样,JSF也充分遵循MVC设计模式,也定义了一整套JSP标记库来生成与JavaBean属性绑定的HTML元素,也定 义了相应的组件导航模型等等,接下来,JSF这个即将出台的新标准将会成为J2EE的一部分,而目前业界所有的J2EE应用服务器,不论是免费的还是商用 的,以及相应的开发工具都会正式公开对于JSF的支持。从以上两点来看我们有理由相信,在不久的未来,把已有的Struts应用转向JSF将不会存在很大的困难。
14 楼 zjut2006 2007-04-20  
现在想玩webwork了 不知道好不好 对jsf真的没什么好感
13 楼 剑事 2007-04-20  
JSF拥护碰到不少 纳闷
12 楼 xly_971223 2007-04-20  
这几天看了一下struts2 立即决定丢掉struts1.2
早知道webwork这么好用 早就用webwork了
但是为什么webwork一直没能战胜struts呢
还是因为struts在早期占据了大量的市场 导致webwork很难杀进来

我觉得靠struts1的强大基础 struts2在未来一段时间内还会是web层的王者
11 楼 dlee 2007-04-20  
lgx522 写道
JSF现在比较有优势的是对Ajax的集成,这一点走在了其他框架的前面。

JSF对于Ajax的集成根本就没有优势,反而会限制Ajax技术的发挥。JSF对于Ajax的集成仅仅适用于一些非常简单的交互模式,复杂的DHTML组件通过JSF集成用起来非常别扭。

Ajax客户端框架yui-ext、Prototype、Dojo等等与Spring IoC集成都是非常容易的事情,可以构成一种Ajax+REST的架构。非要在中间加一个JSF框架,强迫开发者必须通过JSP tag来开发Ajax功能,完全是多此一举,吃饱了撑的。开发JavaScript并不像某些人宣传的那样是一个地狱,这样宣传的人是别有用心的。

别光听宣传,自己去用一下,OK?
10 楼 zyl 2007-04-20  
blueoxygen 写道
JSF看了一个星期,放弃了...内部实现机制过分复杂,而且一看又是一堆的jsp tag,马上头皮发麻。

也不算太复杂,个人感觉规范定义的还是很清晰,只不过实现的机制比较欠缺而以。
9 楼 blueoxygen 2007-04-20  
JSF看了一个星期,放弃了...内部实现机制过分复杂,而且一看又是一堆的jsp tag,马上头皮发麻。
8 楼 林秋枫 2007-04-20  
最不喜欢JSF.
标签和UI组件混用是其致命的缺陷.用IDE拖拉产生的代码是debug和维护的恶梦.从项目管理的角度来看,要做到view层代码的规范化是很难的.

Tapestry4.0做了几个系统,感觉其完全贯彻的OO的思想.但其封装得太彻底的,对于新手的开发人员的学习成本很大(特别是没有人指导的情况).比较不好的一点就是Tapestry4.0开发只有一个人,没有大厂商的支持.另外Tapestry4.0到Tapestry5.0的变化太大了.虽然Tapestry5.0架构更加的优秀.可是由于不兼容,导致了出现断层的现象,刚好这个时候又是web框架争夺市场最激烈的时候.所以对它能否得到广泛的推广还值得验证.

struts1.x一直都在用,做中小项目居多.虽然很多人说落后什么.可是往往只是从理论上说而已.我们都知道宝马汽车当然比捷达好.但是如果你拥有一个出租车公司有N多辆捷达,公司在不同地方都有捷达的维修点.这个时候如果要全部换成宝马似乎不现实.即使新买宝马也值得慎重考虑,要考虑秏油问题,考虑司机驾驶问题,考虑维修成本问题.

struts2.x还在观望中,不了解,所以也不好评论.

现在对spring MVC开始有点兴趣,如果结合FreeMaker,Velocity也是个很好的选择.
7 楼 lgx522 2007-04-20  
一项技术要在市场上领跑,有以下几条因素:
1、与同类技术相比有明显的优势
2、简单易用
3、技术的推广和普及

Java的Web框架,从技术层面上来说,大同小异,彼此间没有太大的差距。
易用程度也差不太多。
最终的决定因素在于技术的推广的普及。Webwork为何被Struts招安?无非是要借“Struts”这个黄金品牌翻身。JSF为何有前途,在于当前相关厂商的推广和炒作。
Struts与JSF争霸的关键,还是在于普及的速度。Struts这个民间标准,如果能让1.x的fans们迁移到2.x,继续统治民间当不成问题。但现在推广的努力明显落后于众厂商力捧的JSF;而Sun必须在这个炒作的氛围中真正让“标准JSF”足够好用(不成也将myfaces招安),才能从Struts的阵营中拉足选票。

当前不建议大家再去使用其他的框架(作为爱好研究可以)。一大堆各式各样的框架,难于交流和深入使用,不利于Java Web的发展。
6 楼 finaleden 2007-04-19  
我觉得还是sturts2会成为新的王者,因为struts1的fans数非常巨大,而struts1转向struts2带来的是便利,非常便利。
5 楼 xiang 2007-04-19  
flex呢?就没有人讨论?
4 楼 LucasLee 2007-04-19  
说得不错。
不过我觉得业界最需要的是一套完整和开放的widget,不论是用Javascript实现的,还是未来浏览器直接用标签等方式支持的,widget包括:combobox,grid,treeview等等,就像VB、dephi里的组件一样,这些东西才是本质性压倒性的革新。
3 楼 yoyozhang 2007-04-19  
个人比较喜欢JSF,如果用上facelets,你就非常不错了!
2 楼 温柔一刀 2007-04-19  
JSF太不符合习惯了,所以不怎么看好
还是觉得webwork在web层上做的是最好的
1 楼 rainlife 2007-04-19  
Tapestry呢?Javaeye上面有过讨论,而且 ,robbin等大牛们也是比较看好Tapestry的,还有Wicket呢?其实JAVA WEB方面的框架非常之多,只是平时公司中使用的并不多,只局限于那么几个,像Click Framework,我觉得也是一个不错的WEB框架。只是从目前国内的情况来看,struts1.X,估计还会存在相当一段时间。

相关推荐

    Java Web整合开发王者归来

    《Java Web整合开发王者归来》是一本全面深入探讨Java Web开发技术的专著,涵盖了从基础知识到高级应用的广泛内容。书中的章节设置系统而全面,旨在帮助读者逐步掌握Java Web开发的核心技能。 1. 入门篇:这部分...

    Java.web整合开发王者归来整本书内容及光盘源码

    由于上传大小限制50M,因此分享的是我的百度网盘链接,下载后文本文件里有链接,包括Java Web整合开发王者归来整本书326.5M 的PDF文档以及54.7M的光盘源代码 本书简介: 资深Java程序员耗时一年时间写作,十年开发...

    Java.Web整合开发王者归来.zip

    《Java.Web整合开发王者归来》是一本专注于Java技术在Web开发领域的深度剖析和实践指南。这本书结合了Java语言的强大功能和Web开发的丰富应用场景,旨在帮助开发者提升在这一领域的专业技能,实现技术的王者归来。 ...

    Java Web整合开发王者归来_源码下载

    《Java Web整合开发王者归来》源码下载是一个全面的资源集合,涵盖了多个核心Java Web技术,包括Spring、Struts2、数据库管理等多个方面。对于初学者或是从其他编程语言如C#转行到Java的开发者来说,这是一份非常...

    Java Web整合开发王者归来光盘内容和PDF文档

    【Java Web整合开发王者归来】是一本专注于Java Web开发的权威指南,旨在帮助开发者全面掌握在Web环境中使用Java技术进行高效、稳定的应用程序构建。这本书的光盘内容和PDF文档通常会包含丰富的教程、示例代码和实战...

    java web开发王者归来源码1

    java web开发王者归来源码,由于压缩好后是72.8M,这是第1部分的源码。

    java web王者归来41章论坛系统源码

    【Java Web王者归来41章论坛系统源码详解】 ...以上就是关于“Java Web王者归来41章论坛系统源码”的核心知识点解析,通过学习和研究这个源码,开发者不仅可以深入理解Java Web开发,还能掌握构建实际项目所需的技能。

    java web整合开发王者归来 光盘源码 41章 Spring Struts hibernate整合示例 论坛系统.rar

    《Java Web整合开发王者归来》是一本专注于Java企业级应用开发的著作,主要涵盖了Spring、Struts和Hibernate(SSH)三大框架的集成与应用。这本书的41章源码提供了丰富的示例,帮助读者深入理解这三大框架如何协同...

    Java.Web整合开发王者归来 源码

    《Java.Web整合开发王者归来 源码》一书涵盖了Java Web开发的广泛领域,旨在帮助开发者成为精通此领域的专家。源码提供了实践操作的基础,让读者能够深入理解书中所讲的技术点。以下是对该书内容的详细解读: 1. **...

    java web整合开发王者归来部分源码

    "王者归来"可能是这个领域的某本权威书籍或教程的名称,暗示了这些源码来自于一个深入讲解Java Web开发的高级教程或实践项目。 在Java Web开发中,常见的技术栈包括Servlet、JSP、JavaServer Faces (JSF)、Spring ...

    java web4.zip

    《Java Web4.zip》是一个关于Java Web整合开发的资源包,包含了多个部分,可能是书籍、教程或课程的分卷文件。这些文件名如"51CTO下载-Java Web整合开发王者归来.part16.rar"等,暗示了该资源可能来源于51CTO网站,...

    java web6.zip

    《Java Web整合开发王者归来》是一本专注于Java Web开发的深度学习资料,涵盖了从基础到高级的全方位技术。这个压缩包文件包含多个部分,显然是一部大型教程或电子书的分卷,通过组合这些.part文件,我们可以得到...

    java.web王者归来宠物商店源码.part2

    【标题】"java.web王者归来宠物商店源码.part2"所代表的是一个关于Java Web开发的项目源码,这是该系列教程或书籍的第二部分。这个项目可能是一个完整的Web应用程序,用于模拟宠物商店的在线运营,它展示了如何使用...

    java.web王者归来一书宠物商店源码.part1

    《Java.Web王者归来》是一本深入探讨Java Web开发技术的专著,其核心内容围绕着构建一个名为“宠物商店”的示例应用展开。这个源码部分是整个项目的一部分,主要包含项目的初始设置和部分核心功能的实现。在这个部分...

    Java Web整合开发王者归来 (共两部分) part2 pdf + 源码

    Java Web整合开发王者归来 (共两部分) part2 pdf + 源码

    java web5.zip

    《Java Web整合开发王者归来》是一本专注于Java Web开发的深度学习资料,涵盖了从基础到高级的全方位技术。标签“Java Web”明确指出本资源主要关注的是使用Java语言进行Web应用开发的相关技术。通过压缩包中的...

    web开发王者源码汇总.rar

    《Web开发王者源码汇总》是一份集合了多个关键Web开发技术的源码资源包,包含了一系列相关的子文件,如源代码补丁、框架、图表、数据库管理、过滤器、Servlet、JSTL、JSP以及会话管理等多个重要领域的实践示例。...

    java web开发王者归来源码2

    java web开发王者归来源码,由于压缩好后是72.8M,这是第2部分的源码。

    java web整合开发王者归 光盘部分源码

    这是 刘京华 《java web整合开发王者归 》 光盘的部分源码 包括: database jpa jstl listener servlet session taglib filter i18n

    Java Web开发技术大全--JSP+Servlet+Struts 2+Hibernate+Spring+AJAX.(李宁)

    **Struts 2** 是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,用于简化Java Web应用的开发。Struts 2提供了一种结构化的框架,通过Action和Result来处理用户请求,使用Interceptor进行拦截处理,...

Global site tag (gtag.js) - Google Analytics