开源项目与J2EE架构介绍

原创 2005年05月28日 14:36:00

2 开源项目与J2EE架构介绍

211开源软件简介

 

什么是开源软件:

开源软件的英文为Open Source Software,简称为OSS。开放源代码软件就是在开放源代码许可证下发布的软件,以保证软件用户自由使用及接触源代码的权利,同时也保障了用户自行修改、复制,以及再分发的权利。

开放源代码发起行动组织(Open Source Initiative Association,简称OSIA)的开放源代码定义中,对开源软件有如下定义:

a. 发布的自由

开放源代码软件的许可证不能有任何限制再销售或者限制本程序同其他代码性质程序联合发布的条款,也不能有额外的收费要求。

b.关于对源代码的要求

要求软件发布鼻血为开放源代码形式,必须有免费的方式在软件初始发布的同时提供

明确获得源代码的路径。无论是下载还是书面印刷的相关资料。这些资料必须完备,能够保证专业人员进行修改,在作品中发布任何混淆概念的代码是被严格禁止的,同时任何通过其他途径,比如预处理、重编译等途径对开源软件代码进行阻隔的行为是被禁止的。源代码软件初始发布的时候,必须允许在源代码程序版本后用附属文件的形式发布修改版本。

c. 开源软件作品演绎

开放源代码软件许可证必须允许源代码可以被修改和允许根绝源代码产生有版权法意义上的演绎作品。

d.其他要求

不得对开源软件许可对象有歧视、不得对软件被使用者的领域有歧视、不得要求本开

源软件许可证生效的条件是在遵从软件许可证的前提下、许可证必须是适用于开放源代码这一类软件的而不是只针对某一个软件和开放源代码软件许可证、不得贬低其他软件许可证等条款。

 

开源软件的历史和现状:

开放源代码不仅仅指开源软件,它同事也是一种软件开放模式的名称。使用开放源代

码开放模式的软件代表就是Linux操作系统。开放源码运动在20世纪90年代开始日益发展,比较著名的有LinuxApacheTomcatMySQL等。目前,开发源码的潮流已经超出了操作系统、数据库管理系统和Web服务器等系统的开发领域,开发者在企业应用开发中寻找新的领地,用以开发框架式的优秀企业应用项目。

Apache组织(www.apache.org)为我们提供了著名的ApacheTomcatStrutsAxis SourceForge组织(www.sourceforge.net)是世界上最著名的开源项目中心。国内从90年代末开始一些软件研发人员投入到了开源项目中,比如知名的“共创软件联盟”(www.cosoft.cn).

软件许可证协议,在软件产业中的地位非常重要,因为软件许可证约定了许可人和被许可人的权利与义务。比较著名的许可证包括GPLLGPLMPLBSD许可证。除此之外,还有NOKIAMITAPPLE许可证等。GNU通用公共许可证简称GPL,是由自由软件基金会发布的用于计算机软件的协议证书,使用该证书的软件被成为自由软件。大多数的GNU程序和过半的开源软件使用它。

 

主要开源软件项目简介

开源软件通常是由个人、组织和公司所开发的软件项目。有些开源软件来自一些知名

公司,比如IBMEclipseSUNNetBeansSAPSAP DBNetscapte CommunicationsMozilla

    开源软件需要一些必须的基础设施,使得参与项目的人员能够交流、存储和发布。开源社区就提供了这样一个平台。以下是目前比较著名的几个开源社区:

1.      Apcahe

Apache社区是由Apache Web Server软件项目发展起来的。

    Apache Web Server项目

为人熟知的Apache Web Server,是用来做Web应用服务器的。根据最新调查显示,Apache Web Server已经击败了微软的IIS,使得它成为了Web服务器领域的领导者。

    Apache Ant项目

Ant是基于Java的构建(build)工具,修正了make的缺点,性能优异。

    Jakarta项目

Java平台上由一些子项目组成。

Commons 由一些小的java工具组成,例如BeanUtils可提供对JavaBean

动态操作。

James  Java技术上,实现了SMTPPOP3NNTP等多种邮件相

           关协议。

Jetspeed  实现了Enterprise Information Portal的开源软件。

Jmeter    功能和性能的测试工具,被用于测试静态和动态资源的性能。

Log4j     Java程序使用的日志组件。

Struts     Web开发框架。

Tomcat    Web应用服务器。

Turbine    Struts类似,也是Web开发框架。

    XML项目

该项目由一组处理XML文件的组件构成的。

Xerces     基于JavaXML解析器。

Xalan      基于 JavaXSM Style sheet处理器。

Cocoon     Cocoon是一种利用了XML强大功能的发布框架(XML -publishing)   

    Web Service项目

Apache提供的一组支持Web服务的开源软件项目。

Axis       Apache Axis是开源的SOAP服务器和客户端。

XML-RPC  基于XML-RPC方式的Java Web Service

WSIF       基于WSDL文件调用的方法实现Web服务,数据更改WSDL

文件。

 

2.      ObjectWeb 开源产品中间件

JonAs   开源的EJB容器

JORAM  实现了Java 消息服务(JMS)

 

3.      SourceForge.net开源社区

目前全世界最大的开源社区,为开源软件项目提供免费的服务。现在已经有几万个开源项目被收集,它为每个项目提供100MB的存储空间,并且为其配备缺陷跟踪系统、CVS代码管理系统。

 

 

 

 

大量的事实可以说明:开源软件是可靠稳定的,功能强大的,它与以微软产品为代表的商业软件各有千秋。

 

 

 

212 Sun J2EE体系结构

Sun J2EE并不像微软公司的.NET那样是一系列的产品,而是一个规范和标准,任何一家公司都可能依据这些规范和标准来开发自己的产品。Sun公司的目的就是让更多个厂家共同参与这个规范的制定,只要以这样的规范来开发自己的产品就能给用户带来更大的开放性和可移植性,正是因为如此,基于Java的应用服务器要比.NET多很多。Java的开放型和Java本身具有的“一次编写,到处执行”的跨平台性使得J2EE在企业分布式计算领域中占据很大的优势。

     J2EE使用多鞥的分布式应用模型,应用逻辑按照功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。Sun设计J2EE的初衷是为了解决两层模型(Client/Server)的弊端,来解决重用业务逻辑和界面逻辑的困难处境。现在J2EE的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,以下是J2EE典型的四层结构:

J2EE的体系结构

  • 运行在客户端机器上的客户层组件

  • 运行在J2EE服务器上的Web层组件

  • 运行在J2EE服务器上的业务逻辑层组件

  • 运行在EIS服务器上的企业信息系统(Enterprise information system)层软件

J2EE应用程序组件
J2EE
应用程序是由组件构成的.J2EE组件是具有独立功能的软件单元,它们通过相关的类和文件组装成J2EE应用程序,并与其他组件交互。J2EE说明书中定义了以下的J2EE组件:

  • 应用客户端程序和applets是客户层组件.

  • Java ServletJavaServer Pages(JSP)web层组件.

  • Enterprise JavaBeans(EJB)是业务层组件.

 

客户层组件
J2EE
应用程序可以是基于web方式的,也可以是基于传统方式的.

web 层组件

J2EE web层组件可以是JSP 页面或Servlets.按照J2EE规范,静态的HTML页面和Applets不算是web层组件。

正如下图所示的客户层那样,web层可能包含某些 JavaBean 对象来处理用户输入,并把输入发送给运行在业务层上的enterprise bean 来进行处理。

    

业务层组件
业务层代码的逻辑用来满足银行,零售,金融等特殊商务领域的需要,由运行在业务层上的enterprise bean 进行处理. 下图表明了一个enterprise bean 是如何从客户端程序接收数据,进行处理(如果必要的话), 并发送到EIS 层储存的,这个过程也可以逆向进行。

有三种企业级的bean: 会话(session) beans, 实体(entity) beans, 和消息驱动(message-driven) beans. 会话bean 表示与客户端程序的临时交互. 当客户端程序执行完后, 会话bean 和相关数据就会消失. 相反, 实体bean 表示数据库的表中一行永久的记录. 当客户端程序中止或服务器关闭时, 就会有潜在的服务保证实体bean 的数据得以保存.消息驱动 bean 结合了会话bean JMS的消息监听器的特性, 允许一个业务层组件异步接收JMS 消息.

企业信息系统层
企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划 (ERP), 大型机事务处理, 数据库系统,和其它的遗留信息系统. 例如,J2EE 应用组件可能为了数据库连接需要访问企业信息系统。

J2EE 的结构
这种基于组件,具有平台无关性的J2EE 结构使得J2EE 程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且J2EE 服务器以容器的形式为所有的组件类型提供后台服务. 因为你不用自己开发这种服务, 所以你可以集中精力解决手头的业务问题.

容器和服务
容器设置定制了J2EE服务器所提供得内在支持,包括安全,事务管理,JNDI(Java Naming and Directory Interface)寻址,远程连接等服务,以下列出最重要的几种服务:

  • J2EE安全(Security)模型可以让你配置 web 组件或enterprise bean ,这样只有被授权的用户才能访问系统资源. 每一客户属于一个特别的角色,而每个角色只允许激活特定的方法。你应在enterprise bean的布置描述中声明角色和可被激活的方法。由于这种声明性的方法,你不必编写加强安全性的规则。

  • J2EE 事务管理(Transaction Management)模型让你指定组成一个事务中所有方法间的关系,这样一个事务中的所有方法被当成一个单一的单元. 当客户端激活一个enterprise bean中的方法,容器介入一管理事务。因有容器管理事务,在enterprise bean中不必对事务的边界进行编码。要求控制分布式事务的代码会非常复杂。你只需在布置描述文件中声明enterprise bean的事务属性,而不用编写并调试复杂的代码。容器将读此文件并为你处理此enterprise bean的事务。

  • JNDI 寻址(JNDI Lookup)服务向企业内的多重名字和目录服务提供了一个统一的接口,这样应用程序组件可以访问名字和目录服务.

  • J2EE远程连接(Remote Client Connectivity)模型管理客户端和enterprise bean间的低层交互. 当一个enterprise bean创建后, 一个客户端可以调用它的方法就象它和客户端位于同一虚拟机上一样.

  • 生存周期管理(Life Cycle Management)模型管理enterprise bean的创建和移除,一个enterprise bean在其生存周期中将会历经几种状态。容器创建enterprise bean,并在可用实例池与活动状态中移动他,而最终将其从容器中移除。即使可以调用enterprise beancreateremove方法,容器也将会在后台执行这些任务。

  • 数据库连接池(Database Connection Pooling)模型是一个有价值的资源。获取数据库连接是一项耗时的工作,而且连接数非常有限。容器通过管理连接池来缓和这些问题。enterprise bean可从池中迅速获取连接。在bean释放连接之可为其他bean使用。

 

容器类型
J2EE
应用组件可以安装部署到以下几种容器中去:

  • EJB 容器管理所有J2EE 应用程序中企业级bean 的执行. enterprise bean 和它们的容器运行在J2EE 服务器上.

  • Web 容器管理所有J2EE 应用程序中JSP页面和Servlet组件的执行. Web 组件和它们的容器运行在J2EE 服务器上.

  • 应用程序客户端容器管理所有J2EE应用程序中应用程序客户端组件的执行. 应用程序客户端和它们的容器运行在J2EE 服务器上.

  • Applet 容器是运行在客户端机器上的web浏览器和 Java 插件的结合.

J2EE的核心API与组件

 

J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):

JDBC(Java Database Connectivity)JNDI(Java Name and Directory Interface)EJB(Enterprise JavaBean)RMI(Remote Method Invoke)Java IDL/CORBAJSP(Java Server Pages)Java ServletXML(Extensible Markup Language)JMS(Java Message Service)JTA(Java Transaction Architecture)  JTA(Java Transaction Architecture)JTS(Java Transaction Service)JavaMailJAF(JavaBeans Activation Framework)

为什么选择J2EE?

在构建一个企业级应用系统的时候,平台的选择至关重要,.NETJ2EE是当前最为流行的两个企业级应用平台,目前来讲。从应用的数量与成熟度上来讲,因为J2EE诞生的历史要早一些,所以具有许多NET没有的优点,主要体现在如下一些方面

(1)开放性

J2EE是一个开放的标准,已经有越来越多的公司参与J2EE规范的更新和改进,这使J2EE一方面得到了业界普遍的支持和使用,另一方面,也使技术本身有了生命力。

(2)跨平台

J2EE建立在Java语言基础之上,从血缘关系上继承了Java跨平台的特性,从而天生是可移植的。J2EE不依赖于特定的操作系统、中间件、硬件的特性使它特别适合于企业中复杂的异构环境系统开发,节省了企业大量的成本。

(3)灵活性

遵守规范的J2EE应用可以无须更改在各种不同应用服务器间移植,J2EE倡导的三层或多层架构容许企业根据自身规模调整系统的架构,ME提供的组件模型容许企业根据自身需求选用其中部分技术,在需要时进行增加或减少,这种灵活性使企业可以从容面对未来可能发生的任何问题。

(4)可伸缩性

企业的发展需要高可伸缩性的系统,J2EE应用模型使企业可以根据自身需要实现。

J2EE开发之常用开源项目介绍

 主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层:1)Hibe...
  • redez
  • redez
  • 2006年09月11日 01:18
  • 8017

ArrayList的实现原理

深入Java集合学习系列:ArrayList的实现原理 1. ArrayList概述:    ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null ...

J2EE开发之常用开源项目介绍

J2EE开发之常用开源项目介绍 主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源...
  • HiAllan
  • HiAllan
  • 2012年05月18日 22:39
  • 159

J2EE项目架构最佳实践

基于项目的最差实践,可以总结出一套项目架构的最佳实践原则以便今后的复用和改进。          原则1. 时间总是非常紧,需求总是在变化,技术问题总是层出不穷,千万不要认为软件工程的问题不会发...
  • ccecwg
  • ccecwg
  • 2015年02月03日 17:20
  • 262

关于J2EE项目中三层架构如何在开发中得到正确的实施

我现在参与了一个广电项目的开发,项目采用了目前比较流行的框架进行系统的架构Struts2+sping+hibernate,项目的包结构主要分成Action、Service、dao这三层,Action层...
  • LZW190
  • LZW190
  • 2012年11月24日 12:04
  • 2113

基于J2EE架构的项目开发团队中的角色与职责

【声明】 1、2内容来源:《J2EE Architects Handbook》中文翻译《J2EE系统架构师参考手册》[翻译Mellon] 1、角色   Technical a...

简单纯粹的Spring MVC架构J2EE项目

  • 2015年12月08日 21:54
  • 5.39MB
  • 下载

J2EE开发之常用开源项目介绍

  • 2008年12月02日 15:58
  • 8KB
  • 下载

J2EE常用的JAR及开源项目

J2EE常用的JAR及开源项目 activation~与javaMail有关的jar包,使用javaMail时应与mail.jar (mail.jar和activation.jar)一起加入到l...

J2EE开发之常用开源项目介绍

  • 2007年09月25日 02:47
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开源项目与J2EE架构介绍
举报原因:
原因补充:

(最多只允许输入30个字)