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

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,谈到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应用系统,不推荐和具体数据库耦合,当然这其中如何保证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(框架)。

时间: 2024-10-09 17:40:15

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

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

j2ee|初学 J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向. 首先我们需要知道Java和J2EE是两个不同概念,Java不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以Java有时是指一种软件系统的流派,当然目前主要是.NET和Java两大主流体系. J2EE可以说指Java在数据库信息系统上实现,数据库信息系统从早期的dBase.到Delphi/VB等C/S结构,发展到B

如何优化出一个高质量的单页

一个高质量的网页可以给网站很大的帮助,可以提高网站的流量.提高网站和栏目的整体权重.提高转化率还有提高网站的品牌效应.既然高质量网页有这么多的用处,那么要如何打造一个高质量的网页呢?本人觉得高质量的网页一般是页面干净整洁,访问速度要快,具有可读性,当然这只是一个高质量网页要具备最基本的要求,要能对网站权重和关键词排名起到作用,还需要其他一些优化手段才行,下面我说说自己做高质量网页的一些精力: 本人以前有接手过一个妇科医疗网站,刚接手的时候由于网站的目标关键词太过热门,而那网站当时才建站不到半年时

大数据可以创造出更高质量的价值

作为最早洞见大数据时代发展趋势的数据科学家之一,舍恩伯格在数博会"数据资产化发展论坛"上发表了<大数据的大价值>主题演讲.舍恩伯格认为,大数据是可以反复使用的资源,人们可以利用大数据创造出更高质量的价值. 舍恩伯格说,如今,数据已经成为了有价值的公司资产.重要的经济投入和新兴商业模式的基石.虽然数据还没有被列入企业的资产负债表,但这只是一个时间问题.人们必须意识到数据价值,并合理加以利用. 什么样的数据可与未来潜在因素发生更加紧密的联系?舍恩伯格认为,关键就在于让数据&qu

div布局-设置有背景图片的&amp;amp;lt;div&amp;amp;gt;块中怎么开发出一个白色的块?

问题描述 设置有背景图片的<div>块中怎么开发出一个白色的块? 我用一个图片添加为一个 的背景,然后想在这个块中再添加一个白的的块,但是这个快没法变为白色. 谢谢回答. 解决方案 贴代码,或者贴效果图. 解决方案二: 不知道你想要什么样的效果,在上面再加一个div就好了啊 解决方案三: 代码贴一下,这样不知道你要干什么 解决方案四: 浮上去一个白色的块就可以了啊 解决方案五: 我也是初学者 看看吧 不一定对 <!doctype html> <div style='backg

混小子:如何打造一个高质量、高曝光率的独立博客

中介交易 SEO诊断 淘宝客 云主机 技术大厅 这里武汉SEO混小子首先说下,我并不是说我的博客是高质量的,之所以写出这篇文章,主要是因为今天突然发现我的这个SEO博客好像一直都没有提到过关于博客方面的文章,所以总结了自己这5个月来的一些体会,以及参考了一些朋友的独特方法,因为独立博客万千种类,所以方法也不尽相同,最近一直有个朋友咨询我关于独立博客方面的事情,很抱歉没能帮到这位朋友什么东西,想说的是建立一个独立博客非常的容易,但是想建立一个高质量的独立博客却不是那么容易的,独立博客万万千千,真正

如何做一个高质量的网站页面?

本文是针对网站seo优化角度出发的,同时兼顾高质量用户浏览体验度.优质的网站页面可以让网站的权重.PR值.关键词综合排名得到提高,那么我们在制作页面的时候,到底要注意哪些细节呢?   1.   原创最大化原则 页面的原创性是页面质量的根本,搜索引擎都会有自己的内容过滤器,主要是为了减少出现重复的内容和收录.大家都知道伪原创的工具,可以伪原创文章.比如通过把文章的结构.顺序或者从其他的地方复制一些内容,然后拼凑成一篇文章,这种方法可能会对网站造成很大的损害.因为道理非常简单,搜索引擎并非按一篇文章

田微:如何换到一个高质量的友情连接

谈到友情连接交换站长们肯定不陌生,我们知道一个好的友情连接对网站的帮助也是不可小视的,更利于提高网站关键词的搜索排名和权重,小编发现pr高的友情连接对自己站的pr也是有一定的带动性.所以做友情连接一定要有一定的标准,一定不要交换比自己站差的,除非你们认识,给予朋友关系你愿意的情况下.就拿我自己来说每天换链接都这样写:"每天都有专业人员更新,条件相当,有意者与我私聊,换首页/内页或者文章页[关于文字页交换之前我写过这样的文章,有兴趣可以在阅读一下:[外链难,友情链接多?解决难题新途径](只换医疗网

8个技巧教你做一个高质量SEO网站

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 1.页面标题.关键词和描述 无论是标题.关键词还有描述都不要堆砌关键词.比如标题为"云南旅游"频道页面就围绕主页的核心关键词展开关键词如VIP旅游频道的标题为"VIP旅游 -云南旅游"内容页就应该围绕VIP旅游频道展开长尾关键词如:大理.丽江VIP团7日游"结构要清醒,页面的关键词为核心关键词

【高质量代码】如何写出更高质量的C/C++代码(1):内存管理

内存的管理是C/C++开发程序过程中的一个比较麻烦的问题.对于经验不是足够丰富的程序员来说,开发比较复杂的程序的时候几乎肯定会遇到内存管理方面的bug.对C/C++语言以及编译机制深入的理解和养成良好的编程习惯可以尽量减少这类bug产生的几率. 1.C/C++程序运行时内存结构简介 一个典型的C/C++编译的进程所占用的内存空间通常分为5个部分,由低地址到高地址分别为: 代码段(Code/Text Segment):保存可执行程序运行的二进制代码段. 数据段(Data Segment):保存进程