论坛首页 入门技术论坛

初学者如何开发出高质量J2EE系统

浏览 4100 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-03-21  



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或JavaClass实现一些功能或者包装携带数据,所以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或javaclass,但是如果要开发出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模式实现的(当然ejb3.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(框架)。

   推荐一套高质量的j2ee开源系 统: JPestore

   发表时间:2010-03-22  
LZ是在校学生?完全的技术派。实现这些JAVA EE/WEB规范的东东也不要太多,不只是TOMCAT,JBOSS,可不只是那些消息框架等等吧?
POJO好像叫 普通JAVA旧式对象吧?
目前用通用JAVA技术玩DOMAIN MODEL和PATTERNS的似乎不多。
0 请登录后投票
   发表时间:2010-03-22  
LZ应该看了不少书并总结了不少书呀?挺历害的呀 建议LZ不要当程序员(如果是的话),当一个sA 不错
0 请登录后投票
   发表时间:2010-03-22  
俺感觉像是个什么东西总结~~感觉有点熟悉~~难道之前看过~
0 请登录后投票
   发表时间:2010-03-22  
技术只是工具。。。技术机构才是最重要的。
0 请登录后投票
   发表时间:2010-03-22  
纠正一下,应该是java ee。
另外回答一下这个标题:
问:初学者如何开发出高质量J2EE系统
答:山无棱天地合,冬日雷雨夏日雪。

初学者开发不出高质量的系统,无论你用什么办法,使用什么工具。。。因为软件就是复杂的。
0 请登录后投票
   发表时间:2010-03-22  
当你做程序2年以后,你会觉得技术一切都是浮云.业务的理解才是王道.
什么spring,struts,hibernate不过就是用模式封装了应用而已.
0 请登录后投票
   发表时间:2010-03-22  
nothink 写道
当你做程序2年以后,你会觉得技术一切都是浮云.业务的理解才是王道.
什么spring,struts,hibernate不过就是用模式封装了应用而已.

0 请登录后投票
   发表时间:2010-03-22  
又要把做网站和J2EE放一起了,咳。。。。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics