J2EE可以说指Java在数据库信息pȝ上实玎ͼ数据库信息系l从早期的dBase、到Delphi/VB{C/Sl构Q发展到B/SQBrowser览?Server服务器)(j)l构Q而J2EE主要是指B/Sl构的实现?/P>
J2EE又是一U框架和标准Q框架类似API、库的概念,但是要超出它们。如果需要详l了(jin)解框Ӟ可先从设计模式开始学?fn)?/P>
J2EE是一个虚的大的概念,J2EE标准主要有三U子技术标准:(x)WEB技术、EJB技术和JMSQ谈到J2EE应该说最l要落实到这三个子概念上?/P>
q三U技术的每个技术在应用旉涉及(qing)两个部分Q容器部分和应用部分QW(xu)eb容器也是指Jsp/Servlet容器Q你如果要开发一个Web应用Q无论是~译或运行,都必要有Jsp/Servlet库或API支持Q除?jin)JDK/J2SE以外Q?/P>
Web技术中除了(jin)Jsp/Servlet技术外Q还需要JavaBeans或Java Class实现一些功能或者包装携带数据,所以Web技术最初裸体简UCؓ(f)Jsp/Servlet+JavaBeanspȝ?/P>
谈到JavaBeans技术,涉?qing)到lg构g技术(componentQ,q是Java的核?j)基部分Q很多Y件设计概念(设计模式Q都是通过JavaBeans实现的?/P>
JavaBeans不属于J2EE概念范畴中,如果一个JavaBeans对象被Web技术(也就是Jsp/ServletQ调用,那么JavaBeansp行在J2EE的Web容器中;如果它被EJB调用Q它?yu)p行在EJB容器中?/P>
EJBQ企业JavaBeansQ是普通JavaBeans的一U提升和规范Q因Z业信息系l开发中需要一个可伸羃的性能和事务、安全机Ӟq样能保证企业系l^滑发展,而不是发展到一U规模重新更换一套Y件系l?/P>
xQJavaBeanslg发展到EJB后,q不是说以前的那UJavaBeans形式消׃(jin)Q这p然Ş成了(jin)两种JavaBeans技术:(x)EJB和POJOQPOJO完全不同于EJB概念Q指的是普通JavaBeansQ而且q个JavaBeans不依附某U框Ӟ或者干脆可以说Q这个JavaBeans是你个应用程序单独开发创建的?/P>
J2EE应用pȝ开发工h很多Q如JBuilder、Eclipse{,q些IDE首先是Java开发工P也就是说Q它们首要基本功能是可以开发出JavaBeans或Java classQ但是如果要开发出J2EEpȝQ就要落实到要么是Web技术或EJB技术,那么有可能要一些专门模块功?如eclipse需要lomboz插g)Q最重要的是Q因为J2EEpȝ区分为容器和应用两个部分Q所以,在Q何开发工具中开发J2EE都需要指定J2EE容器?/P>
J2EE容器分ؓ(f)WEB容器和EJB容器QTomcat/Resin是Web容器QJBoss是EJB容器+Web容器{,其中Web容器直接使用Tomcat实现的。所以你开发的Web应用E序可以在上面两U容器运行,而你开发的Web+EJB应用则只可以在JBoss服务器上q行Q商业品Websphere/Weblogic{和JBoss属于同一U性质?/P>
J2EE容器也称为J2EE服务器,大部分时它们概念是一致的?/P>
如果你的J2EE应用pȝ的数据库q接是通过JNDI获得Q也是说是从容器中获得Q那么你的J2EE应用pȝ基本与数据库无关Q如果你在你的J2EE应用pȝ耦合?jin)数据库JDBC驱动的配|,那么你的J2EE应用pȝ有数据库概念色彩,作ؓ(f)一个成熟需要推q的J2EE应用pȝQ不推荐和具体数据库耦合Q当然这其中如何保证J2EE应用pȝq行性能又是体现你的设计水^?jin)?/P>
衡量J2EE应用pȝ设计开发水q高低的标准是Q解耦性;你的应用pȝ各个功能是否能够dqQ是否不怺依赖Q也只有q样Q才能体现可l护性、可拓展性的软g设计目标?/P>
Z(jin)辑ֈq个目的Q诞生各U框架概念,J2EE框架标准一个系l划分ؓ(f)WEB和EJB主要部分Q当然我们有时不是以q个具体技术区分,而是从设计上抽象现层、服务层和持久层Q这三个层次从一个高度将J2EE分离开来,实现解耦目的?/P>
因此Q我们实际编E中Q也要将自己的功能向q三个层ơ上靠,做到大方向清楚,泾渭分明Q但是没有技术上U束限制要做到这Ҏ(gu)很不Ҏ(gu)的,因此我们q是必须借助J2EE具体技术来实现Q这Ӟ你可以用EJB规范实现服务层和持久层,W(xu)eb技术实现表现层Q?/P>
EJBZ么能服务层从Jsp/Servlet手中分离出来Q因为它对JavaBeans~码有强制的U束Q现在有一U对JavaBeansq束,使用Ioc模式实现的(当然EJB 3.0也采取这U方式)(j)Q在Ioc模式诞生前,一般都是通过工厂模式来对JavaBeansU束QŞ成一个服务层Q这也是是Jiveq样开源论坛设计原理之一?/P>
由此Q将服务层从表现层中分离出来目前有两U可选架构选择Q管理普通JavaBeansQPOJOQ框?如Spring、JdonFramework)以及(qing)理EJB的EJB框架Q因为EJB不只是框Ӟq是标准Q而标准可以扩展发展,所以,q两U区别将来是可能模糊Q被U_同一个标准了(jin)。 但是Q个为:(x)标准制定是ؓ(f)某个目的服务的,总要牺牲一些换取另外一些,所以,q两U架构会(x)长时间ƈ存?/P>
q两U架构分歧也曄诞生一个新名词Q完全POJO的系l也UCؓ(f)轻量U系l?lightweight)Q其实这个名词本w就没有一个严格定义,更多是一个吸引h的招牌,轻量是指Ҏ(gu)学习(fn)Ҏ(gu)使用吗?按照q个定义Q其实轻量Spring{系lƈ不容易学?fn);而且EJB 3.0Q依然叫EJBQ以后的pȝ是否可称量?jin)呢Q?/P>
前面谈了(jin)服务层框Ӟ使用服务层框架可以将JavaBeans从Jsp/Servlet中分d来,而用表现层框架则可以将Jsp中剩余的JavaBeans完全分离Q这部分JavaBeans主要负责昄相关Q一般是通过标签库(taglibQ实玎ͼ不同框架有不同自q标签库,Struts是应用比较广泛的一U表现层框架?/P>
q样Q表现层和服务层的分L通过两种框架辑ֈ目的Q剩余的是持久层框架了(jin)Q通过持久层的框架数据库存储从服务层中分d来是其目的,持久层框架有两种方向Q直接自q写JDBC{SQL语句Q如iBatisQ;使用O/R Mapping技术实现的Hibernate和JDO技术;当然q有EJB中的实体Bean技术?/P>
持久层框架目前呈现百花齐放,各有优缺点的现状Q所以正如表现层框架一P目前没有一个框架被指定为标准框Ӟ当然Q表现层框架现在又出来了(jin)一个JSFQ它代表的页面组件概忉|一个新的发展方向,但是复杂的实现让人有些忘而却步?/P>
在所有这些J2EE技术中Q虽然SUN公司发挥?jin)很大的作用Q不qM来说Q网l上有这样一个评P(x)SUN的理论天下无敌;SUN的品用h撞墙Q对于初学者,特别是那些试N过或已l通过SUN认证的初学者,赶快摆脱SUN的阴影,立即开溜,使用开源领域的产品来实现自q应用pȝ?/P>
最后,你的J2EE应用pȝ如果采取上面提到的表现层、服务层和持久层的框架实玎ͼ基本你也可以在无需深刻掌握设计模式的情况下开发出一个高质量的应用系l了(jin)?/P>
q要注意的是: 开发出一个高质量的J2EEpȝq需要正的业务需求理解,那么域徏模提供了(jin)一U比较切实可行的正确理解业务需求的Ҏ(gu)Q相兌l知识可从UML角度l合理解?/P>
当然Q如果你惌计自q行业框架Q那么第一步从设计模式开始吧Q因计模式提供你一个实现JavaBeans或类之间解耦参考实现方法,当你学会(x)?jin)系l基本单元JavaBean或类之间解耦时Q那么系l模块之间的解耦你可能掌握,q而你可以实现行业框架的提炼?jin),q又是另外一个发展方向了(jin)?/P>
以上理念可以ȝZ句话Q?BR>J2EE开发三件宝: Domain ModelQ域建模Q、patternsQ模式)(j)和frameworkQ框Ӟ(j)?/P>