明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

J2EE所有方面簡介

[摘要]本文從五個方面對J2EE進行了比較全面的介紹。從J2EE的概念說起,到它的優(yōu)勢,到J2EE典型的四層模型,和它的框架結(jié)構,最后是J2EE十三種核心技術的一個簡介。本文分門別類的對J2EE中的服務,組件,層次,容器,API都做了比較詳細的介紹,相信看完此文,讀者會對J2EE有一個更清晰的認識。 一...
本文從五個方面對J2EE進行了比較全面的介紹。從J2EE的概念說起,到它的優(yōu)勢,到J2EE典型的四層模型,和它的框架結(jié)構,最后是J2EE十三種核心技術的一個簡介。本文分門別類的對J2EE中的服務,組件,層次,容器,API都做了比較詳細的介紹,相信看完此文,讀者會對J2EE有一個更清晰的認識。 
一. J2EE的概念 
目前,Java 2平臺有3個版本,它們是適用于小型設備和智能卡的Java 2平臺Micro版(Java 2 Platform Micro Edition,J2ME)、適用于桌面系統(tǒng)的Java 2平臺標準版(Java 2 Platform Standard Edition,J2SE)、適用于創(chuàng)建服務器應用程序和服務的Java 2平臺企業(yè)版(Java 2 Platform Enterprise Edition,J2EE)。 

J2EE是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關的復雜問題的體系結(jié)構。J2EE技術的基礎就是核心Java平臺或Java 2平臺的標準版,J2EE不僅鞏固了標準版中的許多優(yōu)點,例如"編寫一次、隨處運行"的特性、方便存取數(shù)據(jù)庫的JDBC API、CORBA技術以及能夠在Internet應用中保護數(shù)據(jù)的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術的全面支持。其最終目的就是成為一個能夠使企業(yè)開發(fā)者大幅縮短投放市場時間的體系結(jié)構。 

J2EE體系結(jié)構提供中間層集成框架用來滿足無需太多費用而又需要高可用性、高可靠性以及可擴展性的應用的需求。通過提供統(tǒng)一的開發(fā)平臺,J2EE降低了開發(fā)多層應用的費用和復雜性,同時提供對現(xiàn)有應用程序集成強有力支持,完全支持Enterprise JavaBeans,有良好的向?qū)еС执虬筒渴饝,添加目錄支持,增強了安全機制,提高了性能。 

二. J2EE的優(yōu)勢 
J2EE為搭建具有可伸縮性、靈活性、易維護性的商務系統(tǒng)提供了良好的機制: 

保留現(xiàn)存的IT資產(chǎn): 由于企業(yè)必須適應新的商業(yè)需求,利用已有的企業(yè)信息系統(tǒng)方面的投資,而不是重新制定全盤方案就變得很重要。這樣,一個以漸進的(而不是激進的,全盤否定的)方式建立在已有系統(tǒng)之上的服務器端平臺機制是公司所需求的。J2EE架構可以充分利用用戶原有的投資,如一些公司使用的BEA Tuxedo、IBM CICS, IBM Encina,、Inprise VisiBroker 以及Netscape Application Server。這之所以成為可能是因為J2EE擁有廣泛的業(yè)界支持和一些重要的′企業(yè)計算′領域供應商的參與。每一個供應商都對現(xiàn)有的客戶提供了不用廢棄已有投資,進入可移植的J2EE領域的升級途徑。由于基于J2EE平臺的產(chǎn)品幾乎能夠在任何操作系統(tǒng)和硬件配置上運行,現(xiàn)有的操作系統(tǒng)和硬件也能被保留使用。 
高效的開發(fā): J2EE允許公司把一些通用的、很繁瑣的服務端任務交給中間件供應商去完成。這樣開發(fā)人員可以集中精力在如何創(chuàng)建商業(yè)邏輯上,相應地縮短了開發(fā)時間。高級中間件供應商提供以下這些復雜的中間件服務: 
狀態(tài)管理服務 -- 讓開發(fā)人員寫更少的代碼,不用關心如何管理狀態(tài),這樣能夠更快地完成程序開發(fā)。 
持續(xù)性服務 -- 讓開發(fā)人員不用對數(shù)據(jù)訪問邏輯進行編碼就能編寫應用程序,能生成更輕巧,與數(shù)據(jù)庫無關的應用程序,這種應用程序更易于開發(fā)與維護。 
分布式共享數(shù)據(jù)對象CACHE服務 -- 讓開發(fā)人員編制高性能的系統(tǒng),極大提高整體部署的伸縮性。 
支持異構環(huán)境: J2EE能夠開發(fā)部署在異構環(huán)境中的可移植程序;贘2EE的應用程序不依賴任何特定操作系統(tǒng)、中間件、硬件。因此設計合理的基于J2EE的程序只需開發(fā)一次就可部署到各種平臺。這在典型的異構企業(yè)計算環(huán)境中是十分關鍵的。J2EE標準也允許客戶訂購與J2EE兼容的第三方的現(xiàn)成的組件,把他們部署到異構環(huán)境中,節(jié)省了由自己制訂整個方案所需的費用。 
可伸縮性: 企業(yè)必須要選擇一種服務器端平臺,這種平臺應能提供極佳的可伸縮性去滿足那些在他們系統(tǒng)上進行商業(yè)運作的大批新客戶;贘2EE平臺的應用程序可被部署到各種操作系統(tǒng)上。例如可被部署到高端UNIX與大型機系統(tǒng),這種系統(tǒng)單機可支持64至256個處理器。(這是NT服務器所望塵莫及的)J2EE領域的供應商提供了更為廣泛的負載平衡策略。能消除系統(tǒng)中的瓶頸,允許多臺服務器集成部署。這種部署可達數(shù)千個處理器,實現(xiàn)可高度伸縮的系統(tǒng),滿足未來商業(yè)應用的需要。 
穩(wěn)定的可用性: 一個服務器端平臺必須能全天候運轉(zhuǎn)以滿足公司客戶、合作伙伴的需要。因為INTERNET是全球化的、無處不在的,即使在夜間按計劃停機也可能造成嚴重損失。若是意外停機,那會有災難性后果。J2EE部署到可靠的操作環(huán)境中,他們支持長期的可用性。一些J2EE部署在WINDOWS環(huán)境中,客戶也可選擇健壯性能更好的操作系統(tǒng)如Sun Solaris、IBM OS/390。最健壯的操作系統(tǒng)可達到99.999%的可用性或每年只需5分鐘停機時間。這是實時性很強商業(yè)系統(tǒng)理想的選擇。 

三. J2EE 的四層模型 
J2EE使用多層的分布式應用模型,應用邏輯按功能劃分為組件,各個應用組件根據(jù)他們所在的層分布在不同的機器上。事實上,sun設計J2EE的初衷正是為了解決兩層模式(client/server)的弊端,在傳統(tǒng)模式中,客戶端擔當了過多的角色而顯得臃腫,在這種模式中,第一次部署的時候比較容易,但難于升級或改進,可伸展性也不理想,而且經(jīng);谀撤N專有的協(xié)議??通常是某種數(shù)據(jù)庫協(xié)議。它使得重用業(yè)務邏輯和界面邏輯非常困難。現(xiàn)在J2EE 的多層企業(yè)級應用模型將兩層化模型中的不同層面切分成許多層。一個多層化應用能夠為不同的每種服務提供一個獨立的層,以下是 J2EE 典型的四層結(jié)構: 

運行在客戶端機器上的客戶層組件 
運行在J2EE服務器上的Web層組件 
運行在J2EE服務器上的業(yè)務邏輯層組件 
運行在EIS服務器上的企業(yè)信息系統(tǒng)(Enterprise information system)層軟件 

J2EE應用程序組件 
J2EE應用程序是由組件構成的.J2EE組件是具有獨立功能的軟件單元,它們通過相關的類和文件組裝成J2EE應用程序,并與其他組件交互。J2EE說明書中定義了以下的J2EE組件: 

應用客戶端程序和applets是客戶層組件. 
Java Servlet和JavaServer Pages(JSP)是web層組件. 
Enterprise JavaBeans(EJB)是業(yè)務層組件. 

客戶層組件 
J2EE應用程序可以是基于web方式的,也可以是基于傳統(tǒng)方式的. 

web 層組件J2EE web層組件可以是JSP 頁面或Servlets.按照J2EE規(guī)范,靜態(tài)的HTML頁面和Applets不算是web層組件。 

正如下圖所示的客戶層那樣,web層可能包含某些 JavaBean 對象來處理用戶輸入,并把輸入發(fā)送給運行在業(yè)務層上的enterprise bean 來進行處理。 

業(yè)務層組件 
業(yè)務層代碼的邏輯用來滿足銀行,零售,金融等特殊商務領域的需要,由運行在業(yè)務層上的enterprise bean 進行處理. 下圖表明了一個enterprise bean 是如何從客戶端程序接收數(shù)據(jù),進行處理(如果必要的話), 并發(fā)送到EIS 層儲存的,這個過程也可以逆向進行。 

有三種企業(yè)級的bean: 會話(session) beans, 實體(entity) beans, 和 消息驅(qū)動(message-driven) beans. 會話bean 表示與客戶端程序的臨時交互. 當客戶端程序執(zhí)行完后, 會話bean 和相關數(shù)據(jù)就會消失. 相反, 實體bean 表示數(shù)據(jù)庫的表中一行永久的記錄. 當客戶端程序中止或服務器關閉時, 就會有潛在的服務保證實體bean 的數(shù)據(jù)得以保存.消息驅(qū)動 bean 結(jié)合了會話bean 和 JMS的消息監(jiān)聽器的特性, 允許一個業(yè)務層組件異步接收JMS 消息. 


企業(yè)信息系統(tǒng)層 
企業(yè)信息系統(tǒng)層處理企業(yè)信息系統(tǒng)軟件包括企業(yè)基礎建設系統(tǒng)例如企業(yè)資源計劃 (ERP), 大型機事務處理, 數(shù)據(jù)庫系統(tǒng),和其它的遺留信息系統(tǒng). 例如,J2EE 應用組件可能為了數(shù)據(jù)庫連接需要訪問企業(yè)信息系統(tǒng) 

四. J2EE 的結(jié)構 
這種基于組件,具有平臺無關性的J2EE 結(jié)構使得J2EE 程序的編寫十分簡單,因為業(yè)務邏輯被封裝成可復用的組件,并且J2EE 服務器以容器的形式為所有的組件類型提供后臺服務. 因為你不用自己開發(fā)這種服務, 所以你可以集中精力解決手頭的業(yè)務問題. 

容器和服務 
容器設置定制了J2EE服務器所提供得內(nèi)在支持,包括安全,事務管理,JNDI(Java Naming and Directory Interface)尋址,遠程連接等服務,以下列出最重要的幾種服務: 

J2EE安全(Security)模型可以讓你配置 web 組件或enterprise bean ,這樣只有被授權的用戶才能訪問系統(tǒng)資源. 每一客戶屬于一個特別的角色,而每個角色只允許激活特定的方法。你應在enterprise bean的布置描述中聲明角色和可被激活的方法。由于這種聲明性的方法,你不必編寫加強安全性的規(guī)則。 
J2EE 事務管理(Transaction Management)模型讓你指定組成一個事務中所有方法間的關系,這樣一個事務中的所有方法被當成一個單一的單元. 當客戶端激活一個enterprise bean中的方法,容器介入一管理事務。因有容器管理事務,在enterprise bean中不必對事務的邊界進行編碼。要求控制分布式事務的代碼會非常復雜。你只需在布置描述文件中聲明enterprise bean的事務屬性,而不用編寫并調(diào)試復雜的代碼。容器將讀此文件并為你處理此enterprise bean的事務。 
JNDI 尋址(JNDI Lookup)服務向企業(yè)內(nèi)的多重名字和目錄服務提供了一個統(tǒng)一的接口,這樣應用程序組件可以訪問名字和目錄服務. 
J2EE遠程連接(Remote Client Connectivity)模型管理客戶端和enterprise bean間的低層交互. 當一個enterprise bean創(chuàng)建后, 一個客戶端可以調(diào)用它的方法就象它和客戶端位于同一虛擬機上一樣. 
生存周期管理(Life Cycle Management)模型管理enterprise bean的創(chuàng)建和移除,一個enterprise bean在其生存周期中將會歷經(jīng)幾種狀態(tài)。容器創(chuàng)建enterprise bean,并在可用實例池與活動狀態(tài)中移動他,而最終將其從容器中移除。即使可以調(diào)用enterprise bean的create及remove方法,容器也將會在后臺執(zhí)行這些任務。 
數(shù)據(jù)庫連接池(Database Connection Pooling)模型是一個有價值的資源。獲取數(shù)據(jù)庫連接是一項耗時的工作,而且連接數(shù)非常有限。容器通過管理連接池來緩和這些問題。enterprise bean可從池中迅速獲取連接。在bean釋放連接之可為其他bean使用。 

容器類型 
J2EE應用組件可以安裝部署到以下幾種容器中去: 

EJB 容器管理所有J2EE 應用程序中企業(yè)級bean 的執(zhí)行. enterprise bean 和它們的容器運行在J2EE 服務器上. 
Web 容器管理所有J2EE 應用程序中JSP頁面和Servlet組件的執(zhí)行. Web 組件和它們的容器運行在J2EE 服務器上. 
應用程序客戶端容器管理所有J2EE應用程序中應用程序客戶端組件的執(zhí)行. 應用程序客戶端和它們的容器運行在J2EE 服務器上. 
Applet 容器是運行在客戶端機器上的web瀏覽器和 Java 插件的結(jié)合. 

五. J2EE的核心API與組件 
J2EE平臺由一整套服務(Services)、應用程序接口(APIs)和協(xié)議構成,它對開發(fā)基于Web的多層應用提供了功能支持,下面對J2EE中的13種技術規(guī)范進行簡單的描述(限于篇幅,這里只能進行簡單的描述): 

JDBC(Java Database Connectivity): 
JDBC API為訪問不同的數(shù)據(jù)庫提供了一種統(tǒng)一的途徑,象ODBC一樣,JDBC對開發(fā)者屏蔽了一些細節(jié)問題,另外,JDCB對數(shù)據(jù)庫的訪問也具有平臺無關性。 
JNDI(Java Name and Directory Interface): 
JNDI API被用于執(zhí)行名字和目錄服務。它提供了一致的模型來存取和操作企業(yè)級的資源如DNS和LDAP,本地文件系統(tǒng),或應用服務器中的對象。 
EJB(Enterprise JavaBean): 
J2EE技術之所以贏得某體廣泛重視的原因之一就是EJB。它們提供了一個框架來開發(fā)和實施分布式商務邏輯,由此很顯著地簡化了具有可伸縮性和高度復雜的企業(yè)級應用的開發(fā)。EJB規(guī)范定義了EJB組件在何時如何與它們的容器進行交互作用。容器負責提供公用的服務,例如目錄服務、事務管理、安全性、資源緩沖池以及容錯性。但這里值得注意的是,EJB并不是實現(xiàn)J2EE的唯一途徑。正是由于J2EE的開放性,使得有的廠商能夠以一種和EJB平行的方式來達到同樣的目的。 
RMI(Remote Method Invoke): 
正如其名字所表示的那樣,RMI協(xié)議調(diào)用遠程對象上方法。它使用了序列化方式在客戶端和服務器端傳遞數(shù)據(jù)。RMI是一種被EJB使用的更底層的協(xié)議。 
Java IDL/CORBA: 
在Java IDL的支持下,開發(fā)人員可以將Java和CORBA集成在一起。 他們可以創(chuàng)建Java對象并使之可在CORBA ORB中展開, 或者他們還可以創(chuàng)建Java類并作為和其它ORB一起展開的CORBA對象的客戶。后一種方法提供了另外一種途徑,通過它Java可以被用于將你的新的應用和舊的系統(tǒng)相集成。 
JSP(Java Server Pages): 
JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端所請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。 
Java Servlet: 
Servlet是一種小型的Java程序,它擴展了Web服務器的功能。作為一種服務器端的應用,當被請求時開始執(zhí)行,這和CGI Perl腳本很相似。Servlet提供的功能大多與JSP類似,不過實現(xiàn)的方式不同。JSP通常是大多數(shù)HTML代碼中嵌入少量的Java代碼,而servlets全部由Java寫成并且生成HTML。 
XML(Extensible Markup Language): 
XML是一種可以用來定義其它標記語言的語言。它被用來在不同的商務過程中共享數(shù)據(jù)。XML的發(fā)展和Java是相互獨立的,但是,它和Java具有的相同目標正是平臺獨立性。通過將Java和XML的組合,您可以得到一個完美的具有平臺獨立性的解決方案。 
JMS(Java Message Service): 
MS是用于和面向消息的中間件相互通信的應用程序接口(API)。它既支持點對點的域,有支持發(fā)布/訂閱(publish/subscribe)類型的域,并且提供對下列類型的支持:經(jīng)認可的消息傳遞,事務型消息的傳遞,一致性消息和具有持久性的訂閱者支持。JMS還提供了另一種方式來對您的應用與舊的后臺系統(tǒng)相集成。 
JTA(Java Transaction Architecture): 
JTA定義了一種標準的API,應用系統(tǒng)由此可以訪問各種事務監(jiān)控。 
JTS(Java Transaction Service): 
JTS是CORBA OTS事務監(jiān)控的基本的實現(xiàn)。JTS規(guī)定了事務管理器的實現(xiàn)方式。該事務管理器是在高層支持Java Transaction API (JTA)規(guī)范,并且在較底層實現(xiàn)OMG OTS specification的Java映像。JTS事務管理器為應用服務器、資源管理器、獨立的應用以及通信資源管理器提供了事務服務。 
JavaMail: 
JavaMail是用于存取郵件服務器的API,它提供了一套郵件服務器的抽象類。不僅支持SMTP服務器,也支持IMAP服務器。 
JTA(JavaBeans Activation Framework): 
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節(jié)流可以被轉(zhuǎn)換成Java對象,或者轉(zhuǎn)換自Java對象。大多數(shù)應用都可以不需要直接使用JAF。 



相關文章