板桥里h http://www.jdon.com 2005/06/20
J2EE学习者越来越多,J2EE本n技术不断在发展Q涌现出各种概念Q本文章试图从一U容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向?/P>
首先我们需要知道Java和J2EE是两个不同概念,Java不只是指一U语aQ已l代表与微Y不同的另外一个巨大阵营,所以Java有时是指一UY件系l的派Q当然目前主要是.NET和Java两大L体系?/P>
J2EE可以说指Java在数据库信息pȝ上实玎ͼ数据库信息系l从早期的dBase、到Delphi/VB{C/Sl构Q发展到B/SQBrowser览?Server服务器)l构Q而J2EE主要是指B/Sl构的实现?/P>
J2EE又是一U框架和标准Q框架类似API、库的概念,但是要超出它们。如果需要详l了解框Ӟ可先?A target=_blank>设计模式开始学习?/P>
J2EE是一个虚的大的概念,J2EE标准主要有三U子技术标准:WEB技术、EJB技术和JMSQ谈到J2EE应该说最l要落实到这三个子概念上?/P>
q三U技术的每个技术在应用旉涉及两个部分Q容器部分和应用部分QWeb容器也是指Jsp/Servlet容器Q你如果要开发一个Web应用Q无论是~译或运行,都必要有Jsp/Servlet库或API支持Q除了JDK/J2SE以外Q?/P>
Web技术中除了Jsp/Servlet技术外Q还需要JavaBeans或Java Class实现一些功能或者包装携带数据,所以Web技术最初裸体简UCؓJsp/Servlet+JavaBeanspȝ?/P>
谈到JavaBeans技术,涉及到lg构g技术(componentQ,q是Java的核心基部分Q很多Y件设计概念(设计模式Q都是通过JavaBeans实现的?/P>
JavaBeans不属于J2EE概念范畴中,如果一个JavaBeans对象被Web技术(也就是Jsp/ServletQ调用,那么JavaBeansp行在J2EE的Web容器中;如果它被EJB调用Q它p行在EJB容器中?/P>
EJBQ企业JavaBeansQ是普通JavaBeans的一U提升和规范Q因Z业信息系l开发中需要一个可伸羃的性能和事务、安全机Ӟq样能保证企业系l^滑发展,而不是发展到一U规模重新更换一套Y件系l?/P>
xQJavaBeanslg发展到EJB后,q不是说以前的UJavaBeans形式消׃Q这p然Ş成了两种JavaBeans技术: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容器分ؓ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ȝ耦合了数据库JDBC驱动的配|,那么你的J2EE应用pȝ有数据库概念色彩,作ؓ一个成熟需要推q的J2EE应用pȝQ不推荐和具体数据库耦合Q当然这其中如何保证J2EE应用pȝq行性能又是体现你的设计水^了?/P>
衡量J2EE应用pȝ设计开发水q高低的标准是Q解耦性;你的应用pȝ各个功能是否能够dqQ是否不怺依赖Q也只有q样Q才能体现可l护性、可拓展性的软g设计目标?/P>
Z辑ֈq个目的Q诞生各U框架概念,J2EE框架标准一个系l划分ؓWEB和EJB主要部分Q当然我们有时不是以q个具体技术区分,而是从设计上抽象现层、服务层和持久层Q这三个层次从一个高度将J2EE分离开来,实现解耦目的?/P>
因此Q我们实际编E中Q也要将自己的功能向q三个层ơ上靠,做到大方向清楚,泾渭分明Q但是没有技术上U束限制要做到这Ҏ很不Ҏ的,因此我们q是必须借助J2EE具体技术来实现Q这Ӟ你可以用EJB规范实现服务层和持久层,Web技术实现表现层Q?/P>
EJBZ么能服务层从Jsp/Servlet手中分离出来Q因为它对JavaBeans~码有强制的U束Q现在有一U对JavaBeansq束,使用Ioc模式实现的(当然EJB 3.0也采取这U方式)Q在Ioc模式诞生前,一般都是通过工厂模式来对JavaBeansU束QŞ成一个服务层Q这也是是Jiveq样开源论坛设计原理之一?/P>
由此Q将服务层从表现层中分离出来目前有两U可选架构选择Q管理普通JavaBeansQPOJOQ框?如Spring?A target=_blank>JdonFramework)以及理EJB的EJB框架Q因为EJB不只是框Ӟq是标准Q而标准可以扩展发展,所以,q两U区别将来是可能模糊Q被U_同一个标准了。 但是Q个为:标准制定是ؓ某个目的服务的,总要牺牲一些换取另外一些,所以,q两U架构会长时间ƈ存?/P>
q两U架构分歧也曄诞生一个新名词Q完全POJO的系l也UCؓ轻量U系l?lightweight)Q其实这个名词本w就没有一个严格定义,更多是一个吸引h的招牌,轻量是指Ҏ学习Ҏ使用吗?按照q个定义Q其实轻量Spring{系lƈ不容易学习;而且EJB 3.0Q依然叫EJBQ以后的pȝ是否可称量了呢Q?/P>
前面谈了服务层框Ӟ使用服务层框架可以将JavaBeans从Jsp/Servlet中分d来,而用表现层框架则可以将Jsp中剩余的JavaBeans完全分离Q这部分JavaBeans主要负责昄相关Q一般是通过标签库(taglibQ实玎ͼ不同框架有不同自q标签库,Struts是应用比较广泛的一U表现层框架?/P>
q样Q表现层和服务层的分L通过两种框架辑ֈ目的Q剩余的是持久层框架了Q通过持久层的框架数据库存储从服务层中分d来是其目的,持久层框架有两种方向Q直接自q写JDBC{SQL语句Q如iBatisQ;使用O/R Mapping技术实现的Hibernate和JDO技术;当然q有EJB中的实体Bean技术?/P>
持久层框架目前呈现百花齐放,各有优缺点的现状Q所以正如表现层框架一P目前没有一个框架被指定为标准框Ӟ当然Q表现层框架现在又出来了一个JSFQ它代表的页面组件概忉|一个新的发展方向,但是复杂的实现让人有些忘而却步?/P>
在所有这些J2EE技术中Q虽然SUN公司发挥了很大的作用Q不qM来说Q网l上有这样一个评PSUN的理论天下无敌;SUN的品用h撞墙Q对于初学者,特别是那些试N过或已l通过SUN认证的初学者,赶快摆脱SUN的阴影,立即开溜,使用开源领域的产品来实现自q应用pȝ?/P>
最后,你的J2EE应用pȝ如果采取上面提到的表现层、服务层和持久层的框架实玎ͼ基本你也可以在无需深刻掌握设计模式的情况下开发出一个高质量的应用系l了?/P>
q要注意的是: 开发出一个高质量的J2EEpȝq需要正的业务需求理解,那么域徏模提供了一U比较切实可行的正确理解业务需求的ҎQ相兌l知识可从UML角度l合理解?/P>
当然Q如果你惌计自q行业框架Q那么第一步从设计模式开始吧Q因计模式提供你一个实现JavaBeans或类之间解耦参考实现方法,当你学会了系l基本单元JavaBean或类之间解耦时Q那么系l模块之间的解耦你可能掌握,q而你可以实现行业框架的提炼了,q又是另外一个发展方向了?/P>
以上理念可以ȝZ句话Q?BR>J2EE开发三件宝: Domain ModelQ域建模Q、patternsQ模式)和frameworkQ框Ӟ?/P>
推荐一套高质量的J2EE开源系l: JPestore
1.安装j2eesdk-1_4_02_2005Q2-windows-ml.exe
下蝲地址:http://java.sun.com/j2ee/1.4/download.html
安装目录:E:\Sun\AppServer.一下按照提C就OK?(E:\Sun\AppServerҎ需要设|你的目?
2.pȝ变量讄:
我的电脑-->右键属?->高-->环境变量--pȝ变量
(1)CLASSPATH=.;%JAVA_HOME\lib\tools.jar;%JAVA_HOME\lib\dt.jar
(2)Java_HOME=E:\Sun\AppServer\jdk
(3)PATH=%JAVA_HOME%\BIN;%JAVA_HOME%\JRE\BIN
(4)q行-->CMD-->q入DOs命o提示W后,输入JAVA或JAVAC,若出Cpd帮助提示,表示安装成功.如果提示不是外部\内部命o...那表C系l变量没讄?
3.安装eclipse3.1.1及中文语a?
(1)http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.1.1-200509290840/eclipse-SDK-3.1.1-win32.zip
里面下蝲安装文g:eclipse-SDK-3.1.1-win32.zip
(2)http://download.eclipse.org/eclipse/downloads/drops/L-3.1.1_Language_Packs-200510051300/index.php
里面下蝲中文语言包文?NLpack1-eclipse-SDK-3.1.1a-win32.zip
它们解压到同一目录(如E:\Eclipse)下面(安装文g和语a包相同目录里的东东合在一?q行eclipse.exe卛_.
如果在安装中文语a包前已经q行了ECLIPESE,那需要把configuration文g替换成原来的.然后重新启动eclipse.exe可以?