UML软件工程组织

开发J2EE应用遵循的几点关键问题 (2)
作者:罗时飞
  Log4j: 我想对于习惯采用“System.out.println(“”);”的读者而言,Log4j是大家的福音。尽管Java 2 Standard Edition也具备java.util.logging包来保证日志的输出,但Log4j的简单、高效、灵活已经成了很多项目的选择。日志,在某种程度上可以考验系统的稳定性、正确性,所以采用可配置的Log4j(目前,Log4j已经考虑到了与java.util.logging包的兼容性)是不会错的。比如,JBoss 3.2.1本身就是借助于Log4j来管理日志的。

 realMethods: 可能有些读者还不知道这一款杀手锏。那好,这里就简要作一介绍。realMethods是一开发J2EE应用的Framework,她不同于Struts(主要在于实现Model 2,J2EE应用前端);realMethods对于J2EE应用的各个层面都有详尽、高效的支持。同时,realMethods以前还是商用软件,现在已经成为了Open Source的产品,因此现在可以参看其全部源代码。

 BC4J: Oracle公司推出的用于Java的商业组件。其内容和外在的特点和优势,不言而喻。

 当然,类似的Framework很多很多。作为开发J2EE应用的团队而言,我们需要对各种Framework加以筛选,选择适合项目需求、团队、公司发展方向的框架。

 一般情况下,待开发的目标产品不宜采用过多的Framework。其一,J2EE各个技术发展很快,过多的Framework使得系统的后续升级、维护不利;其二,可以借鉴其中的好的一面,比如研究realMethods实现的相应的设计模式,并改造她以适合我们的项目需求;其三,Framework本身会有变动,如果选用过多,会给开发团队加重负担,从而不利于项目管理。有选择的使用现有的成熟Framework能提升大家的开发效率、开发水平。

 3,开发模式的选择

 开发J2EE应用要求目标开发人员能够掌握其中的各种技术。但是,现实情况不是这样。作为一个团队,每个人都有自己不同的技能优势、兴趣以及悟性。同时,J2EE本身需要体现社会分工。一般情况下,我们的开发团队不会有Specification所要求的各个开发角色。现实往往只有3种(也可能是两种):美工、JSP程序员、EJB程序员。面对这种分工,团队更要注重沟通、交流,注重代码的一致性。

 一般情况下,团队要尽量采用版本控制工具管理代码、尽量做到每天都有一个完整的运行版本。经过一段时间,团队都会适应这种开发模式。其中,版本控制工具一定要使用,便于代码的管理、控制和备份。这其中会牵扯到很多层面。比如,开发工具的选择要考虑到版本控制工具的使用、建模工具的合理使用有助于团队有效的沟通和交流。

 基于现有的开发模式,个人认为这样3套方案不错。第一,采用Together作为建模工具、采用JBuilder作为IDE工具、采用VSS(或者CVS)作为版本控制工具、采用JBoss作为开发J2EE应用开发阶段的服务器。第二,采用WebSphere Studio整套工具。第三,采用Eclipse(或者JCreator)、Ant、XDoclets作为开发工具。

 当然,手工完成J2EE应用的编写、编译、打包、部署、测试更能使开发者理解各个开发阶段的具体细节。但本人认为,只要开发者有这种关注具体细节的态度,选用功能强大的建模、开发工具是明智的。开发工具不能提高开发人员的开发技能,但是她能够引导开发人员正确的开发方向。比如,JBuidler 9 Enterprise提供的EJB精灵具有的“Struts + EJB + Session Fa?ade + Value Object”等功能呈现了业界广泛应用的J2EE构架方式。

 4,注重各个阶段的测试工作

 测试工作往往是很多项目经理忽视,不愿意去花费时间、费用的内容,因为那样会增加项目的成本。但是,他们忽视了,项目的完成质量往往对项目的成本有很大的关系。比如,如果软件质量很差,并没有经历测试阶段,其后期部署、运行所带来的费用会远远超过前期的费用。

 测试是分阶段的。单元测试,比如借助于JUnit,来保证功能正确等内容。集成测试,来保证系统没有内存泄漏等内容。其中,Optimizeite Suite Enterprise对于完成Profiler、Code Coverage、Thread Debugger等内容很有帮助。我记得,我写的一个Swing桌面应用存在内容泄漏,但是想了很多办法都没有解决问题。后来,采用Profiler获得了答案。因此,现在开发应用,我们很多时候都采用Optimizeite Suite Enterprise作为测试工具。尤其是,在做集成测试过程中,检查系统的内存泄漏、性能很有帮助。

 测试是分类型的。压力测试、性能测试。就目前对支持J2EE应用的测试而言,并没有很好的测试工具。但是,一般情况下,借助于Rational Robot也能够取得不错的效果。

 当然,成功开发J2EE应用的因素有很多。比如,Entity Beans的成功应用很大程度上与底层Database的设计有关系(如果表结构设计设计的不合理,将导致Entity Beans性能的急剧下降);如何最大化挖掘、提升团队各个成员的J2EE技能。等等这些,设计面很广。

 

版权所有:UML软件工程组织