J2EE系统的概念及如何开发

共计 3565 个字符,预计需要花费 9 分钟才能阅读完成。

文章比较老,不过也把 Java 开发的常用的方式、方向也说明了。

J2EE 开发三件宝: Domain Model(域建模)、patterns(模式)和 framework(框架)。

J2EE 系统的概念及如何开发

J2EE 学习者越来越多,J2EE 本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习 J2EE 学习方向。

首先我们需要知道 Java 和 J2EE 是两个不同概念,Java 不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以 Java 有时是指一种软件系统的流派,当然目前主要是.NET 和 Java 两大主流体系。

J2EE 可以说指 Java 在数据库信息系统上实现,数据库信息系统从早期的 dBase、到 Delphi/VB 等 C /S 结构,发展到 B /S(Browser 浏览器 /Server 服务器)结构,而 J2EE 主要是指 B /S 结构的实现。

J2EE 又是一种框架和标准,框架类似 API、库的概念,但是要超出它们。如果需要详细了解框架,可先从设计模式开始学习。

J2EE 是一个虚的大的概念,J2EE 标准主要有三种子技术标准:WEB 技术、EJB 技术和 JMS,谈到 J2EE 应该说最终要落实到这三个子概念上。

这三种技术的每个技术在应用时都涉及两个部分:容器部分和应用部分,Web 容器也是指 Jsp/Servlet 容器,你如果要开发一个 Web 应用,无论是编译或运行,都必须要有 Jsp/Servlet 库或 API 支持(除了 JDK/J2SE 以外)。

Web 技术中除了 Jsp/Servlet 技术外,还需要 JavaBeans 或 Java Class 实现一些功能或者包装携带数据,所以 Web 技术最初裸体简称为 Jsp/Servlet+JavaBeans 系统。

谈到 JavaBeans 技术,就涉及到组件构件技术(component),这是 Java 的核心基础部分,很多软件设计概念(设计模式)都是通过 JavaBeans 实现的。

JavaBeans 不属于 J2EE 概念范畴中,如果一个 JavaBeans 对象被 Web 技术(也就是 Jsp/Servlet)调用,那么 JavaBeans 就运行在 J2EE 的 Web 容器中;如果它被 EJB 调用,它就运行在 EJB 容器中。

EJB(企业 JavaBeans)是普通 JavaBeans 的一种提升和规范,因为企业信息系统开发中需要一个可伸缩的性能和事务、安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系统。

至此,JavaBeans 组件发展到 EJB 后,并不是说以前的那种 JavaBeans 形式就消失了,这就自然形成了两种 JavaBeans 技术:EJB 和 POJO,POJO 完全不同于 EJB 概念,指的是普通 JavaBeans,而且这个 JavaBeans 不依附某种框架,或者干脆可以说:这个 JavaBeans 是你为这个应用程序单独开发创建的。

J2EE 应用系统开发工具有很多:如 JBuilder、Eclipse 等,这些 IDE 首先是 Java 开发工具,也就是说,它们首要基本功能是可以开发出 JavaBeans 或 Java class,但是如果要开发出 J2EE 系统,就要落实到要么是 Web 技术或 EJB 技术,那么就有可能要一些专门模块功能 (如 eclipse 需要 lomboz 插件),最重要的是,因为 J2EE 系统区分为容器和应用两个部分,所以,在任何开发工具中开发 J2EE 都需要指定 J2EE 容器。

J2EE 容器分为 WEB 容器和 EJB 容器,Tomcat/Resin 是 Web 容器;JBoss 是 EJB 容器 +Web 容器等,其中 Web 容器直接使用 Tomcat 实现的。所以你开发的 Web 应用程序可以在上面两种容器运行,而你开发的 Web+EJB 应用则只可以在 JBoss 服务器上运行,商业产品 Websphere/Weblogic 等和 JBoss 属于同一种性质。

J2EE 容器也称为 J2EE 服务器,大部分时它们概念是一致的。

如果你的 J2EE 应用系统的数据库连接是通过 JNDI 获得,也就是说是从容器中获得,那么你的 J2EE 应用系统基本与数据库无关,如果你在你的 J2EE 应用系统耦合了数据库 JDBC 驱动的配置,那么你的 J2EE 应用系统就有数据库概念色彩,作为一个成熟需要推广的 J2EE 应用系统,不推荐和具体数据库耦合,当然这其中如何保证 J2EE 应用系统运行性能又是体现你的设计水平了。

衡量 J2EE 应用系统设计开发水平高低的标准就是:解耦性;你的应用系统各个功能是否能够彻底脱离?是否不相互依赖,也只有这样,才能体现可维护性、可拓展性的软件设计目标。

为了达到这个目的,诞生各种框架概念,J2EE 框架标准将一个系统划分为 WEB 和 EJB 主要部分,当然我们有时不是以这个具体技术区分,而是从设计上抽象为表现层、服务层和持久层,这三个层次从一个高度将 J2EE 分离开来,实现解耦目的。

因此,我们实际编程中,也要将自己的功能向这三个层次上靠,做到大方向清楚,泾渭分明,但是没有技术上约束限制要做到这点是很不容易的,因此我们还是必须借助 J2EE 具体技术来实现,这时,你可以使用 EJB 规范实现服务层和持久层,Web 技术实现表现层;

EJB 为什么能将服务层从 Jsp/Servlet 手中分离出来,因为它对 JavaBeans 编码有强制的约束,现在有一种对 JavaBeans 弱约束,使用 Ioc 模式实现的(当然 EJB 3.0 也采取这种方式),在 Ioc 模式诞生前,一般都是通过工厂模式来对 JavaBeans 约束,形成一个服务层,这也是是 Jive 这样开源论坛设计原理之一。

由此,将服务层从表现层中分离出来目前有两种可选架构选择:管理普通 JavaBeans(POJO)框架 (如 Spring、JdonFramework) 以及管理 EJB 的 EJB 框架,因为 EJB 不只是框架,还是标准,而标准可以扩展发展,所以,这两种区别将来是可能模糊,被纳入同一个标准了。但是,个人认为:标准制定是为某个目的服务的,总要牺牲一些换取另外一些,所以,这两种架构会长时间并存。

这两种架构分歧也曾经诞生一个新名词:完全 POJO 的系统也称为轻量级系统 (lightweight),其实这个名词本身就没有一个严格定义,更多是一个吸引人的招牌,轻量是指容易学习容易使用吗?按照这个定义,其实轻量 Spring 等系统并不容易学习;而且 EJB 3.0(依然叫 EJB)以后的系统是否可称为轻量级了呢?

前面谈了服务层框架,使用服务层框架可以将 JavaBeans 从 Jsp/Servlet 中分离出来,而使用表现层框架则可以将 Jsp 中剩余的 JavaBeans 完全分离,这部分 JavaBeans 主要负责显示相关,一般是通过标签库(taglib)实现,不同框架有不同自己的标签库,Struts 是应用比较广泛的一种表现层框架。

这样,表现层和服务层的分离是通过两种框架达到目的,剩余的就是持久层框架了,通过持久层的框架将数据库存储从服务层中分离出来是其目的,持久层框架有两种方向:直接自己编写 JDBC 等 SQL 语句(如 iBatis);使用 O /R Mapping 技术实现的 Hibernate 和 JDO 技术;当然还有 EJB 中的实体 Bean 技术。

持久层框架目前呈现百花齐放,各有优缺点的现状,所以正如表现层框架一样,目前没有一个框架被指定为标准框架,当然,表现层框架现在又出来了一个 JSF,它代表的页面组件概念是一个新的发展方向,但是复杂的实现让人有些忘而却步。

在所有这些 J2EE 技术中,虽然 SUN 公司发挥了很大的作用,不过总体来说:网络上有这样一个评价:SUN 的理论天下无敌;SUN 的产品用起来撞墙;对于初学者,特别是那些试图通过或已经通过 SUN 认证的初学者,赶快摆脱 SUN 的阴影,立即开溜,使用开源领域的产品来实现自己的应用系统。

最后,你的 J2EE 应用系统如果采取上面提到的表现层、服务层和持久层的框架实现,基本你也可以在无需深刻掌握设计模式的情况下开发出一个高质量的应用系统了。

还要注意的是: 开发出一个高质量的 J2EE 系统还需要正确的业务需求理解,那么域建模提供了一种比较切实可行的正确理解业务需求的方法,相关详细知识可从 UML 角度结合理解。

当然,如果你想设计自己的行业框架,那么第一步从设计模式开始吧,因为设计模式提供你一个实现 JavaBeans 或类之间解耦参考实现方法,当你学会了系统基本单元 JavaBean 或类之间解耦时,那么系统模块之间的解耦你就可能掌握,进而你就可以实现行业框架的提炼了,这又是另外一个发展方向了。

以上理念可以总结为一句话:

J2EE 开发三件宝: Domain Model(域建模)、patterns(模式)和 framework(框架)。

原文网址:http://www.javaresearch.org/article/31774.htm

正文完
 
zhaopeng
版权声明:本站原创文章,由 zhaopeng 2011-12-06发表,共计3565字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)