Java EE 学习(1):什么是Java EE

转载: http://www.jb51.net/article/13059.htm程序员

常常听朋友说什么J2EE,终于知道点什么是J2EE了,汗一个,上网搜了下这个说的比较详细了,J2EE,Java2平台企业版(Java 2 Platform Enterprise Edition), 是Sun公司为企业级应用推出的标准平台。Java平台共分为三个主要版本Java EE、Java SE和Java ME。  

Sun公司在1998年发表JDK1.2版本的时候,使用了新名称Java 2 Platform,即“Java2平台”,修改后的JDK称为Java 2 Platform Software Develping Kit,即J2SDK。并分为标准版(Standard Edition,J2SE), 企业版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。J2EE便由此诞生。  

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各类版本已经改名以取消其中的数字“2”:J2EE改名为Java EE, J2SE改名为Java SE,J2ME改名为Java ME。  

随着Java技术的发展,J2EE平台获得了迅速的发展,成为Java语言中最活跃的体系之一。现现在,J2EE不只仅是指一种标准平台(Platform),她更多的表达着一种软件架构和设计思想。  

J2EE是一系列技术标准所组成的平台,包括:  

* Applet - Java Applet  
* EJB - 企业级JavaBean(Enterprise Java Beans)  
* JAAS - Java Authentication and Authorization Service  
* JACC - J2EE 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  
* JAXP - Java XML解析API(Java API for XML Processing)  
* JAXR - Java API for XML Registries  
* JCA - J2EE链接器架构(J2EE 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  数据库

J2EE组成了一个完整企业级应用的不一样部分归入不一样的容器(Container),每一个容器中都包含若干组件(这些组件是须要部署在相应容器中的),同时各类组件都能使用各类J2EE Service/API。J2EE容器包括: 
◆ Web容器 服务器端容器,包括两种组件JSPServlet,JSP和Servlet都是Web服务器的功能扩展,接受Web请求,返回动态的Web页面。Web容器中的组件可以使用EJB容器中的组件完成复杂的商务逻辑。
◆ EJB容器 服务器端容器,包含的组件为EJB(Enterprise JavaBeans),它是J2EE的核心之一,主要用于服务器端的商业逻辑的实现。EJB规范定义了一个开发和部署分布式商业逻辑的框架,以简化企业级应用的开发,使其较容易地具有可伸缩性、可移植性、分布式事务处理、多用户和安全性等。
◆ Applet容器 客户端容器,包含的组件为Applet。Applet是嵌在浏览器中的一种轻量级客户端,通常而言,仅当使用Web页面没法充分地表现数据或应用界面的时候,才使用它。Applet是一种替代Web页面的手段,咱们仅可以使用J2SE开发Applet,Applet没法使用J2EE的各类Service和API,这是为了安全性的考虑。
◆ Application Client容器 客户端容器,包含的组件为Application Client。Application Client相对Applet而言是一种较重量级的客户端,它可以使用J2EE的大多数Service和API。
经过这四个容器,J2EE可以灵活地实现前面描述的企业级应用的架构。
在View部分,J2EE提供了三种手段:Web容器中的JSP(或Servlet)、Applet和Application Client,分别可以实现面向浏览器的数据表现和面向桌面应用的数据表现。Web容器中的Servlet是实现Controller部分业务流程控制的主要手段;而EJB则主要针对Model部分的业务逻辑实现。至于与各类企业资源和企业级应用相链接,则是依靠J2EE的各类服务和API。
在J2EE的各类服务和API中,JDBC和JCA用于企业资源(各类企业信息系统和数据库等)的链接,JAX-RPC、JAXR和SAAJ则是实现Web Services和Web Services链接的基本支持。
J2EE的各类组件
咱们就J2EE的各类组件、服务和API,进行更加详细的阐述,看看在开发不一样类型的企业级应用时,根据各自需求和目标的不一样,应当如何灵活使用并组合不一样的组件和服务。
· Servlet
Servlet是Java平台上的CGI技术。Servlet在服务器端运行,动态地生成Web页面。与传统的CGI和许多其它相似CGI的技术相比,Java Servlet具备更高的效率并更容易使用。对于Servlet,重复的请求不会致使同一程序的屡次转载,它是依靠线程的方式来支持并发访问的。
· JSP
JSP(Java Server Page)是一种实现普通静态HTML和动态页面输出混合编码的技术。从这一点来看,很是相似Microsoft ASP、PHP等技术。借助形式上的内容和外观表现的分离,Web页面制做的任务能够比较方便地划分给页面设计人员和程序员,并方便地经过JSP来合成。在运行时态,JSP将会被首先转换成Servlet,并以Servlet的形态编译运行,所以它的效率和功能与Servlet相比没有差异,同样具备很高的效率。
· EJB
EJB定义了一组可重用的组件:Enterprise Beans。开发人员能够利用这些组件,像搭积木同样创建分布式应用。在装配组件时,全部的Enterprise Beans都须要配置到EJB服务器(通常的Weblogic、WebSphere等J2EE应用服务器都是EJB服务器)中。EJB服务器做为容器和低层平台的桥梁管理着EJB容器,并向该容器提供访问系统服务的能力。全部的EJB实例都运行在EJB容器中。EJB容器提供了系统级的服务,控制了EJB的生命周期。EJB容器为它的开发人员代管了诸如安全性、远程链接、生命周期管理及事务管理等技术环节,简化了商业逻辑的开发。EJB中定义了三种Enterprise Beans:
◆ Session Beans
◆ Entity Beans
◆ Message-driven Beans
· JDBC
JDBC(Java Database Connectivity,Java数据库链接)API是一个标准SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据库开发人员可以用标准Java API编写数据库应用程序。JDBC API主要用来链接数据库和直接调用SQL命令执行各类SQL语句。利用JDBC API能够执行通常的SQL语句、动态SQL语句及带IN和OUT参数的存储过程。Java中的JDBC至关与Microsoft平台中的ODBC(Open Database Connectivity)。
· JMS
JMS(Java Message Service,Java消息服务)是一组Java应用接口,它提供建立、发送、接收、读取消息的服务。JMS API定义了一组公共的应用程序接口和相应语法,使得Java应用可以和各类消息中间件进行通讯,这些消息中间件包括IBM MQ-Series、Microsoft MSMQ及纯Java的SonicMQ。经过使用JMS API,开发人员无需掌握不一样消息产品的使用方法,也可使用统一的JMS API来操纵各类消息中间件。经过使用JMS,可以最大限度地提高消息应用的可移植性。 JMS既支持点对点的消息通讯,也支持发布/订阅式的消息通讯。
· JNDI
因为J2EE应用程序组件通常分布在不一样的机器上,因此须要一种机制以便于组件客户使用者查找和引用组件及资源。在J2EE体系中,使用JNDI(Java Naming and Directory Interface)定位各类对象,这些对象包括EJB、数据库驱动、JDBC数据源及消息链接等。JNDI API为应用程序提供了一个统一的接口来完成标准的目录操做,如经过对象属性来查找和定位该对象。因为JNDI是独立于目录协议的,应用还可使用JNDI访问各类特定的目录服务,如LDAP、NDS和DNS等。
· JTA
JTA(Java Transaction API)提供了J2EE中处理事务的标准接口,它支持事务的开始、回滚和提交。同时在通常的J2EE平台上,总提供一个JTS(Java Transaction Service)做为标准的事务处理服务,开发人员可使用JTA来使用JTS。
· JCA
JCA(J2EE Connector Architecture)是J2EE体系架构的一部分,为开发人员提供了一套链接各类企业信息系统(EIS,包括ERP、SCM、CRM等)的体系架构,对于EIS开发商而言,它们只须要开发一套基于JCA的EIS链接适配器,开发人员就可以在任何的J2EE应用服务器中链接并使用它。基于JCA的链接适配器的实现,须要涉及J2EE中的事务管理、安全管理及链接管理等服务组件。
· JMX
JMX(Java Management Extensions)的前身是JMAPI。JMX致力于解决分布式系统管理的问题。JMX是一种应用编程接口、可扩展对象和方法的集合体,能够跨越各类异构操做系统平台、系统体系结构和网络传输协议,开发无缝集成的面向系统、网络和服务的管理应用。JMX是一个完整的网络管理应用程序开发环境,它同时提供了厂商须要收集的完整的特性清单、可生成资源清单表格、图形化的用户接口;访问SNMP的网络API;主机间远程过程调用;数据库访问方法等。
· JAAS
JAAS(Java Authentication and Authorization Service)实现了一个Java版本的标准Pluggable Authentication Module(PAM)的框架。JAAS可用来进行用户身份的鉴定,从而可以可靠并安全地肯定谁在执行Java代码。同时JAAS还能经过对用户进行受权,实现基于用户的访问控制。
· JACC
JACC(Java Authorization Service Provider Contract for Containers)在J2EE应用服务器和特定的受权认证服务器之间定义了一个链接的协约,以便将各类受权认证服务器插入到J2EE产品中去。
· JAX-RPC
经过使用JAX-RPC(Java API for XML-based RPC),已有的Java类或Java应用都可以被从新包装,并以Web Services的形式发布。JAX-RPC提供了将RPC参数(in/out)编码和解码的API,使开发人员能够方便地使用SOAP消息来完成RPC调用。一样,对于那些使用EJB(Enterprise JavaBeans)的商业应用而言,一样可使用JAX-RPC来包装成Web服务,而这个Web Servoce的WSDL界面是与原先的EJB的方法是对应一致的。JAX-RPC为用户包装了Web服务的部署和实现,对Web服务的开发人员而言,SOAP/WSDL变得透明,这有利于加速Web服务的开发周期。
· JAXR
JAXR(Java API for XML Registries)提供了与多种类型注册服务进行交互的API。JAXR运行客户端访问与JAXR规范相兼容的Web Servcices,这里的Web Services即为注册服务。通常来讲,注册服务老是以Web Services的形式运行的。JAXR支持三种注册服务类型:JAXR Pluggable Provider、Registry-specific JAXR Provider、JAXR Bridge Provider(支持UDDI Registry和ebXML Registry/Repository等)。
· SAAJ
SAAJ(SOAP with Attachemnts API for Java)是JAX-RPC的一个加强,为进行低层次的SOAP消息操纵提供了支持。
企业级应用示例
下面咱们经过假设一个企业应用的J2EE实现,来了解各类组件和服务的应用。假设应用对象是计算机产品的生产商/零售商的销售系统,这个销售系统可以经过本身的网站发布产品信息,同时也能将产品目录传送给计算机产品交易市场。销售系统可以在线接受订单(来自本身的Web网站或者来自计算机产品交易市场),并随后转入内部企业管理系统进行相关的后续处理。
参见图3,这个企业应用能够这种方式架构。该企业应用的核心是产品目录管理和产品定购管理这两个业务逻辑,使用EJB加以实现,并部署在EJB容器中。因为产品目录和定购信息都须要持久化,所以使用JDBC链接数据库,并使用JTA来完成数据库存取事务。
图3 J2EE应用示例
而后使用JSP/Servlet来实现应用的Web表现:在线产品目录浏览和在线定购。为了将产品目录发送给特定的交易市场,使用JMS实现异步的基于消息的产品目录传输。为了使得更多的其它外部交易市场可以集成产品目录和定购业务,须要使用Web Services技术包装商业逻辑的实现。因为产品定购管理须要由公司内部雇员进行处理,所以须要集成公司内部的用户系统和访问控制服务以方便雇员的使用,使用JACC集成内部的访问控制服务,使用JNDI集成内部的用户目录,并使用JAAS进行访问控制。因为产品订购事务会触发后续的企业ERP系统的相关操做(包括仓储、财务、生产等),须要使用JCA链接企业ERP。
最后为了将这个应用归入到企业总体的系统管理体系中去,使用Application Client架构了一个管理客户端(与其它企业应用管理应用部署在一台机器上),并经过JMX管理这个企业应用。

如对本文有疑问,请提交到交流社区,广大热心网友会为你解答!! 点击进入社区编程

相关文章
相关标签/搜索