各种版本已经更名以取消其中的数字“2”:JAVA EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。 Java EE的组成
随着Java技术的发展,Java EE平台得到了迅速的发展,成为Java语言中最活跃的体系之一。现如今,Java EE不仅仅是指一种标准平台(Platform),它更多的表达着一种软件架构和设计思想。
JAVA EE的API框架如下图所示:
Java EE是一系列技术标准所组成的平台,包括:
Applet - Java Applet EJB - 企业级JavaBean(Enterprise Java Beans) JAAS - Java Authentication and Authorization Service JACC - JAVA EE Authorization Contract for Containers JAF - Java Beans Activation Framework JAX-RPC - Java API for XML-Based Remote Procedure Calls JAX-WS - Java API for XML Web Services JAXM - Java API for XML Messaging JAXP - Java XML解析API(Java API for XML Processing) 36
JAXR - Java API for XML Registries JCA - JAVA EE连接器架构(Java EE Connector Architecture) JDBC - Java数据库联接(Java Database Connectivity) JMS - Java消息服务(Java Message Service) JMX - Java Management JNDI - Java名字与目录接口(Java Naming and Directory Interface) JSF - Java Server Faces JSP - Java服务器页面(Java Server Pages) JSTL - Java服务器页面标准标签库(Java Server Pages Standard Tag Library) JTA - Java事务API(Java Transaction API) JavaMail Servlet - Java Servlet API StAX - Streaming APIs for XML Parsers WS - Web Services ? APPLET Applet或Java小应用程序是一种在Web环境下,运行于客户端的Java程序组件。它也是1990年代中期,Java在诞生后得以一炮走红的功臣之一。通常,每个Applet的功能都比较单一(例如仅用于显示一个舞动的Logo),因此它被称作“小应用程序”。
Applet必须运行于某个特定的“容器”,这个容器可以是浏览器本身,也可以是通过各种插件,或者包括支持Applet的移动设备在内的其他各种程序来运行。与一般的Java应用程序不同,Applet不是通过main方法来运行的(参见Java的Hello World程序和Java Applet的Hello World程序)。在运行时Applet通常会与用户进行互动,显示动态的画面,并且还会遵循严格的安全检查,阻止潜在的不安全因素(例如根据安全策略,限制Applet对客户端文件系统的访问)。 JAVA EE容器
瘦客户端的多层应用程序总是很难开发,因为它包括各个层的事务处理、状
37
态管理、多线程、资源池和其他复杂底层细节等等的错综复杂的编码。但是基于组件和平台独立的Java EE平台使Java EE应用程序容易开发,因为商业逻辑被封装在可重用的组件(EJB)中。另外Java EE服务器以容器的形式为所有组件提供底层服务,因此你不必再为这些底层服务二伤脑筋,而可以专注于解决商业问题。 容器服务
容器(Container)是组件和支持组件功能的底层特定平台(如数据库)之间的接口。在运行Web组件、企业Bean或者Java EE应用程序客户端之前,你必须将它们装配到一个Java EE应用程序中,并部署它们到容器中。
装配的过程包括为Java EE应用程序的每个组件和Java EE应用程序本身设置容器的配置信息。这些配置信息定制Java EE服务器支持的底层服务,包括安全,事务管理,Java命名和目录接口(JNDI)查找和远程连接等。下面使这些服务的精简描述:
Java EE安全模型让你配置Web组件或者企业Bean以使系统资源只被授权用户访问;
Java EE事务模型让你指定属于同一个事务的多个方法以使这些方法作为一个原子操作被执行;
JNDI查找服务为企业应用中的多种命名和目录服务提供统一接口使应用程序组件可以统一访问这些命名和目录服务;
Java EE远程连接模型管理客户端和企业Bean之间的底层通信。企业Bean被创建后,客户端调用它的方法就像在本地虚拟机中的调用一样;
事实上,Java EE体系结构提供可配置服务意味着同一个Java EE应用程序中的组件可以根据不同的部署环境而有不同的行为。例如,一个企业Bean的安全配置可以使它在一种产品环境中有一个级别的数据库数据访问权限,而在另一种产品环境中有不同的数据库数据访问权限。
容器也管理着很多不可配置的服务,如企业Bean和Servlet的生命周期,数据库连接池,数据持久化机制和Java EE平台API的访问权等等。尽管数据持久化机制是不可配置服务,但是Java EE体系结构允许你忽略容器管理的持久性(Container-Managed Persistence,CMP)机制在企业Bean实现中加入合适的代码,当然除非你确实需要比容器管理持久性机制提供的更多的应用程序控制权,
38
否则使用容器管理的持久性。例如你可以用Bean管理的持久性(Bean-Managed Persistence,BMP)机制来实现自己的查找方法或者创建一个定制的数据库缓冲池。 容器类型
部署过程将Java EE应用程序安装到Java EE容器中。图1-5展示了组件在容器中的情况:
Java EE服务器和容器(Container)
1)Java EE server(JAVA EE服务器)
Java EE产品的运行时服务部分。一个Java EE服务器提供EJB容器(EJB Container)和Web容器(Web Container)。 2)EJB容器
管理Java EE应用程序中企业Bean的运行。企业Bean和它们的容器在Java EE服务其中运行。 3)Web容器
管理JAVA EE应用程序中JSP页面和Servlet组件的运行。Web组件和容器也在JAVA EE服务其中运行。
4)Application client container(应用程序客户端容器)
管理应用程序客户端组件的运行。应用程序客户端和它的容器运行在客户机。
5)Applet container(Applet容器)
39
管理Applet的运行。由在客户端运行的浏览器和Java插件组成。 ? EJB
1、概念
企业级JavaBean(Enterprise JavaBean, EJB)是一个用来构筑企业级应用的服务器端可被管理组件。
Java企业版API(Java Enterprise Edition)中提供了对EJB的规范。EJB是一个封装有某个应用程序之业务逻辑服务器端组件。EJB最早于1997年由IBM提出,旋即被太阳微系统采用并形成标准(EJB 1.0 和EJB 1.1)。其后在Java社区进程(Java Community Process)支持下陆续有一些JSR被制订来定义新的EJB标准,分别是JSR 19 (EJB 2.0), JSR 153 (EJB 2.1) 以及最新的JSR 220 (EJB 3.0)。
EJB规范的目的在于为企业及应用开发人员实现后台业务提供一个标准方式,从而解决一些此前总是在作业过程中总是重复发生的问题。EJB以一个标准方式自动处理了诸如数据持久化,事务集成,安全对策等不同应用的共有问题,使得软件开发人员可以专注于程序的特定需求而不再饱受那些非业务元素的困扰。
据此,EJB规范明确了一个应用服务器应当支持的中间管理细目,包括: 1)数据持久化 ; 2)事务处理 ; 3)并发控制 ;
4)基于JMS的事件驱动 ; 5)基于JNDI的名字和空间管理 ; 6)基于JCE和JAAS的安全管理 ; 7)应用服务器端的软件组件部署; 8)使用RMI-IIOP协议的远程过程调用; 9)将业务方法暴露为Web服务;
此外,EJB定义文档还指定了EJB容器和各EJB的角色定位,以及如何将EJB部署至EJB容器当中。
2、历史:从拥抱到抛弃
由于IBM和Sun Microsystems等EJB提倡者力推其前景,起初一些大公司
40