JAVA技术和J2EE架构

来源:互联网 发布:东方卫视网络直播源 编辑:程序博客网 时间:2024/05/02 02:03
导读:

  JAVA技术

  JAVA[9][12]作为一种程序设计语言虽然只发展了短短的几年时间,但是作为一种比较纯粹的面向对象的技术,在不同的领域中,如设备、移动通信、企业应用等,引发了一场新型的程序设计模型和方法的革命,应该说,正是JAVA的出现,才真正的将面向对象技术的应用发挥到了淋漓尽致的地步。

  在系统的实现过程中,之所以选择JAVA作为开发语言,主要时考虑到JAVA的技术特性适用于企业应用开发,特别是服务器端的应用开发的特性。总的来说,JAVA作为应用程序的开发语言主要具有以下几个特性。

  1. 平台的独立性

  现在的企业,信息分布在不同的平台和应用中,因而在程序设计方面就需要做出权衡,所选择的语言能够在企业中方便的应用,而不需要因为不同的平台而重写代码重新编译。同时,还要有高效的事务处理能力。当集成各种不同的技术并最终形成一个具体的解决方案的时候,一个统一的程序设计模型就能够简化我们的工作,获得更高的工作效率。

  2. 代码的可重用性[11]

  作为一个程序设计者,代码的重用是其永远的一个追求目标。而要实现代码的重用,方式之一就是将应用程序的业务要求分解成不同的组件,另一种途径则是采用面向对象技术来封装共享的功能。JAVA集成了这两种方法:JAVA是一种面向对象的语言,因此,提供了进行重用的机制;同时,JAVA的企业版提供了一个进行组件重用的重要结构。

  3. 模块化

  当开发一个完整的服务器端应用程序时,程序代码会迅速变大,变复杂。合理的做法是把应用程序分解成几个相对独立的模块,各个模块分别负责处理一向具体的任务。按照这种方式,理解和维护应用程序就会变得更容易。JAVA中,模块化应用的手段有JAVA Servlet、Java Server Pages(JSP)和Enterprise JavaBeans(EJB)等,采用3层或多层结构将应用程序划分成为功能清晰的层来分别实现。

  J2EE系统平台

  J2EE简述

  J2EE(Java 2 Enterprise Edition)[16]是Sun公司提出的用于建立服务器端应用程序的一种系统平台规范。J2EE提供了一个企业级的计算模型和运行环境用于开发和部署多层体系结构的应用。它通过提供企业计算环境所必需的各种服务,使得部署在J2EE平台上的多层应用可以实现高可用性、安全性、可扩展性和可靠性。它的优越性在于:计算平台支持JAVA语言,使得基于J2EE标准开发的应用可以跨平台地移植;JAVA语言非常安全、严格,这使开发者可以编写出非常可靠的代码; J2EE提供了企业计算中需要的所有服务,而且更加易用; J2EE中多数标准定义了接口,例如JNDI(Java Naming and Directory Interface)、JDBC、Java Mail等,因此可以和许多厂商的产品配合,容易得到广泛的支持;J2EE树立了一个广泛而通用的标准,大大简化了应用开发和移植过程。

  J2EE体系组成

  J2EE系统平台实际上是一个分布式的应用程序-服务器环境,它提供了一组用于建立应用程序的JAVA扩展API,还提供了用于驻留和管理应用程序的实时基础设施。

  J2EE 规范定义了以下种类的组件 :

   客户应用组件(Application client components)

   Enterprise JavaBean组件(Enterprise JavaBean components)

   Servlet 及Java Server Page(JSP)组件(也被称作Web组件)(Servlet and Java Server Page components)

   Applet

  讨论了J2EE系统平台的体系结构之后,下面将介绍用于让我们建立大型、分布式企业应用程序所需要的各种技术。这是一个很大的技术集合,包括众多不同的技术,根据其应用可以把他们分为组件技术、服务技术和通信技术。下面将分别介绍在系统开发过程中主要用到的组件技术和服务技术。

  组件技术

  这些技术用来保持应用程序最重要的部分——业务逻辑。组件中有三种类型:Servlet、JSP、和Enterprise JavaBeans,下面将分别来介绍他们。

  WEB组件

  Web组件技术包括Servlet和JSP两种。

  Servlet是实现动态内容的一种简便的、平台独立的、Web服务器独立的方式,是建立基于Web的应用程序接口的基石。Servlet是服务器方程序,允许应用程序逻辑嵌入到HTTP请求-响应过程中。从原理上来说,Servlet首先是一个Java类,Servlet运行于由Servlet引擎所管理的Java虚拟机中,被来自Web客户机的请求所唤醒并用来处理请求,这种机制和CGI有些类似。然而与CGI不同的是,CGI需要为每个请求创建一个新的进程,在请求-响应完毕后删除这个进程;而Servlet只需要加载一个Servlet就能够处理每个新的请求,每个新的请求都使用内存中那个Servlet的副本,与此同时,它运行在它自己的执行线程中以优化性能。这也造成了Servlet与CGI在性能上最本质的区别[15]。

  因为Servlet是基于Java语言的,所以它能够访问Java全部的高级特性:数据库连接、多线程等等。

  JSP[17]是基于Servlet的动态网页技术标准(它实际上是Servlet编程模型的一个扩充)。该技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。在传统的网页HTML文件中加入Java代码片段和JSP标记就构成了JSP网页。JSP网页部署在Web容器中,在第一次被客户访问时由容器将其编译为一个Servlet。当Web客户访问JSP页时首先执行其中的程序片段,然后将执行结果以HTML的形式返回给客户。程序片段可以执行访问数据库、重定向等操作。JSP技术在多个方面加速了动态Web页面的开发:

  1. 将内容的生成和显示进行分离

  使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标记或者脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。生成内容的逻辑被封装在标识和JavaBean组件中,并且捆绑在脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和JavaBean中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和脚本,生成所请求的内容(例如,通过访问JavaBean组件,使用JDBC技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。

  2. 强调可重用的组件

  绝大多数JSP页依赖于可重用的,跨平台的组件(JavaBean或者EJB组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。

  3. 采用标记简化页面开发

  Web页面开发人员不会都是熟悉脚本语言的编程人员。JSP技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标记中进行动态内容生成所需要的。标准的JSP标记能够访问和实例化JavaBean组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。

  通过开发定制标记库,JSP技术是可扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标记库。这使得Web页面开发人员能够使用熟悉的工具和如同标记一样的执行特定功能的构件来工作。

  JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及J2EE的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。

  由于JSP的内置脚本语言是基于Java编程语言的,而且所有的JSP页都被编译成 Servlet,JSP就继承了Java技术的所有好处,包括健壮的存储管理和安全性。作为 Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。当与J2EE平台整合时,JSP页面将提供企业级的扩展性和性能,这对于在虚拟企业中部署基于Web的应用是必需的。

  企业JavaBean组件

  Enterprise Java Bean (EJB)是用于开发安全、可扩展、事务型以及多用户组件的一种分布式组件模型。简单地讲,EJB是包含业务逻辑地可重用软件单元。正如JSP允许把应用程序和表示逻辑分开,EJB允许把应用程序逻辑与系统级服务分开,这样开发者可以集中精力于具体业务问题,而不是系统编程。

  有三种基本形式的EJB模型,它们分别是实体Bean、会话Bean和消息驱动Bean。

  实体Bean:一个实体Bean代表一个数据库中的数据及作用于该数据的方法。实体Bean是事务的,并且是长寿命的。只要数据留在数据库中,实体Bean就存在。这个模式可以被很容易地用于关系型数据库,而不仅限于对象数据库。实体Bean持久化管理可以由容器来负责(CMP)也可以由实体Bean自己负责(BMP)。

  会话Bean:一个会话Bean代表与客户程序的一个短暂的会话,而且可能执行数据库读写操作。会话Bean可以是有状态的,也可以是无状态的。状态的会话Bean是一种用来表示一个客户与系统交互的短暂对象,它执行客户在应用程序中的请求,访问数据库等,当客户的操作完成后,它将被删除(也就是它只存在于客户会话中),这方面的一个示例就是一个应用程序客户发送一系列请求到一个应用程序,来执行一个业务处理。在这种情况下,状态Bean可以跟踪客户与应用程序之间的交互状态。无状态会话Bean不在客户请求之间维护状态信息,而是用于实现一种不要求客户状态的特定服务,例如一个简单的数据库更新。

  消息驱动Bean:消息驱动Bean是EJB 2.0规范新引入的,它并不是直接客户调用的方式,其目的是提供一种在EJB中处理异步消息处理的机制。消息驱动Bean实际上是一个消息侦听器,可以从一个队列或者一个持久的订阅中通过J2EE容器消费相应的消息;一个JMX消息的抵达引起的结果就是容器调用相应的消息驱动Bean。客户把消息驱动Bean看作是一个JMS消费者,它实现了业务逻辑,可以与会话Bean和实体Bean通信。

  服务技术

  尽管J2EE中很多对于应用组件的服务都是由容器自身管理的,从而开发者的精力可以集中在业务逻辑上,但是,开发者总是有必要自己调用一些服务,使用不同的服务技术。

  (1) JDBC

  Java数据库连接(Java Database Connectivity)API可以使开发者能够根据自己的需要连接不同的关系数据库系统,它允许对一个JDBC兼容的数据库进行事务行查询、检索和更新。

  (2) Java事务API和服务

  Java事务API(Java Transaction API,JTA)使一种用来处理事务的方式,特别是独立于事务管理器实现的分布式事务。

  (3) JNDI

  在J2EE平台中,Java命名和目录服务接口(Java Naming and Directory Interface)的API包含两个部分:

   首先,它提供了在LDAP、Netscape Directory Services等目录服务资源上执行标准操作的方式;

   其次,J2EE应用程序可以使用JNDI寻找来创建EJB和JDBC连接等的接口。

  (4) JMS

  在企业级环境中,各种分布式组件往往不是保持持久的联系。因此,需要采用一种手段来进行一部发送数据。Java消息服务(Java Message Service,JMS)通过使用面向消息的中间件(MOM)为发送和接收消息提供了这种机制。

  (5) JavaMail

  JavaMail是另外一种异步消息传送的方式。JavaMail也允许发送和接收消息,但是,它主要是面向用户而不是应用程序的各个部分。JavaMail支持大多数广泛采用的邮件协议,但是跟JMS相比,JavaMail相对较慢,而且可靠性也要差一些。

  J2EE应用模型

  J2EE 被设计成为提供对顾客、雇员、供应商、合作伙伴和其他需求及组成企业服务内容实现的应用支持。这些应用本身存在复杂性,它可能涉及从不同的数据源获取数据并分发不同的应用给不同的用户。

  为更好控制及管理这类应用,支持不同用户的业务功能被放在中间层实现。中间层表现为企业信息技术部门整个控制的环境。中间层一般运行于专用的服务器硬件并拥有企业完整服务的控制权。

  J2EE 应用通常依靠EIS 层存储企业关键数据。管理它的数据和系统位于企业的内核中。最初的两层模型,客户端/服务器应用模型承诺提高伸缩性及可操作性。但是,直接分发EIS服务到每个用户和由于在每个用户的机器上的业务逻辑的安装和维护导致的管理问题成了主要需要解决的难题。

  将企业应用服务实现为多层应用可避开两层模型的限制。由多层应用提供企业各方面的需求的控制,使大部分在两层模型上的开发转移到中间层软件的开发。如图3.2所示。

  图3.2 J2EE应用模型

  Fig.3.2 J2EE Application Model

  由于开发业务服务功能和获取数据库和其他企业资源的更复杂的底层代码的开发要求,使得多层服务开发更加复杂。因为每个多层服务器产品拥有其自身的应用程序模型,很难雇用和训练一个有经验的开发组。另外,随着服务量的增长常常需要改变整个多层模型的底层代码,导致实现成本和时间的消耗。J2EE 应用程序模型定义了作为多层应用程序的服务实现的架构,避免了这些问题并交付伸缩性、易访问性和可管理性。

  J2EE 应用程序模型需要实现多层服务的工作划分为两个部分:开发者实现的业务逻辑和表示逻辑,J2EE 提供的标准系统服务。开发者依靠平台提供对开发中间层服务的硬件系统问题的解决。

  J2EE 应用程序模型为多层应用程序提供一次编写,到处运行的便携性和伸缩性。在多种J2EE服务器和开发工具的可供选择的情况下,此标准模型最小化了开发者的培训成本。通过最小化建设多层应用的复杂性,J2EE 应用程序模型是迈向简化和加快应用程序开发的主要一步。



本文转自

http://soa.5d6d.com/redirect.php?fid=7&tid=67&goto=nextoldset
原创粉丝点击