常常聽朋友說什麼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容器 服務器端容器,包括兩種組件JSP和Servlet,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管理這個企業應用。
如對本文有疑問,請提交到交流社區,廣大熱心網友會爲你解答!! 點擊進入社區編程