软件水平 > 中级资格 > 软件设计师 > 文章内容

计算机软件水平考试中级软件设计师综合资料(72)

2017-2-5编辑:ljnbset

Sun的Java 2 Enterprise Edition(J2EE)平台已经成为使用最广泛的Web程序设计技术,最近几年,J2EE Web程序的开发已经成为信息系统的关键。

 

  J2EE1.4的多层Web框架技术

  J2EE为多层Web应用系统提供了容器平台。在这里,容器概念实际是指应用服务器提供的特定功能的软件模块,用户所开发的程序构件要在容器内运行,构件和容器的关系有些像计算机插件和主板的关系;程序构件在部署时被安装在容器里,容器是能提供基本功能的底层平台,它们之间通过接口进行通信;一般Web程序开发者只要开发出满足其需要的程序构件并能安装在容器中就够了,程序构件的安装过程包括设置各个构件在J2EE应用服务器中的参数以及设置J2EE应用服务器本身。这些设置决定了在底层由J2EE服务器提供的多种服务(譬如安全、交易管理、JNDI查寻和远程调用等)。

  J2EE应用框架使同样的程序构件在一个Web程序之内能够根据其部署的方式实现不同的功能。例如,同样的Enterprise JavaBean可以采用不同等级的数据库数据存取安全设置,J2EE容器还负责管理某些基本的服务,譬如构件的生命周期、数据库连接资源共享、数据持久性(data persistency)。

 J2EE 1.4应用平台由以下几种类型的程序容器(container)组成:Enterprise JavaBeans(EJB)容器负责所有EJB的运行,EJB根据功能可以分为session bean(通常称为会话bean,称之为会话期间bean更确切),entity bean(实体 bean),message-drivenbean(消息驱动bean)。这一层主要负责数据处理以及和数据库或其他Java程序的通信,它对应多层结构的业务层和数据访问层,Web容器管理所有JSP,JSTL和servlet等Web构件的运行,这些构件主要负责程序和Web的通信,这一层对应多层结构中的表示层。应用客户端容器负责所有Web程序在客户端构件的运行;Applet容器可以看作特殊的应用客户端容器。它负责在Web浏览器和Java插件(Java Plug-in)上运行Java Applet程序(Applet是一种简化并具有安全保护的Java小程序),应用客户端容器和Applet程序容器基本对应多层结构中的用户接口层;每种容器内都使用相关的各种Java Web编程技术,这些技术包括三类:

J2EE各种不同的应用构件(如Servlet,JSP,EJB),它们构成了应用的主体。

  J2EE平台提供的应用服务(如JDBC,JTS,JNDI),这些服务保证并促进构件的良好运行。

J2EE的应用通信技术(如RMI,JMS,JavaMail)在平台底层实现机器和程序之间的信息传递。

 

  1、构件技术

"构件"这一概念是指在应用程序中能发挥特定功能的软件单位。简单地说,就是几种特定的Java程序,这些程序有固定的格式和编写方法,它们的功能和使用方式在一定程度上被标准化了;最基本的Java构件是在Java标准版(Java 2 Standard Edition)中的JavaBean,它是按照特定格式编写的Java类文件。JavaBeans包括实例变量(Instance Variable()和get(),set()的方法来访问实例变量的数据。这种格式大大简化了程序设计。J2EE的构件在JavaBeans基础上进行了拓展。由于Web编程比较复杂,J2EE提供了更多应用构件,主要包括三类:客户端的Applet和程序客户;Web容器内的JSP,Servlet,JSTL等构件;企业Java Beans容器内的EJB构件和资源连接构件。

 

  1)J2EE的客户

  J2EE Web应用可以和多种客户端程序连接。这些客户主要包括以下部分:Web客户端包括动态生成的网页(包含各种各样的类型标注语,如HTML,XML等),以及在客户机上运行的Web浏览器。Web浏览器(如Internet Explorer,Netscape)以标准格式显示从服务器传递来的网页。不管J2EE应用服务器早怎样生成这些网页的,它们被传递给浏览器时已经是HTML或XML格式,浏览器只是正确地显示给用户。所以,有时Web客户端被称为"瘦客户",瘦客户不承担复杂的数据检索和计算任务,这些复杂而耗时的操作在J2EE服务器端Web容器和EJB容器内进行。这样保证了"客户-服务器"结构的优势,降低了Web流量。

  Applet是基于Java的小型客户端构件。它一般在Web浏览器上运行,通过HTTP协议和服务器进行通信。从服务器传给浏览器的网页可能包括嵌入的Applet程序;这些Applet程序在浏览器所安装的Java虚拟机(Java virtual machine)上执行。这要求客户机的浏览器事先安装Java Plug-in和有关安全许可文件。

  Web客户端程序和Applet各有优点。Web客户程序(就是用网页)更简单和普遍,因为它不需要安装Java Plug-In,也无须操心客户程序运行的安全问题。并且,Web客户程序使编程和网页设计分离,这样保证了程序设计的模块化。会作漂亮的网页的人员因而不需要了解Java编程语法。Applet更适合复杂的客户界面。

  由于Applet更接近Java编程,许多专业人员更擅长利用Java丰富的功能(API)来进行客户端编程。如果使用得法,Applet界面会更快速和灵活。比如,美国一家非常受欢迎的股票交易公司Datek就推出了使用Applet为界面的网上股票交易工具,无须用户点击图标和按键,它能够随时更新股票的交易分析数据和曲线。

  客户应用程序是指在客户机上运行的J2EE程序。它为用户提供了丰富的界面(如JavaSwing,AWT)和复杂的操作。客户应用程序直接访问在服务器EJB容器内的EJB程序。当然,J2EE客户应用程序也可像Applet客户那样以HTTP连接和服务器的Servlet通信。与Applet不同的是,客户应用程序一般需要在客户端进行安装,而Applet是在Web上下载,无须专门安装。一般来说,客户应用程序适合在企业内部网中使用,Applet适合在WWW上使用。

  Java Web Start客户是基于JFC/Swing API的,适合J2EE程序使用的客户应用,它基于比较新的Java Web Start技术。这种技术主要提供了网上的快捷程序下载和安装方式。Java Web Start兼有Applet和客户应用程序的优点,但设置起来有些复杂。

无线客户基于移动信息设备定型技术(Mobile Information Device Profile)。Java微型版(Java 2 Micro Edition)提供了MIDP的API和有限连接设备配置(Connected Limited Device Configuration)技术。这些技术可以使无线设备(如手机,PDA)同J2EE程序进行通信。

 

  2)Web构件

  Web构件是在J2EE Web容器上运行的软件程序。Web容器主要支持多层结构的表示层。它的功能是在HTTP协议上对Web请求(request)进行响应(response)。这些所谓响应其实就是动态生成的网页。用户每在浏览器上点击一个链接或图标,实际上是通过Web向服务器发出请求。J2EE平台的Web构件对这些请求进行处理后回复给客户相应的HTML或XML文件。

  J2EE Web构件包括servlet,Java Server Page(JSP)和Java Server Pages Standard Tag Library(JSTL)。

  Servlet是Java动态处理HTTP请求和生成网页的类(class)。每个servlet就是一个在J2EE应用服务器Web容器(又称Web服务器)里的程序构件。这种构件有效地利用了Web服务器的HTTP通信功能。Web服务器负责将Web请求传递给servlet。

  Web服务器内部根据用户要求的统一资源定位器(URL,即通常所说的网址)查找到对应的servlet,然后将servlet处理生成的HTML或XML文件以HTTP形式反馈给客户。Web程序开发人员主要编写servlet类程序无须关心Web服务器的运作细节,编写servlet的程序员用servlet API进行以下工作:初始化和结束servlet;连接servlet的运行环境;接收或传递Web请求,发送Web反应;维护和管理客户会话(session);和其他Web构件协同工作;使用过滤器对Web请求和响应进行处理;实现Web安全管理。

JSP可以说是servlet的变形,它像是文本格式的servlet,它的写法有些像写网页,这样就为应用开发者(特别是不熟悉Java语言的)提供了方便,JSP在Web容器内会被自动编译为servlet,编写JSP比编写servlet程序更简洁;一个JSP文件包括两类成分:生成HTML或XML模板和处理动态内容的JSP元素。JSP开发者如果只改变网页外观,他们只要对JSP内的模板进行编辑而不用改动JSP元素。JSP元素主要用于生成动态内容或调用底层EJB构件,Servlet编程将二者混在一起,而JSP就清楚多了,JSTL将常用的JSP功能封装成为简单的标签(tag)。熟悉HTML网页编程的人知道,网页是由各种有标签的文字组成的,各种标签(如表格、字体)的写法基本固定。JSTL采用了相似的概念设计JSP。例如,设计者不必自己用JSP写一个能连接数据库的JSP文件,可以用现成的JSTL标签来进行数据库连接。这种JSTL标签是最优化和标准化的,任何种类的Web服务器都会支持,这样就省去了不少JSP的麻烦;JSTL目前提供基本的JSP功能,仍在不断扩充中。

 

  3)企业JavaBeans(EJB)构件

  EJB容器用于实现企业业务操作的程序,它在多层结构中处于业务层和数据访问层。这里我们引入"业务逻辑"这个概念。在J2EE编程中,业务逻辑指特殊企业领域对数据的处理需求,譬如银行业务、零售或财务等,简单说就是企业程序中的数据结构和算法。业务逻辑因企业的业务性质而异,它由EJB构件在J2EE Web程序中实现,EJB构件能够从客户端或Web容器中收到数据并将处理过的数据传送到企业信息系统来存储,EJB还能够从数据库检索数据并送回到客户端;由于EJB依赖J2EE容器进行底层操作,使用EJB构件编写的程序具有良好的扩展性和安全性。

  J2EE 1.4版有三种EJB构件:session bean(会话bean),entity bean(实体bean)和message-drivenbean(消息驱动bean)。

  会话bean主要用来描述程序的业务逻辑。一个会话bean代表Web应用程序和客户的一次会话过程(一次"会话")。在程序运行过程中,当Web应用的客户(如网上购物的消费者,银行系统使用者)执行完操作之后,会话bean和它所使用的数据会被删除(即不在数据库保存)。会话bean主要是为客户进行与业务逻辑相关的数据操作,如计算交易金额、存取数据等。会话bean可以是无状态的(stateless)或有状态的(stateful)。无状态是指不管任何用户每次调用其方法,会话bean都作同样响应。有状态是指会话bean需要维护和记录不同方法之间的构件状态,这种分类主要适用不同的数据操作。

  实体bean是用于表示和维护Web应用的数据实体的构件。简单地说,数据实体就是程序所使用的数据库中的数据对象。一个实体bean代表存放在数据库的一类数据对象。它是数据库内数据在EJB容器里的翻版。实体bean与会话bean不同,如果一个客户终止使用服务或J2EE应用服务器被关闭,EJB容器会保证实体bean的数据保存到数据库内。这就是所谓数据持久性(data persistence)。实体bean根据其实现数据持久性的方法分为bean-managed persistence和container-managed persistence两类。Bean-managed persistence指实体bean本身管理对数据库的访问,这要求编程者自己写一些数据库操作指令(如SQL)。Container-managed persistence指对数据库的访问由EJB容器负责;编程者只要定义相关设置,而不需要写数据库操作指令。虽然 container-managed persistence更简单,但是有些复杂的数据操作还是需要bean-managed persistence来完成。

消息驱动bean实现了客户和服务器更松散的方法调用,利用消息服务器有其特定的优势,一个消息驱动bean能让客户和服务器之间进行异步(asynchronous)通信,服务器并不要求立刻响应;当Java消息服务器(Java message server)收到从客户端发来的消息时,消息驱动bean被激活,客户并不像使用会话bean那样直接调用消息驱动bean,这样客户不必要知道消息驱动bean中具体有什么方法可以调用。

 

  2、服务技术

J2EE Web程序服务器提供了方便编程的各种服务技术,这些技术是一般Web应用需要用到但Web编程者不需要自己开发的,例如命名服务(naming service)、部署服务(deployment service)、数据连接(JDBC)、数据事务(data transaction)、安全服务(security service)和连接框架(connector architecture),在Web应用中一般通过调用现成的API来使用这些技术。

 

  1)命名技术(JNDI)

  J2EE命名服务提供应用构件(包括客户、EJBbeans、servlet、JSP等)程序命名环境。在传统的面向对象编程中,如果一个类A要调用另一个类B,A需要知道B的源程序然后在其中new一个B的实例。当一方程序改变时,就要重新编译,而且类之间的连接比较混乱。Java Naming and Directory Interface(JNDI)(命名和目录接口)简化了高级Web程序类之间的查找调用。它提供了应用的命名环境(naming environment)。这就像一个公用电话簿,Web构件在命名环境注册登记,并且通过命名环境查找所需其他构件。

JNDI API提供了Web构件进行标准目录操作的方法,譬如将对象属性和Java对象联系在一起,或者通过对象属性来查找Java对象。由于JNDI已经被标准化,程序可以通过使用JNDI来访问其他通用的命名服务,包括常用的Web命名协议LDAP,NDS,DNS和NIS。这促进了J2EE Web程序与其他平台系统的整合。

 

  2)数据连接技术(JDBC)

Java Data-Base Connection(JDBC)API使J2EE平台和各种关系数据库之间连接起来。JDBC技术提供Java程序和数据库服务器之间的连接服务,同时它能保证数据事务的正常进行。另外,JDBC提供了从Java程序内调用SQL数据检索语言的功能;J2EE平台使用JDBC 2.0以上的API以及JDBC 2.0拓展API,这些API提供了高级的数据连接功能。

 

3)数据事务技术

  数据事务(data transaction)用于保证数据读写时不会出乱。当程序进行数据库操作时,要么成功完成,要么一点也不改变数据库数据。最怕的是把数据改了一半程序出错,那样程序和数据就会出错。所以,数据事务有一?quot;不可分微粒"的概念,就是指一次数据事务过程不能间断,J2EE的数据事务服务保证应用程序的数据读写进程互相不干扰。

如果一个数据操作能整个完成,它就会被批准;否则,应用程序服务器就当什么都没做。 应用程序开发者不用自己实现这些功能,这样使数据操作简化了,数据事务技术使用JTA的API,它可以在EJB层或Web层实现。

 

  4)安全技术

  J2EE提供了严密的安全措施,它用于保证程序资源只能由获准的用户来使用。这一般分为两步。首先是验证(authentication),即个体必须由验证确定其身分。典型的做法是使用者提供验证数据(譬如用户名和密码)。我们称能被验证的个体为"本体"(principal),本体可能是个人用户或其他程序。第二步是授权(authorization)。当一位被验证通过的本体设法访问程序资源时,系统要根据安全策略确定是否该本体有权限进行这样的操作。

J2EE的容器提供两种安全方法:声明性(declarative)和程序性(programmatic)。声明性安全技术指在程序之外设定安全机制的参数。也就是编程者在程序配置描述文件里指定如何使用安全技术。相以地程序性安全技术在程序内用指令设定安全机制。这一般是指在Web构件或EJB构件的程序里调用Java的安全技术API。由于声明性安全设定不需要改动程序源代码,在J2EE程序中,一般使用声明性安全技术比较简单。

 

  5)连接框架技术

J2EE连接框架技术(connector architecture)是一组用于连接J2EE平台到企业信息系统(EIS)的标准API。企业信息系统是一个广义的概念,它指企业处理和存储信息数据的程序系统,譬如企业资源计划(ERP)、大型机数据事务处理以及数据库系统等。由于很多系统已经使用多年,它们不一定是标准的数据库或Java程序。这些现有的信息系统又称为遗产系统(legacy systems),例如SAP、CICS和非关系数据库等系统。J2EE连接框架技术解决了现有企业信息系统与EJB容器和构件的集成,为此,J2EE连接框架技术定义一套扩展性强、安全的数据交互机制。这使J2EE Web程序能和其他类型的系统进行通话。这种技术主要是规定了J2EE程序服务器和遗留系统之间的资源适配器,这样使两者能够相互读懂对方的数据。

 

  6)Web服务技术

Web服务技术是通过互联网进行远程应用服务和计算的新技术,被称为新一代的Web应用技术。在1.4版本之后,它已经成为J2EE平台的一部分,Web服务通过基于XML的开放标准使企业之间进行信息连接,企业使用基于XML的Web服务描述语言(WSDL)来描述他们的Web服务(比如银行转账、价格查询等);通过互联网,系统之间可以使用Web服务注册(如UDDI)来查找被登记的服务目录,这样实现了真正在Internet上的信息查询和交换。Java的Web服务主要提供系列于XML和Web服务协议有关的API(如JAXM,JAXP,JAXR,JAXRPC)等;在最新的J2EE 1.4平台内,Sun将引进部分Web服务的功能。
计算机软件水平考试中级软件设计师综合资料(71)

热点推荐

登录注册
触屏版电脑版网站地图