J2EE诞生的背景是什么?
Java 2平台企业版,也就是J2EE,定义了开发多层企业应用程序的标准。它的诞生并不是偶然的,它是在各种条件积累成熟之下的产物。
原因之一:java语言的巨大成功。1994年,java诞生,由于其语言的简单性和,"编写一次,任意运行"的优势,以及internet和intranet迅猛的增长,促使大量开发者和IT机构。
在自己的项目中使用java。短短的几年,Java的风潮就席卷全球。
原因之二:c/s结构逐渐转变为多层体系结构。在带来巨大的灵活性后,也同时增加了创建、测试、配置、管理和维护应用组件的复杂性。J2EE平台的出现,正好降低了这些复
杂性。
原因之三:企业,公司纷纷需要参与Internet中来,各种业务都进入了网络。这些企业级应用的快速增长促使其需要一个强壮的、企业级的、以web为中心的应用结构来支撑。
终于,2000年,sun和它的合作者们(IBM等)联手为我们带来了J2EE。而现在用的最多的是J2EE 1.3版本。
三
那么,J2EE平台为企业应用带了什么好处呢?
首先,它在各种领域创建了使用于企业计算需要的一系列标准,如数据库链接、消息中间件、web组件、企业业务组件等等,这些标准构成了企业应用开发的全过程。
其次,J2EE基于开放标准,提供开发组件的标准平台,适用于不同的供应商,用户因此有了更多厂家的选择。
再次,J2EE缩短了产品投入市场时间。产品都是在现有的基础部件之上开发,从而摆脱了自己开发中间件的困扰而专注于自己的业务应用。
在一些资料上也提到了其他的一些好处,但我觉得以上三点应该是J2EE给这个世界带来的最根本的好处了。
四
J2EE到底是什么?
说到底,它是Sun公司定义的一个开发分布式企业级应用的规范。它提供了一个多层次的分布式应用模型和一系列开发技术规范。
J2EE架构包括以下四个层次:
(一) 用户层(Client Tier)
也就是客户端层。用来于用户交互,并把来自系统的信息显示给用户。包括html用户,applet和java application等。
(二) web层
web层由web服务器和web组件构成。J2EE web组件包括JSP和Servlet。该层主要用来处理客户请求,调用相应的逻辑模块,并把结果以动态网页的形式返回到客户端。
(三) 业务层 (Business Tier)
这一层处理应用的核心业务逻辑。业务组件通常被实现为运行在EJB容器内的EJB组件,EJB容器提供组件生命周期、管理持久性、事务和资源分配等。所以这一层也叫EJB层或
应用层。
四) 企业信息系统层 (EIS Tier)
处理企业系统软件,包括企业基础系统、数据库系统和其他遗留系统。EIS层是J2EE应用和非J2EE应用或遗产系统集成的连接点。
其中,业务层和Web层组成了三层J2EE应用的中间层。
J2EE应用程序组件
J2EE应用程序是由组件构成的.J2EE组件是具有独立功能的软件单元,它们通过相关的类和文件组装成J2EE应用程序,并与其他组件交互。J2EE说明书中定义了以下的J2EE组件:
- 应用客户端程序和applets是客户层组件.
- Java Servlet和JavaServer 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 消息.
以上参考自:http://www.ibm.com/developerworks/cn/java/j2ee/ j2ee全面介绍
五
为实现企业级分布式应用,J2EE定义了丰富的技术标准,包括API。这些API是J2EE每一个产品都必须提供给应用组件的。这些技术涵盖数据库访问、分布式通信、安全等等。
(一) 组件技术:J2EE的核心思想是基于组件和容器的应用。组件可以重用,共享,分布的。
(二) Servlet:用来生成动态页面或接受用户请求产生相应操作。例如作为MVC模式的controler。
(三) JSP:为用户编写动态页面提供了一种简便强大的工具,实际上是通过容器产生相应的Servlet来运行。
(四) EJB:这是J2EE的核心技术,但是并不是说J2EE就是EJB。EJB包括Session Bean,Entity Bean ,Message driven Bean三种形式。其中,Session Bean包括了有状态和无状态两种,它一般封装了具体的业务逻辑;Entity Bean分为CMP和BMP,它是持久数据的对象表示,与数据库中的表直接对应,具体开发中,会话bean和实体bean往往需要结合起来使用;至于Message driven Bean称作为消息驱动Bean,实际上是JMS应用的封装组件。
(五) JDBC:是JAVA语言提供的独立于特定数据库管理系统的开发接口。它提供了一个通用的访问SQL数据库和存储结构的机制,支持基本SQL功能。它包括四种类型的驱动程序:1)通过jdbc-odbc桥访问;2)通过数据库网络库来访问;3)通过中间件来访问;4)纯JAVA驱动,直接访问。其中,1,2,4属于JDBC两层应用,第3种是JDBC三层应用,需要在应用服务器中配置连接池和数据源。
(六) RMI/IIOP:远程方法调用以及Internet Inter-ORB协议。
(七) Java IDL:调用CORBA服务的API。将CORBA融入java平台来提供交互操作的服务。
(八) JNDI:java命名和目录接口,在企业命名和目录服务中访问数据的API。
(九) JMS:java消息服务,可以采用队列和主题两种消息发送方式达到消息的异步传输。
(十) Java 安全:安全是J2EE架构重要的一部分,它通过JAAS(java验证于授权服务),JCE(java安全扩展),JSSE(java安全套接字扩展)几部分来实现。
(十一) JTA:这是一组事务管理的API。程序可以自己来开始、提交、回滚事务,也可以是容器和事务管理器交互。
(十二) Java Mail:发送和接受电子邮件的API。
(十三) 其他,J2EE1.3还包括了对J2EE连接器结构,JAXP(XML解析的Java API)的支持。
总之,J2EE是一个庞大的,分支众多的技术联合体。同时又是一个不断接受新思想,产生新问题的系统,真让人头疼不已^_^。
六
最后,J2EE的提出者们认为,在企业应用的开发和配置的生命周期中,J2EE平台使用一系列的角色来概念化于各种工作流相关的任务。具体角色如下:
J2EE产品提供者
应用组件提供者
应用集成商
应用配置商
系统管理员
工具提供商
虽然有这样的分工,但实际往往一个厂家就做了两三部分的事情,而在开发过程中,一个人也承当了两种角色任务。但是应该清楚,企业应用是一个复杂的,需要许多组织共同协同才能完成的任务。