J2EE是一種利用Java 2平臺來簡化企業解決方案的開發、部署和管理相關的複雜問題的體系結構。J2EE技術的基礎就是核心Java平臺或Java 2平臺的標準版,J2EE不只鞏固了標準版中的許多優勢,例如"編寫一次、隨處運行"的特性、方便存取數據庫的JDBC API、CORBA技術以及可以在Internet應用中保護數據的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術的全面支持。其最終目的就是成爲一個可以使企業開發者大幅縮短投放市場時間的體系結構。J2EE體系結構提供中間層集成框架用來知足無需太多費用而又須要高可用性、高可靠性以及可擴展性的應用的需求。經過提供統一的開發平臺,J2EE下降了開發多層應用的費用和複雜性,同時提供對現有應用程序集成強有力支持,徹底支持Enterprise JavaBeans,有良好的嚮導支持打包和部署應用,添加目錄支持,加強了安全機制,提升了性能。 web
J2EE爲搭建具備可伸縮性、靈活性、易維護性的商務系統提供了良好的機制: 數據庫
- 保留現存的IT資產: 因爲企業必須適應新的商業需求,利用已有的企業信息系統方面的投資,而不是從新制定全盤方案就變得很重要。這樣,一個以漸進的(而不是激進的,全盤否認 的)方式創建在已有系統之上的服務器端平臺機制是公司所需求的。J2EE架構能夠充分利用用戶原有的投資,如一些公司使用的BEA Tuxedo、IBM CICS, IBM Encina,、Inprise VisiBroker 以及Netscape Application Server。這之因此成爲多是由於J2EE擁有普遍的業界支持和一些重要的'企業計算'領域供應商的參與。每個供應商都對現有的客戶提供了不用廢棄 已有投資,進入可移植的J2EE領域的升級途徑。因爲基於J2EE平臺的產品幾乎可以在任何操做系統和硬件配置上運行,現有的操做系統和硬件也能被保留使 用。
- 高效的開發: J2EE容許公司把一些通用的、很繁瑣的服務端任務交給中間件供應商去完成。這樣開發人員能夠集中精力在如何建立商業邏輯上,相應地縮短了開發時間。高級中間件供應商提供如下這些複雜的中間件服務:
- 狀態管理服務 -- 讓開發人員寫更少的代碼,不用關心如何管理狀態,這樣可以更快地完成程序開發。
- 持續性服務 -- 讓開發人員不用對數據訪問邏輯進行編碼就能編寫應用程序,能生成更輕巧,與數據庫無關的應用程序,這種應用程序更易於開發與維護。
- 分佈式共享數據對象CACHE服務 -- 讓開發人員編制高性能的系統,極大提升總體部署的伸縮性。
3.支持異構環境: J2EE可以開發部署在異構環境中的可移植程序。基於J2EE的應用程序不依賴任何特定操做系統、中間件、硬件。所以設計合理的基於J2EE的程序只需開 發一次就可部署到各類平臺。這在典型的異構企業計算環境中是十分關鍵的。J2EE標準也容許客戶訂購與J2EE兼容的第三方的現成的組件,把他們部署到異 構環境中,節省了由本身制訂整個方案所需的費用。 瀏覽器
4.可伸縮性: 企業必需要選擇一種服務器端平臺,這種平臺應能提供極佳的可伸縮性去知足那些在他們系統上進行商業運做的大批新客戶。基於J2EE平臺的應用程序可被部署 到各類操做系統上。例如可被部署到高端UNIX與大型機系統,這種系統單機可支持64至256個處理器。(這是NT服務器所可望不可即的)J2EE領域的供 應商提供了更爲普遍的負載平衡策略。能消除系統中的瓶頸,容許多臺服務器集成部署。這種部署可達數千個處理器,實現可高度伸縮的系統,知足將來商業應用的 須要。 安全
5.穩定的可用性: 一個服務器端平臺必須能全天候運轉以知足公司客戶、合做夥伴的須要。由於INTERNET是全球化的、無處不在的,即便在夜間按計劃停機也可能形成嚴重損 失。如果意外停機,那會有災難性後果。J2EE部署到可靠的操做環境中,他們支持長期的可用性。一些J2EE部署在WINDOWS環境中,客戶也可選擇健 壯性能更好的操做系統如Sun Solaris、IBM OS/390。最健壯的操做系統可達到99.999%的可用性或每一年只需5分鐘停機時間。這是實時性很強商業系統理想的選擇。 服務器
J2EE使用多層的分佈式應用模型,應用邏輯按功能劃分爲組件,各個應用組件根據他們所在的層分佈在不一樣的機器上。事實上,sun設計J2EE的初衷正是 爲了解決兩層模式(client/server)的弊端,在傳統模式中,客戶端擔當了過多的角色而顯得臃腫,在這種模式中,第一次部署的時候比較容易,但 難於升級或改進,可伸展性也不理想,並且常常基於某種專有的協議�D�D一般是某種數據庫協議。它使得重用業務邏輯和界面邏輯很是困難。如今J2EE 的多層企業級應用模型將兩層化模型中的不一樣層面切分紅許多層。一個多層化應用可以爲不一樣的每種服務提供一個獨立的層,如下是 J2EE 典型的四層結構: session
- 運行在客戶端機器上的客戶層組件
- 運行在J2EE服務器上的Web層組件
- 運行在J2EE服務器上的業務邏輯層組件
- 運行在EIS服務器上的企業信息系統(Enterprise information system)層軟件
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 來進行處理。 app
業務層組件
業務層代碼的邏輯用來知足銀行,零售,金融等特殊商務領域的須要,由運行在業務層上的enterprise bean 進行處理. 下圖代表了一個enterprise bean 是如何從客戶端程序接收數據,進行處理(若是必要的話), 併發送到EIS 層儲存的,這個過程也能夠逆向進行。
框架
有三種企業級的bean: 會話(session) beans, 實體(entity) beans, 和 消息驅動(message-driven) beans. 會話bean 表示與客戶端程序的臨時交互. 當客戶端程序執行完後, 會話bean 和相關數據就會消失. 相反, 實體bean 表示數據庫的表中一行永久的記錄. 當客戶端程序停止或服務器關閉時, 就會有潛在的服務保證明體bean 的數據得以保存.消息驅動 bean 結合了會話bean 和 JMS的消息監聽器的特性, 容許一個業務層組件異步接收JMS 消息.
這種基於組件,具備平臺無關性的J2EE 結構使得J2EE 程序的編寫十分簡單,由於業務邏輯被封裝成可複用的組件,而且J2EE 服務器以容器的形式爲全部的組件類型提供後臺服務. 由於你不用本身開發這種服務, 因此你能夠集中精力解決手頭的業務問題.
容器和服務
容器設置定製了J2EE服務器所提供得內在支持,包括安全,事務管理,JNDI(Java Naming and Directory Interface)尋址,遠程鏈接等服務,如下列出最重要的幾種服務:
J2EE安全(Security)模型可讓你配置 web 組件或enterprise bean ,這樣只有被受權的用戶才能訪問系統資源. 每一客戶屬於一個特別的角色,而每一個角色只容許激活特定的方法。你應在enterprise bean的佈置描述中聲明角色和可被激活的方法。因爲這種聲明性的方法,你沒必要編寫增強安全性的規則。
J2EE 事務管理(Transaction Management)模型讓你指定組成一個事務中全部方法間的關係,這樣一個事務中的全部方法被當成一個單一的單元. 當客戶端激活一個enterprise bean中的方法,容器介入一管理事務。因有容器管理事務,在enterprise bean中沒必要對事務的邊界進行編碼。要求控制分佈式事務的代碼會很是複雜。你只需在佈置描述文件中聲明enterprise bean的事務屬性,而不用編寫並調試複雜的代碼。容器將讀此文件併爲你處理此enterprise bean的事務。
JNDI 尋址(JNDI Lookup)服務向企業內的多重名字和目錄服務提供了一個統一的接口,這樣應用程序組件能夠訪問名字和目錄服務.
- 2EE遠程鏈接(Remote Client Connectivity)模型管理客戶端和enterprise bean間的低層交互. 當一個enterprise bean建立後, 一個客戶端能夠調用它的方法就象它和客戶端位於同一虛擬機上同樣.
- 生存週期管理(Life Cycle Management)模型管理enterprise bean的建立和移除,一個enterprise bean在其生存週期中將會歷經幾種狀態。容器建立enterprise bean,並在可用實例池與活動狀態中移動他,而最終將其從容器中移除。即便能夠調用enterprise bean的create及remove方法,容器也將會在後臺執行這些任務。
- 數據庫鏈接池(Database Connection Pooling)模型是一個有價值的資源。獲取數據庫鏈接是一項耗時的工做,並且鏈接數很是有限。容器經過管理鏈接池來緩和這些問題。enterprise bean可從池中迅速獲取鏈接。在bean釋放鏈接之可爲其餘bean使用。
J2EE應用組件能夠安裝部署到如下幾種容器中去:
- EJB 容器管理全部J2EE 應用程序中企業級bean 的執行. enterprise bean 和它們的容器運行在J2EE 服務器上.
- Web 容器管理全部J2EE 應用程序中JSP頁面和Servlet組件的執行. Web 組件和它們的容器運行在J2EE 服務器上.
- 應用程序客戶端容器管理全部J2EE應用程序中應用程序客戶端組件的執行. 應用程序客戶端和它們的容器運行在J2EE 服務器上.
- Applet 容器是運行在客戶端機器上的web瀏覽器和 Java 插件的結合.
J2EE平臺由一整套服務(Services)、應用程序接口(APIs)和協議構成,它對開發基於Web的多層應用提供了功能支持,下面對J2EE中的13種技術規範進行簡單的描述(限於篇幅,這裏只能進行簡單的描述):
- JDBC(Java Database Connectivity): JDBC API爲訪問不一樣的數據庫提供了一種統一的途徑,象ODBC同樣,JDBC對開發者屏蔽了一些細節問題,另外,JDCB對數據庫的訪問也具備平臺無關性。
- JNDI(Java Name and Directory Interface): JNDI API被用於執行名字和目錄服務。它提供了一致的模型來存取和操做企業級的資源如DNS和LDAP,本地文件系統,或應用服務器中的對象。
- EJB(Enterprise JavaBean): J2EE技術之因此贏得某體普遍重視的緣由之一就是EJB。它們提供了一個框架來開發和實施分佈式商務邏輯,由此很顯著地簡化了具備可伸縮性和高度複雜的 企業級應用的開發。EJB規範定義了EJB組件在什麼時候如何與它們的容器進行交互做用。容器負責提供公用的服務,例如目錄服務、事務管理、安全性、資源緩衝 池以及容錯性。但這裏值得注意的是,EJB並非實現J2EE的惟一途徑。正是因爲J2EE的開放性,使得有的廠商可以以一種和EJB平行的方式來達到同 樣的目的。
- RMI(Remote Method Invoke): 正如其名字所表示的那樣,RMI協議調用遠程對象上方法。它使用了序列化方式在客戶端和服務器端傳遞數據。RMI是一種被EJB使用的更底層的協議。
- Java IDL/CORBA: 在Java IDL的支持下,開發人員能夠將Java和CORBA集成在一塊兒。 他們能夠建立Java對象並使之可在CORBA ORB中展開, 或者他們還能夠建立Java類並做爲和其它ORB一塊兒展開的CORBA對象的客戶。後一種方法提供了另一種途徑,經過它Java能夠被用於將你的新的應用和舊的系統相集成。
- JSP(Java Server Pages): JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端所請求之後對這些Java代碼進行處理,而後將生成的HTML頁面返回給客戶端的瀏覽器。
- Java Servlet: Servlet是一種小型的Java程序,它擴展了Web服務器的功能。做爲一種服務器端的應用,當被請求時開始執行,這和CGI Perl腳本很類似。Servlet提供的功能大多與JSP相似,不過實現的方式不一樣。JSP一般是大多數HTML代碼中嵌入少許的Java代碼,而servlets所有由Java寫成而且生成HTML。
- XML(Extensible Markup Language): XML是一種能夠用來定義其它標記語言的語言。它被用來在不一樣的商務過程當中共享數據。XML的發展和Java是相互獨立的,可是,它和Java具備的相同目標正是平臺獨立性。經過將Java和XML的組合,您能夠獲得一個完美的具備平臺獨立性的解決方案。
- JMS(Java Message Service): MS是用於和麪向消息的中間件相互通訊的應用程序接口(API)。它既支持點對點的域,有支持發佈/訂閱(publish/subscribe)類型的 域,而且提供對下列類型的支持:經承認的消息傳遞,事務型消息的傳遞,一致性消息和具備持久性的訂閱者支持。JMS還提供了另外一種方式來對您的應用與舊的 後臺系統相集成。
- JTA(Java Transaction Architecture): JTA定義了一種標準的API,應用系統由此能夠訪問各類事務監控。
- JTS(Java Transaction Service): JTS是CORBA OTS事務監控的基本的實現。JTS規定了事務管理器的實現方式。該事務管理器是在高層支持Java Transaction API (JTA)規範,而且在較底層實現OMG OTS specification的Java映像。JTS事務管理器爲應用服務器、資源管理器、獨立的應用以及通訊資源管理器提供了事務服務。
- JavaMail: JavaMail是用於存取郵件服務器的API,它提供了一套郵件服務器的抽象類。不只支持SMTP服務器,也支持IMAP服務器。
- JTA(JavaBeans Activation Framework): JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節流能夠被轉換成Java對象,或者轉換自Java對象。大多數應用均可以不須要直接使用JAF。