自从2000年Apache Struts出现以来,它在大多数的标准下都运行良好,帮助开发出了许许多多基于Java的Web应用程序。Struts是利用服务器端生成的HTML和客户端验证的Javascript的完美结合,使开发和维护变得更加容易。随着时间的推移,用户对Web应用程序的要求不断增加,Struts 1.0几乎还滞留于原地,给Web开发者留下了越来越多无趣的”衔接”代码,如何才能建立一个完美的框架结合体呢?
Struts的前世今生
在JavaOne 2005大会上,一些Struts的开发者们与Rich Feit(Apache蜂巢计划的提交者)还有一些Struts的用户共聚一堂,讨论Struts的未来。与会者提出了Struts Ti的项目,它描述了这样一个框架,能够集众家所长,重新组合成一个堪称完美的框架。可是Struts本身的问题出现了,Struts 1.0的代码库不适合大幅度的改进,而它本身的特性设置也相当有限,缺乏了像Ajax的快速和可扩展性。
同样在JavaOne会上,笔者还与Webwork的核心架构师Jason Carreira讨论了关于OpenSymphony WebWork 2的项目,探讨我们如何能更好地协同工作。对于在XWork上进行开发,笔者还是十分感兴趣的,特别是它们核心的命令模式框架,但Jason Carreira建议笔者直接在WebWork 2上进行开发。当我和Rich使用了最初几个Struts Ti的版本后,我们决定采纳Jason的建议。
我们认为,Struts应该满足高级应用程序的需求,并且在WebWork 2框架中的开发经历也证明了这点,Rich和笔者大多数时间都与一位WebWork 2的高级开发者Patrick Lightbody一起工作,在这段时期内,Patrick和Spring WebFlow项目的创建者Keith Donald从各个角度考虑了关于一个全新的Web框架的构想,希望能将它们结合在一起,也就是将Keith的Spring WebFlow和Ted Husted与笔者的Struts以及Patrick和Jason的WebWork与Rich的Beehive结合在一起,探讨了将这些平台结合到一个框架中的可能性。
不幸的是,细节方面的困难出现了,Beehive和WebFlow无法将其压缩和转换方面的特性进一步融合,同时还有项目的所有者、商标以及身份等问题,不久,这个团队就解散了。
我们不想就这样解散,笔者和Ted(Apache软件基金会的成员)开始与Patrick(WebWork 2的高级开发者)和Jason(Webwork核心架构师)探讨如何能让我们更好地合作,Ted产生了Struts与WebWork合并的想法。
由于Struts Ti还是基于WebWork设计的,那么将WebWork的代码转向Struts项目并不是件难事。我们在一月开始了关于WebWork 2的Apache Incubator进程,并完成了WebWork 2代码。
Struts 2的由来
同时,Struts本身也在为项目的核心识别,进行了激烈的竞争,到底它是不是多重Web框架,Struts包括了Apache Shale,它是一个包含了JSF的Web框架。作为一个Struts的子项目,有着Struts Action 1(现在称之为Struts 1)与Struts Action 2(完成了的WebWork 2代码)的一些特征。不幸的是,这些子项目让开发者们有些混淆不清,他们都用一个单一框架表示”Struts”。
在尝试将Struts Action 2与Shale的子项目结合到一个单独的Struts 2之后,Shale的开发者意识到,如果这些能成为他们以后工程中的开发框架,也是不错的选择。Struts Action 2很快就更名为简洁的Struts 2。
如今,Apache Struts项目已经有它的框架的两个主要版本,但它仍是一个基于Action的框架项目。并且WebWork仍然在定期发布程序补丁,直到Struts 2达到GA或是最终稳定,但所有新的开发却都是使用Struts 2代码。
由此看来,想要在Struts与WebWork的合并中寻找什么奇迹是不可能的,还是另寻途径更好。但是我们不会放弃当初Struts Ti的构想,为将来做出一个集众家所长的完美框架而努力。
编后:作者在其BLOG中声称,写作本文的目的是为了说清楚Struts 2.0项目的由来,以及为什么它包含了WebWork 2代码。合并的本身就是一件难处理的事,甚至在开源社区也能看到端倪,两个项目之间构成一个好的合并,是非常罕见的,且还需要经过争辩,同时也希望合并的热潮能遍布开源的世界。
分享到:
相关推荐
作者:(美国)Donald Brown (美国)Chad Michael Davis (美国)Scott Stanlick 译者:马召 等 Donald Brown,Atlassian软件系统公司托管服务的首席软件工程师和Apache软件基金会成员,参与开发了Slruts及多个ApacheC0...
美国质量工程师(CQE)考试题收集.pdf
### 美国大数据工程师面试宝典 #### 一、硅谷高科技公司介绍 - **20年前**:硅谷的标志性企业包括Intel、Oracle、AMD、Apple、Cisco等。 - **10年前**:Google、Yahoo、eBay成为新兴力量。 - **现在**:Tesla、...
英文原版!可编辑复制的PDF文档,美国机械工程师手册英文版。Machinery's Handbook 26th Edition。文件有35M,大家要把两个部分全部下载才能解压。
**说明**:该配置项对于某些高级场景非常有用,比如在处理泛型时,需要根据实际类型来确定对象类型。默认情况下使用`com.opensymphony.xwork2.util.DefaultObjectTypeDeterminer`来处理类型检测。 ##### 9. `struts...
AutoCAD高级工程师认证是对用户在使用AutoCAD进行复杂设计和高级功能操作能力的肯定。以下是一些基于模拟考题的知识点: 1. 图纸览表(Sheet Set Manager):在“编辑图纸—览表来设立”对话框中,用户可以更改表格...
美国期货专家经验谈.doc
可编辑的PDF文档,美国机械工程师手册英文版。Machinery's Handbook 26th Edition。文件有35M,大家要把两个部分全部下载才能解压。
《AutoCAD高级工程师》认证是对用户在AutoCAD应用技能的高度认可,该认证涵盖了一系列高级操作和技术知识。 1. 图纸集和图纸集参照在进行电子传递时,"创建传递"对话框中的选项差异在于是否包含文件树与文件表的...
《Struts 2实战》结合实例介绍了Struts 2框架,主要内容包括Action、Result、Interceptor等框架组件,基于注解的配置选项等新特征,Struts 2插件 FreeMarker,如何从Struts 1和WebWork 2迁移到Struts 2,Ajax标签、...
SAE标准中文版_美国汽车工程师协会标准中文版目录.pdf
老网络工程师的忠告 作为一名老网络工程师,该工程师总结了自己多年的经验,对年轻工程师提出了十条忠告,这些建议涵盖了职业发展、技术能力、人际交往、自我完善等多个方面。 首先,老工程师强调了规划自己的路的...
Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品:Struts 1和Struts 2。 Apache Struts 2.3.5 - 2.3.31版本...
### 美国工程师考试参考手册(包括计算机工程师) #### 概述 美国工程师考试(Fundamentals of Engineering Exam,简称FE Exam)是一项重要的职业资格认证考试,旨在评估考生是否具备成为一名合格工程师的基础知识...
例如,`messageResource_en_US.properties`代表英文美国地区的消息资源文件。在这里,你可以定义各种语言环境下显示的文本,以适应全球化的应用需求。 接下来,集成Spring框架的配置。Spring主要负责管理Bean的生命...
在Struts2中,我们可以创建名为`messages.properties`的默认资源文件,并根据需要为不同的语言和地区创建对应的文件,如`messages_en_US.properties`(美国英语)和`messages_zh_CN.properties`(简体中文)。...
《IEEE——美国电气电子工程师标准》是一本权威的工程技术指南,专门为电气工程师和设计者提供指导。这本书集合了IEEE(Institute of Electrical and Electronics Engineers)的各类标准,这些标准在全球范围内广泛...
赖世雄 高级 美国英语 教程 全 pdf 书 学习精准美语都需要