后框架时代细说Struts的前世今生
【IT168 专稿】在开源的世界里,如今正是群雄割据,军阀混战的局面。各有各的山头,各有各的地盘,相互厮杀,互不相让。正当我们最为熟悉的Struts与众多开源项目拼得头破血流的同时,Sun公司近期推出Jruby0.xx版本,准备对Struts发起全面阻击。这次高调的市场举动,给开源世界带来了一次不小震荡波。更引以为我们关注的事,Jruby做为后框架时代的代表。不知道它的出现是昙花一现,还是确实有此潜力给市场重新洗牌,建立开源世界新秩序。Sun的开发工程师们正在放眼五月份Jruby 1.0的发布,从而带来Ruby语言的Java实现。Jruby真的会让Struts退出历史舞台?
Ruby是当今非常受欢迎的动态脚本语言之一,而有报告显示Jruby项目早在2002年在德国发起。发起者Nutter表示,“我们希望能把Ruby变成可以运行在JVM虚拟机上的一流的编程语言。”Sun公司更是推出了Jruby的初期版本让用户体验,更是为后期的强力推出造势。
难道这次Sun公司的重拳出击,真是会改变Struts未来的命运吗?笔者倒比较认同现就职于Intuit公司的架构师Martin Franklin的看法,现在Jruby并没做好了在企业中应用的准备,Jruby现在所处的阶段与Java在1995年和1996年的一样。(Martin Franklin他曾在Sun参与Java项目)。
Struts历史因素
回想起若干年前Struts的诞生,给J2EE开发带来巨大福音,那个时代的老一辈程序员们恨不得把它当成观世音在世礼顶膜拜。现在Spring、webWork、Tapestry、JSF 等后起之秀的慢慢成长,Struts长达五年的设计延续性,自然导致会在某些技术特性上已经落后于这些新兴的MVC框架。由于IT行业技术革新的脚步加快,新的框架出现,再加上各种猛烈的宣传攻势,Struts用户群体正在慢慢的萎缩。
从市场的角度看来,正是当年Struts的强势出击,才造就了现在的战略优势。我认为有个词来形容非常恰当----“先入为主”。Struts已经深入人心,有着相当高的知名度,面对想要跨入Java领域的新手群体来说,具有较强的选择优势。在当前的舆论氛围的影响下,Struts在一定层面上被视为入行的必备基础。
顺其自然,Struts也就拥有了完整的社区与庞大的用户群体,为企业应用提供了良好的网络环境与充实的人才储备。这里引用一位著名IT人士对Struts技术看法的一段话,“即使公司发生惨绝人寰的人事大变动,产品经理也不必过于惊惶失措,茫茫人海中,有大批的Struts们以供选择,只需好好考虑好新员工的业务培训如何开展即可,而对于技术延续性,则不必太过于担心。这也就是Struts 带来的战略性优势(对于公司而言,这一点往往是关键所在),其他MVC框架目前还无法在这点上与之并驾齐驱”。
Struts相对稳固的市场战略地位
Struts前期快速有效的市场占领,造就了Struts的品牌效应。在当时经典MVC框架廖廖无几的情况,Struts是值得推广的优秀技术方案,基本满足当时占市场主体的中小型企业应用,Struts的出现正好赢合了市场的迫切需求,为以后赢得稳固的战略性地位打下坚实的基础。简单而集中,效果迅速,激发一轮又一轮的用户加盟狂潮。当开发者一接触品牌,这些内容便迅速在头脑中反映出来,从这一意义上来讲,Struts品牌效应代表着Struts的市场。
那为什么是Struts相对稳固的市场战略地位呢?放眼开源世界,Struts的竞争对手已经兵临城下,Struts用户群体在流失。但是Struts足以应付中小型项目的开发,由于种种因素的影响,公司的决策层更愿意利用现有的Struts人力资源能够快速开发,达到盈利目的。相反,采用其他MVC框架由于人力优势相对匮乏,反而项目开发可能会冒很大的风险。
如果说单用Struts,无法完成需求的话,可以与现在的Hibernate, Spring 整合兼容在一起,使功能变得更强大。 Struts+Hibernate+Spring 也是现在中小型IT企业,开发的主流搭配。毕竟这个组合利用的是Struts清晰的分层结构,以及易与Hibernate,Spring等优秀J2EE框架整合的特性,正可谓“三管齐下,威力无穷”。Struts能和其他不同类型框架使用,开辟了第二战场,效果显著。
所以从某种角度上讲,Struts的稳固优势还将持续。
强强联手,双赢战略
在Struts的竞争对手中,WebWork的竞争力最为强劲的一个。WebWork经过这两年的冲刺,老感觉它后劲虽然强劲,但还是翻不过Struts这座大山。Struts占有很大市场,但在MVC框架上,还是匮乏新鲜的元素。
开源框架大行其道,逐步蚕食Struts市场份额。去年Struts与WebWork的合作,推出Struts2.0。这次强强联手是Struts绝地反击的一个重大决策,是对Struts在开源世界的一次激活行动,对其现有战略地位的一次强有力的巩固,具有相当的市场影响力。
Struts获得新的发展动力,而WebWork则吸引了更多的Struts的用户。Struts主动改变商业策略,再次赢得市场的主动,双赢战略发挥得光彩夺目。
行销学有句名言:“帮助你成长的是你的敌人”。
Struts2.0 期待再次飞跃
Struts2.0与以前的Struts1相比,有质的飞跃。我们从Struts2.0开发组的文档里可以发现:
1:Action 类:
• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个 ActionSupport基类去实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。可定置化处理,改变了Struts1不是使用接口编程的模式,全面面向灵活的接口编程
2:绑定值到页面(view):
• Struts 1使用标准JSP机制把对象绑定到页面中来访问。
• Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
3:Action执行的控制:
• Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
• Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
4:类型转换:
• Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。
由于篇幅关系,并没有罗列出所有的特性。列出的这几点我认为与开发密切相关,可以解决开发过程中通常遇见的问题。这些无疑是对Struts1版本设计上的完善,同时也加入了webWork基础特性。甩掉了了原来落后设计的同时,也与时俱进吸收了新兴MVC框架的精华。
笔者认为Struts2.0前景巨大, 还会与众多开源框架整合在一起,大放异彩,继续稳固自己的市场。Jruby虽然整合了Ruby,从市场的角度上讲,它还是刚起步的孩子。IT行业风云变幻,技术在关键是开发人员需求。时代是进步的,也许未来很多程序会转向Jruby,但在应用面上,Jruby也可能与Struts齐头并进。
编者语:
无论这些开源框架火拼成什么样子,最终的受益人还是用户,这是大家最乐意看到的。这个市场需要活跃元素,需要新鲜血液,共同繁荣IT行业。
参与者的加入能继续引发更多的探讨,不再拘束于一家之言。只有百花齐放、百家争鸣的环境,用户有了多种选择方案,才能对企业应用的构建认识得更加完善,促进和谐发展。
Jruby真的会把Struts挤出历史舞台?此时定论尚早。
0
相关文章