开发J2EE应用应遵循的几点原则 |
作者:佚名 发布时间:2005-04-02 来源:不详
|
J2EE,作为开发mi 内容广,从而给开发J2EE应 能的方法有JDBC、Entity B 、JAXB等方法(其中一些方 层、控制层、商业逻辑层等 很多。加上,J2EE本身的快
|
ssion-critical的企业级应用的 用带来了很多“麻烦”。比如, eans、JDO、O/R Mapping工具( 法不是J2EE规范所包含的)。因 3层)以及层与层之间的耦合,J 速发展,给架构、开发具有工业
|
一整套规范的整合平台,规范多、 为实现内容的RDBMS存储,我们可 TopLink、Hibernate)、XML-DBMS 此,为实现J2EE各层(至少有表示 2EE系统架构师需要考虑的问题会 强度的J2EE应用带来一些难题。
|
同时,软件开发技 我们在结合具体商业需求的 人以往的项目经验入手,来 用。本文结合JBoss 3.2.1
|
术从来就没有“银弹”,所以J2 基础上,合理的应用好J2EE技术 探讨开发J2EE应用时应该遵循的 下的J2EE应用开发为例展开论述
|
EE技术也不是万能的。但是,如果 ,其结果可想而知。本文试图从本 几点准则,希望起到抛砖引玉的作 。
|
如果脱离商业需求 定背景,其中很多都是来自 稳定、安全、可靠、高效、 些时候需要考虑与原有遗留 系统的架构显得很关键。
|
,而单独的讨论技术本身的优势 工业需求而触动的。一般而言, 便于维护。同时,各个企业信息 系统的集成,所以了解各个企业
|
是不够的。各项技术都有产生的特 企业信息系统(EIS)都要求自己 系统都有自己独特的要求,可能有 信息系统具体的商业需求对于整个
|
比如,如果待开发的J2EE应用系 数据可能是通过JDBC直接从外在数据源导 ,如果在开发过程中,仅仅使用JDBC来操 少)的情形,显然是比较合适的;但如果 用较为频繁的情形,则显得有些力不从心 Beans with Caches。打个比方,在JBoss 时可以考虑使用,,即“Standard CMP 2 commit-option来保证Entity Beans的内 (同直接使用JDBC相比)。其中,可以将 当然,在这里也可以采用其他一些O/R Ma
|
统中使用到的数据大部分来自于外在数据源;而这些 入到待开发的J2EE系统的Database中。对于这种情形 作数据库,对于小强度(并发访问用户少、数据流量 ,并发访问用户较多、数据流量大,对Database层使 。因此,对于这种需求,我们可以考虑采用Entity 3.2.1中对于Entity Beans的Cache策略有多种,这 .x EntityBean”,方式并采用“D”类型的 容与数据源的同步,并使得系统的性能得到大大改善 一些Entity Beans设置为read-only,以改善性能。 pping技术,比如TopLink。
|
再比如,考虑这样一种情形:如 身生成和操作的,则建议采用:CMP Enti 可能与EJB 1.1给大家留下的坏映象有关 Local Interfaces、CMR、Read-Only、Se ,并发用户多、数据流量很大时才会体现 要注重Entity Beans技术的性能调优,各 JBoss 3.2.1,配置文件standardjboss.x Bean Lock策略的合理使用对于Entity Be 关注于系统的商业逻辑,而不只是底层的 处在J2EE性能的高端,而不是底端,即Da 数据库移植性大打折扣。)。
|
果待开发的企业信息系统使用到的数据都是由系统本 ty Beans技术。Entity Beans给大家的印象很坏,这 吧。但是,EJB 2.0(或者说2.1)得到了很大的改善, ssion Fa?ade模式给Entity Beans注入了活力。当然 出使用Entity Beans的优势。其中,有一点很关键: 个应用服务器都有自己的一套性能调优方案。对于 ml提供了Entity Beans技术调优的入口。比如, ans的调优就显得很重要。这样使得,我们可以更加 Database(EJB调优处于EJB Container中,因此我们 tabase层。同时,Database层的调优使得J2EE系统的
|
简而言之,要结合 的论述技术本身的好坏。
|
各个系统的特定需求和状况给出
|
具体的技术架构方案,而不能孤单
|
设计模式在J2EE应用系统中扮演 自己来实现具体的设计模式,还是借助于 公司不想在J2EE基础应用Framework投入 J2EE Specification兼容的技术框架会比
|
着重要的角色。因此,有一个问题摆在大家面前,是 Third-party Framework。如果贵公司不大,或者说 很多精力,选用现有的较为成熟的、稳定、与现有 较明智。
|
一般而言,Framew 、规则,比如业务代理、Se 到统一管理有限资源、Cach 等。现有的J2EE Framework
|
ork本身,或者说J2EE平台本身 rvice Locator(包括Web Tier e相关资源的作用,便于系统移 比较丰富。比如:
|
都是实现并优化了具体的设计模式 和EJB Tier各自的服务定位器,起 植)、Front Controller、DAO等
|
Struts: 对于实现 技术的成熟),选用她是一 、对后端数据操作方式没有 是开发J2EE应用的佳品。同 ,Struts本身可考虑到与JS 层、EJB呈现数据存储层。 技术的完美应用。
|
了Model 2类型的Framework,对 种明智之举。目前,Struts已经 限定、集合了Apache Jakarta项 时,对于具有.NET Web Forms功 F的兼容和集成性。比如,通过J 各层之间,可以通过值对象、HT
|
于现在以及将来(随着JSF规范、 发展到1.1版本。其内在的MVC主线 目组的优秀相关项目的精华,可谓 能的下一代J2EE平台技术JSF而言 SP呈现表示层、Servlet呈现控制 TP相关对象来通讯,实现J2EE相关
|
Log4j: 我想对于 家的福音。尽管Java 2 Sta Log4j的简单、高效、灵活 定性、正确性,所以采用可 的兼容性)是不会错的。比
|
习惯采用“System.out.println ndard Edition也具备java.util 已经成了很多项目的选择。日志 配置的Log4j(目前,Log4j已经 如,JBoss 3.2.1本身就是借助
|
(“”);”的读者而言,Log4j是大 .logging包来保证日志的输出,但 ,在某种程度上可以考验系统的稳 考虑到了与java.util.logging包 于Log4j来管理日志的。
|
realMethods: 可能有些读者还 realMethods是一开发J2EE应用的Framewo 用前端);realMethods对于J2EE应用的各 以前还是商用软件,现在已经成为了Open
|
不知道这一款杀手锏。那好,这里就简要作一介绍。 rk,她不同于Struts(主要在于实现Model 2,J2EE应 个层面都有详尽、高效的支持。同时,realMethods Source的产品,因此现在可以参看其全部源代码。
|
BC4J: Oracle公司推出的用于Ja 喻。
|
va的商业组件。其内容和外在的特点和优势,不言而
|
当然,类似的Fram Framework加以筛选,选择
|
ework很多很多。作为开发J2EE 适合项目需求、团队、公司发展
|
应用的团队而言,我们需要对各种 方向的框架。
|
一般情况下,待开 展很快,过多的Framework ,比如研究realMethods实 Framework本身会有变动, 选择的使用现有的成熟Fram
|
发的目标产品不宜采用过多的Fr 使得系统的后续升级、维护不利 现的相应的设计模式,并改造她 如果选用过多,会给开发团队加 ework能提升大家的开发效率、
|
amework。其一,J2EE各个技术发 ;其二,可以借鉴其中的好的一面 以适合我们的项目需求;其三, 重负担,从而不利于项目管理。有 开发水平。
|
开发J2EE应用要求目标开发人员 。作为一个团队,每个人都有自己不同的 社会分工。一般情况下,我们的开发团队 往往只有3种(也可能是两种):美工、J 重沟通、交流,注重代码的一致性。
|
能够掌握其中的各种技术。但是,现实情况不是这样 技能优势、兴趣以及悟性。同时,J2EE本身需要体现 不会有Specification所要求的各个开发角色。现实 SP程序员、EJB程序员。面对这种分工,团队更要注
|
一般情况下,团队 运行版本。经过一段时间, 于代码的管理、控制和备份 控制工具的使用、建模工具
|
要尽量采用版本控制工具管理代 团队都会适应这种开发模式。其 。这其中会牵扯到很多层面。比 的合理使用有助于团队有效的沟
|
码、尽量做到每天都有一个完整的 中,版本控制工具一定要使用,便 如,开发工具的选择要考虑到版本 通和交流。
|
基于现有的开发模 具、采用JBuilder作为IDE J2EE应用开发阶段的服务器 者JCreator)、Ant、XDocle
|
式,个人认为这样3套方案不错 工具、采用VSS(或者CVS)作为版 。第二,采用WebSphere Studio ts作为开发工具。
|
。第一,采用Together作为建模工 本控制工具、采用JBoss作为开发 整套工具。第三,采用Eclipse(或
|
当然,手工完成J2EE应用的编写 发阶段的具体细节。但本人认为,只要开 模、开发工具是明智的。开发工具不能提 确的开发方向。比如,JBuidler 9 Enterp Session Fa?ade + Value Object”等功
|
、编译、打包、部署、测试更能使开发者理解各个开 发者有这种关注具体细节的态度,选用功能强大的建 高开发人员的开发技能,但是她能够引导开发人员正 rise提供的EJB精灵具有的“Struts + EJB + 能呈现了业界广泛应用的J2EE构架方式。
|
测试工作往往是很 加项目的成本。但是,他们 如果软件质量很差,并没有 费用。
|
多项目经理忽视,不愿意去花费 忽视了,项目的完成质量往往对 经历测试阶段,其后期部署、运
|
时间、费用的内容,因为那样会增 项目的成本有很大的关系。比如, 行所带来的费用会远远超过前期的
|
测试是分阶段的。单元测试,比 ,来保证系统没有内存泄漏等内容。其中 、Code Coverage、Thread Debugger等内 在内容泄漏,但是想了很多办法都没有解 在开发应用,我们很多时候都采用Optimi 做集成测试过程中,检查系统的内存泄漏
|
如借助于JUnit,来保证功能正确等内容。集成测试 ,Optimizeite Suite Enterprise对于完成Profiler 容很有帮助。我记得,我写的一个Swing桌面应用存 决问题。后来,采用Profiler获得了答案。因此,现 zeite Suite Enterprise作为测试工具。尤其是,在 、性能很有帮助。
|
测试是分类型的。 很好的测试工具。但是,一
|
压力测试、性能测试。就目前对 般情况下,借助于Rational Rob
|
支持J2EE应用的测试而言,并没有 ot也能够取得不错的效果。
|
当然,成功开发J2 与底层Database的设计有关 剧下降);如何最大化挖掘
|
EE应用的因素有很多。比如,En 系(如果表结构设计设计的不合 、提升团队各个成员的J2EE技能
|
tity Beans的成功应用很大程度上 理,将导致Entity Beans性能的急 。等等这些,设计面很广。
|
|
|
|
|
|