J2EE能够说指Java在数据库信息系统上实现,数据库信息系统从早期的dBase、到Delphi/VB等C/S结构,发展到B/S(Browser浏览器/Server服务器)结构,而J2EE主要是指B/S结构的实现。web
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容器中。 tomcat
EJB(企业JavaBeans)是普通JavaBeans的一种提高和规范,由于企业信息系统开发中须要一个可伸缩的性能和事务、安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模从新更新一套软件系统。安全
至此,JavaBeans组件发展到EJB后,并非说之前的那种JavaBeans形式就消失了,这就天然的造成了两种JavaBeans技术:EJB,POJO,pojo和EJB是两个彻底不一样的概念,它是指普通的JavaBeans,而这个JavaBean不依附某种框架,或者干脆来讲,这个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容器直接使用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模式实现的,在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(框架)。