1.2 Java EE平台主要内容
Java平台的技术内容实质上是由JCP(Java Community Process)制定的一系列Java技术规范所定义的。JCP(jcp.org)是一个开放的国际组织,其责任是发展和更新Java技术规范、参考实现(RI)、技术兼容包(TCK)。Java技术和JCP两者的原创者都是Sun Microsystems公司。如今,JCP已经由Sun Microsystems公司于1995年创造Java的非正式过程,演进到目前由数百名来自世界各地Java代表成员一同监督Java发展的正式程序。成员可以提交JSR(Java Specification Requests),通过特定程序以后,JSR可以成为规范而发布于世,或者演化为已有规范的下一版本。
Java EE从其前身J2EE开始算起,已经经历了多个版本。2003年发布的J2EE 1.4开始支持Web Services技术,2006年发布的Java EE 5开始支持注解、注入、JSF等技术。最新的Java EE 6规范已于2009年发布,名为JSR 316。Java EE 6与Java EE 5相比,取得了不少进展,包括添加了大量的新技术,进一步简化了平台,扩展了可用性,等等。例如,扩展注解功能使之可支持更多类型的Java EE组件,引入旨在裁减Java EE 6平台大小的Profile技术和Pruning技术,引入Bean Validation作为数据验证新框架,支持JAX-RS 1.0(RESTful Web Services Java API,JSR 311)规范等。
根据Java EE规范的定义,Java EE平台是由如图1-1所示的一系列容器、应用组件和API服务所组成的,这些组件和API服务本身也是由JCP或其他组织所制定的其他一些规范定义的。这里,容器是指为各种应用组件(Application Components)提供API服务(如JMS、JTA、JACC等)的Java EE运行时环境(Runtime Environments),可提供诸如目录服务、事务管理、安全性、资源缓冲池及容错性等各种公共服务,包括:应用客户端容器(Application Client Container)、Applet容器(Applet Container)、Web容器(Web Container)和EJB容器(EJB Container)4种。在应用客户端容器中运行的应用组件主要是指各类桌面Java应用程序;在Applet容器中运行的应用组件主要是指各种浏览器Applet。在Web容器中运行的应用组件包括可响应HTTP请求的Servlet、JSP页面等。EJB容器则提供了支持包含业务逻辑处理的EJB组件运行的一个可管理环境。上述各类应用组件有的可以在Java EE服务器上部署、运行和管理(如Servlet、JSP页面、EJB组件),有的则可以在Java EE服务器上部署和管理,但必须下载到客户端才能运行(如HTML页面、Applet)。
图1-1 Java EE核心技术平台
Java EE为了适应大型企业级系统开发的需要,制定和规范了大量的技术。下面列举在开发基于Java EE平台的应用时经常需要涉及的一些API服务。
① JDBC(Java Database Connectivity,Java数据库连接):JDBC是一种用于执行SQL语句的Java API,可为访问不同的关系型数据库提供一种统一的途径。
② JNDI(Java Name and Directory Interface,Java命名和目录接口):JNDI被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源,如DNS、LDAP、本地文件系统或应用服务器中的对象。
③ RMI(Remote Method Invoke,远程方法调用):RMI定义了调用远程对象上的方法的标准接口。作为一种被EJB使用的更低层的协议,它通过使用序列化方式在客户端和服务器端之间传递数据。
④ Java IDL/CORBA:Java IDL使得Java EE应用组件可通过IIOP协议调用外部的可用各种编程语言开发的CORBA对象,从而实现不同应用系统之间的集成。
⑤ JMS(Java Message Service,Java消息服务):JMS是用于与消息中间件相互通信的应用程序接口。它既支持点对点的消息模型,也支持发布/订阅的消息模型。Java EE 6规范要求支持JMS 1.1规范(JSR 914)。
⑥ JTA(Java Transaction Architecture,Java事务架构):JTA定义了面向分布式事务服务的标准API,可支持事务范围的界定、事务的提交和回滚。Java EE 6规范要求支持JTA 1.1规范(JSR 907)。
⑦ JavaMail:JavaMail是用于存取邮件服务器的API。它提供了一套可访问邮件服务器的抽象类,不仅支持SMTP服务器,也支持IMAP服务器。Java EE 6规范要求支持JavaMail 1.4规范(JSR 919)。
⑧ JAF(JavaBeans Activation Framework,JavaBeans激活框架):JavaMail利用JAF来处理MIME编码的邮件附件。通过JAF,MIME的字节流可以被转换成Java对象,或者自Java对象转换。
⑨ JCA(Java EE Connector Architecture,Java EE连接器架构):JCA提供了一套集成各类异构的企业信息系统(Enterprise Information Systems,EIS)的标准接口。通过开发基于JCA的某个EIS连接适配器,任何Java EE应用软件都可以访问这个EIS。
⑩ Web服务:Java EE平台通过多种技术提供了对Web服务的支持,例如:Java API for XML Web Services(JAX-WS)和Java API for XML-based RPC(JAX-RPC)可支持基于SOAP/HTTP的Web服务调用,JAX-WS和Java Architecture for XML Binding(JAXB)定义了Java对象和XML数据之间的映射,Java API for RESTful Web Services(JAX-RS)则提供了对REST风格的Web服务的支持。
下面介绍开发基于Java EE平台的应用时经常需要涉及的一些应用组件。
① JSP(Java Server Pages):JSP页面由XHTML/HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求后对这些Java代码进行处理,然后将生成的XHTML/HTML页面返回给客户端的浏览器。Java EE 6规范要求Web容器支持JSP 2.2规范(JSR 245)。
② Java Servlet:Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是在XHTML/HTML代码中嵌入少量的Java代码,而Servlet全部由Java写成并且生成XHTML/HTML代码。Java EE 6规范要求Web容器支持Servlet 3.0规范(JSR 315)。
③ EJB(Enterprise JavaBean,企业JavaBean):EJB定义了一个用于开发基于组件的、企业级的、分布式多层应用系统的标准。基于该标准开发的企业JavaBean封装了应用系统中的核心业务逻辑,可分为:会话Bean(Session Bean)、实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。Java EE 6规范要求EJB容器支持EJB 3.1规范(JSR 318)。