`
dengzhangtao
  • 浏览: 677310 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

初学者如何开发出一个高质量的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(Meseage 異步通信),谈到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应用系统,不推荐和具体 数据库耦合(就是说用jdbc),当然这其中如何保证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(框架)。
  推荐一套高质量的J2EE开源系统: JPestore

 

分享到:
评论
14 楼 和未来 2010-11-29  
写的很好  受益匪浅啊
13 楼 dengzhangtao 2010-11-29  
lovemylover 写道
我可什么都没说啊,你的新手贴投票也跟我一点关系都没有,我基本不干这事,郁闷了可不要怪我哟。谁都是从新手过来的,当初也是菜鸟一个,所以没有嘲笑谁的意思,只不过实在是对这种文章太无语了,空洞无物、堆砌一大堆名词,真正有用的东西一点没有,还不如说说如何进行自我学习呢。这贴投你新手也一点不冤枉,申诉也没用。不要把希望寄托于这种文章,或者21天学会XXX之类的,脚踏实地,多学习、多看书、多动脑、多动手,自然水到渠成了。

你真闲 多谢你指点了  新手贴 ?  又有什么关系。谁是真正的菜鸟都不知道,说这么多,辛苦你关心了。再次问候你
12 楼 lovemylover 2010-11-29  
我可什么都没说啊,你的新手贴投票也跟我一点关系都没有,我基本不干这事,郁闷了可不要怪我哟。谁都是从新手过来的,当初也是菜鸟一个,所以没有嘲笑谁的意思,只不过实在是对这种文章太无语了,空洞无物、堆砌一大堆名词,真正有用的东西一点没有,还不如说说如何进行自我学习呢。这贴投你新手也一点不冤枉,申诉也没用。不要把希望寄托于这种文章,或者21天学会XXX之类的,脚踏实地,多学习、多看书、多动脑、多动手,自然水到渠成了。
11 楼 xzj127 2010-11-29  
实话实说  新手 写不出来。。

别说新手   大部分 工作过的都写不出来。
10 楼 dengzhangtao 2010-11-29  
lovemylover 写道
dengzhangtao 写道
lovemylover 写道
恩,这就好比让幼儿园大班的孩子写一篇关于世博会的作文一样,写不好要请家长哟

你这孩子脑袋不开窍, 说了转载, 在说了 你的水平当然看得 难! 。

你看不懂我意思?新人吧?多在JE混混再来说这话吧,我这人很大度的。

是看不懂  你不是在嘲笑吗?  你在JE混久了的老鸟,就牛了?
9 楼 lovemylover 2010-11-29  
dengzhangtao 写道
lovemylover 写道
恩,这就好比让幼儿园大班的孩子写一篇关于世博会的作文一样,写不好要请家长哟

你这孩子脑袋不开窍, 说了转载, 在说了 你的水平当然看得 难! 。

你看不懂我意思?新人吧?多在JE混混再来说这话吧,我这人很大度的。
8 楼 dengzhangtao 2010-11-29  
lovemylover 写道
恩,这就好比让幼儿园大班的孩子写一篇关于世博会的作文一样,写不好要请家长哟

你这孩子脑袋不开窍, 说了转载, 在说了 你的水平当然看得 难! 。
7 楼 lovemylover 2010-11-29  
恩,这就好比让幼儿园大班的孩子写一篇关于世博会的作文一样,写不好要请家长哟
6 楼 youjianbo_han_87 2010-11-29  
晕倒。。。。
5 楼 liaofeng_xiao 2010-11-29  
深夜未眠 写道
我还是继续自学汇编来得实际些- - 毕竟是底层永不变的东西~~~

顶你!
先专心学一两年汇编、计算机组成、体系结构、算法
4 楼 深夜未眠 2010-11-29  
我还是继续自学汇编来得实际些- - 毕竟是底层永不变的东西~~~
3 楼 imacback 2010-11-29  
这是啥东西,完全看不出什么意思。。。
2 楼 zzy90718 2010-11-29  
写的,还是不错的。谢了
1 楼 Foxswily 2010-11-29  
初学者和高质量,已经决定了这是个伪命题

相关推荐

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

    ### 初学者如何开发出一个高质量的J2EE系统 对于初学者而言,开发一个高质量的J2EE(Java 2 Platform, Enterprise Edition)系统既是一次挑战也是一次机遇。J2EE作为企业级应用的开发标准,其复杂性和深度远超一般...

    初学者如何开发出一个高质量的J2EE系统.pdf

    通过系统地学习和实践以上知识点,初学者可以逐步构建出高质量的J2EE系统。在实际开发中,不断学习新的技术和最佳实践,如Spring框架、微服务架构、DevOps工具链等,将有助于不断提升自己的专业水平。

    j2ee个人博客系统

    总的来说,"j2ee个人博客系统"是一个适合初学者了解SSH框架以及J2EE开发的实践项目。通过学习和分析该项目,开发者可以加深对Java Web开发的理解,掌握企业级应用的构建流程,为后续的复杂项目打下坚实的基础。

    J2EE初学者ppt课件

    这些PPT课件构成了一个全面的J2EE入门教程,覆盖了从基础环境配置到高级框架整合的各个方面,为初学者提供了一个良好的学习路径。通过深入学习和实践这些内容,你可以逐步掌握构建复杂企业级应用所需的技能。

    一个j2ee的开发案例程序

    6. **学习价值**:对于J2EE初学者来说,这个案例提供了一个完整的开发流程实例,涵盖了从前端到后端的主要技术,有助于理解J2EE组件间的协同工作方式,加深对J2EE架构的理解,为实际项目开发打下坚实的基础。...

    j2ee编程起步(适合初学者)

    J2EE的学习是一个循序渐进的过程,初学者应从基础入手,逐步深入到高级主题。这个资料集合提供了从基础到精深的知识体系,对于想要踏入J2EE领域的学习者来说,是一份非常有价值的参考资料。通过系统地学习和实践,你...

    基于J2EE实现的商品管理系统

    【基于J2EE实现的商品管理系统】是一个典型的...这个项目为初学者提供了一个全面了解J2EE开发流程的机会,包括需求分析、设计、编码、测试和部署等环节。通过实际操作,可以更好地掌握Web开发的核心技术和最佳实践。

    j2ee电子商务系统开发从入门到精通

    《J2EE电子商务系统开发从入门到精通》 在当今数字化时代,电子商务系统已经成为企业不可或缺的一部分,它...因此,无论是初学者还是有经验的开发者,都应该珍惜这样的学习机会,不断提升自己在J2EE领域的专业技能。

    用户管理系统 j2ee

    这个“用户管理系统”为初学者提供了一个实践J2EE技术的平台,涵盖了Web开发的基本概念和技术。通过学习和实践这个项目,开发者可以逐步提升自己的J2EE编程能力,为将来构建更复杂的系统打下坚实的基础。

    J2EE初学者需要注意的问题

    4. **优秀的框架支持**:J2EE提供了一个稳定的企业级应用程序框架,有助于开发者快速构建高质量的应用。 #### 四、当前的J2EE生态系统 J2EE由Sun Microsystems开发,最高版本为1.4。目前市场上支持J2EE的应用...

    J2EE专业项目实例开发

    **J2EE专业项目实例开发**是针对Java企业级应用开发的一个重要学习资源,它涵盖了在实际工作中可能遇到的各种技术和应用场景。在这个31.5 MB的压缩包中,你将找到一个名为“J2EE专业项目实例开发.pdf”的文档,这...

    全面解析j2ee系统

    J2EE系统为企业级应用程序的开发提供了强大的支持,通过深入理解其核心概念和技术细节,初学者可以更加高效地构建高质量的应用程序。在未来的学习过程中,建议结合实际项目经验,逐步掌握并灵活运用这些知识。 通过...

    一个简单的J2EE入门系统

    通过这个简单的J2EE入门系统,初学者可以了解到如何组织和构建一个完整的J2EE应用,理解各层之间的交互,以及如何利用J2EE提供的服务来实现常见的企业级功能。同时,还能学习到版本控制(如Git)、构建工具(如Maven...

    j2ee.rar_J2EE系统_j2ee 系统_j2ee.jsp

    J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台的一个版本,专为构建企业级应用程序而设计。这个平台定义了一套标准,包括...对于初学者和经验丰富的开发者来说,J2EE都是一个值得深入学习的技术领域。

    J2EE简单打卡系统

    本项目是一个基于Java企业级平台(J2EE)的简单打卡系统,主要采用Spring、Struts2和Hibernate(SSH)三大主流框架进行开发,旨在为初学者提供一个理解并实践J2EE开发的实例。SSH框架组合是Java后端开发中的经典选择...

    BBS系统(J2EE初学教程源码)

    总的来说,这个BBS系统源码提供了一个实践J2EE开发的优秀起点,涵盖了Servlet、数据库连接、用户认证等基础概念,对于初学者来说,通过分析和学习这个项目,可以深入理解Web应用开发的基本流程和技巧。同时,也可以...

    j2ee开发完整代码

    本项目提供了一个完整的J2EE开发实例,包括了数据库设计与源代码,为学习者和开发者提供了一次深入理解J2EE应用开发的绝佳机会。 首先,我们要了解J2EE的核心概念。J2EE是一个开放的、可移植的、多层的、分布式的、...

Global site tag (gtag.js) - Google Analytics