引言
在过去的几乎整整十年中,人们编写了很多有关 Java Platform, Enterprise Edition (Java EE) 最佳实践的内容。现在有十多本书籍 和数以百计(可能更多)的文章,提供了关于应该如何编写 Java EE 应用程序的 见解。事实上,这方面的参考资料如此之多,并且这些参考资料之间往往还存在 着一些矛盾的建议,以至于在这些混杂的内容中进行学习本身也成为了采用 Java EE 的障碍。因此,为了给刚进入这个领域的客户提供一些简单的指导,我们汇编 了这个最重要的最佳实践列表,其中包括我们认为最重要和最有效的 Java EE 最 佳实践。遗憾的是,我们无法仅在 10 大最佳实践中描述所有需要介绍的内容。 因此,为了避免遗漏关键的最佳实践和尊重 Java EE 的发展,我们的列表中包含 了“19 大”关键的 Java EE 最佳实践。
1. 始终使用 MVC 框 架。
将业务逻辑(Java Bean 和 EJB 组件)从控制器逻辑 (Servlet/Struts 操作)和表示逻辑(JSP、XML/XSLT)中清晰地分离出来。良 好的分层可以带来许多好处。
这项实践非常重要,以致没有其他最佳实践 可以与其相提并论。对于良好的 Java EE 应用程序设计而言,模型-视图-控制器 (MVC) 是至关重要的。它将程序的任务简单地分为下面几个部分:
负责业 务逻辑的部分(模型,通常使用 Enterprise JavaBeans 或传统 Java 对 象来实现)。
负责用户接口表示的部分(视图)。
负责应用程序 导航的部分(控制器,通常使用 Java Servlet 或类 Struts 控制器这样相关的 类来实现)。
对于 Java EE,有许多关于这个主题的优秀评论,我们特别 推荐感兴趣的读者可以参考 [Fowler] 或者 [Brown](请参见参考资料部分)的 评论,以便全面和深入地了解相关内容。
如果不遵循基本的 MVC 体系结 构,在开发过程中就会出现许多的问题。最常见的问题是,将过多的任务放到该 体系结构的视图部分中。可能存在使用 JSP 标记来执行数据库访问,或者在 JSP 中进行应用程序的流程控制,这在小规模的应用程序中是比较常见的,但是,随 着后期的开发,这样做将会带来问题,因为 JSP 逐步变得越来越难以维护和调试 。
类似地,我们也经常看到将视图层构建到业务逻辑的情况。例如,一个 常见的问题就是将在构建视图时使用的 XML 解析技术直接应用到业务层。业务层 应该对业务对象进行操作,而不是对与视图相关的特定数据表示进行操作。
然而,仅仅使用适当的组件无法实现应用程序的正确分层。我们常常见到 一些应用程序包含 Servlet、JSP 和 EJB 组件所有这三项,然而,其主要的业务 逻辑却是在 Servlet 层实现的,或者应用程序导航是在 JSP 中处理的。您必须 对代码进行严格的检查和重构,以确保仅在模型层中处理业务逻辑,在控制器层 中进行应用程序导航,而视图应该只关心如何将模型对象呈现为合适的 HTML 和 Javascript。
本文中这项建议的涵义应该比原始版本中的更加清 楚。用户接口技术不断地发生着变化,将业务逻辑关联于用户接口,会使得对接 口的更改影响到现有的系统。几年之前,Web 应用程序用户接口开发人员可能从 Servlet 和 JSP、Struts 和 XML/XSL 转换中进行选择。在那以后,Tiles 和 Faces 非常流行,而现在,AJAX 大行其道。如果每当首选的用户接口技术发生了 更改就要重新开发应用程序的核心业务逻辑,那么就糟透了。