http://www.cjsdn.net/post/view?bid=2&id=12113&sty=1&tpg=6&age=0
轉帖 轉自 計算機世界網 謝楊 編譯
J2EE體系包括很多內容,其中每一個組成部分都堪稱龐雜。本文將去繁就簡,向讀者介紹幾個對于正確理解J2EE至關重要的核心概念,包括:J2EE平臺的多層體系結構、應用組件、企業服務和J2EE運行時環境。
J2EE核心概念
J2EE是一個企業級應用系統開發平臺或中間件體系結構,它通過提供一組應用組件和運行時環境來構造可伸縮的企業應用。
典型地,J2EE屬于分布式應用環境,一個企業應用系統,可以作為一套分布式組件部署在多臺服務器上。
要理解J2EE,我們首先得掌握以下四個核心概念:
·J2EE多層應用體系結構:J2EE平臺的基本架構
·J2EE應用組件:構成J2EE應用的軟件元素
·J2EE企業服務:應用組件需要用到的一些公共服務設施
·J2EE容器:J2EE運行時環境
J2EE多層應用體系結構
J2EE中間件定義了四個獨立的層,分別是:客戶層、表示邏輯層、業務邏輯層和企業信息系統層,如圖1所示:
圖1 J2EE多層應用體系結構
其中表示邏輯層和業務邏輯層同位于應用服務器區域,所謂應用服務器區域也就是J2EE平臺的具體實施場所。
J2EE四層中的每一層都可被物理地部署在不同的場地中,而且,即使同在應用服務器區域內,表示邏輯層和業務邏輯層也可以分開來,被安裝在不同的服務器上。
例如,我們可以將iPlanet(Sun公司的J2EE應用服務器產品)作為HTTP Web服務器和表示邏輯容器,而在Weblogic(BEA公司的J2EE應用服務器產品)上部署業務邏輯組件。
說到層和容器兩者的關系和區別,通常是將表示邏輯層和Servlet以及JSP容器相關聯,而將業務邏輯層和企業Javabean容器相關聯。或者,為了更易于理解,我們可以把層看作是概念實體——其功用是為了方便設計,而把容器看作物理意義上的軟件實例——也就是說,容器是為應用組件提供的運行時環境。
J2EE多層體系結構的靈感來自模型/視圖/控制器(Model-View-Controller,MVC)架構。MVC模式是軟件設計的典型結構。在這種設計結構下,一個復雜應用被分解為模型、視圖和控制器三部分,分別對應于業務邏輯和數據、用戶界面、用戶請求處理和數據同步。三個部分各自負責相應的功能。
MVC設計理念認為,在一個應用系統中,用戶界面發生變動的可能性最大,控制部分變動次之,而業務邏輯是最穩定的。因此為業務邏輯編寫的代碼不應和反映用戶界面的代碼混雜在一起,而是彼此應該盡可能地獨立,由控制器來擔當兩者交互的中介。
例如,設想一個基于Internet的銀行轉帳過程,根據MVC,該過程可以劃分為以下四個獨立子任務,如圖2所示。
·任務1:在瀏覽器中啟動轉帳服務(視圖)
·任務2:調用執行帳目轉帳的機制(控制器)
·任務3:真正執行帳目轉帳(業務過程或模型)
·任務4:將轉帳結果狀態(成功或失敗)顯示至瀏覽器(視圖)
圖2 網上銀行轉帳的MVC流程
MVC認為,核心業務過程(如上述任務3)應該完全不依賴于特定的客戶端程序,除了瀏覽器,該任務也應可被其他應用或銀行辦公系統調用。業務邏輯和視圖元素之間的數據交互分配給控制器完成。
基于MVC設計方法,J2EE體系結構很自然地將業務邏輯層和表示邏輯層分開,控制器可置于其中任意一層,也可分置兩層中。通過這種方式,J2EE的業務邏輯組件獲得相當高的可重用性。
J2EE應用組件
J2EE標準定義了一整套相當完備的應用組件框架。應用組件——企業系統的磚瓦——就是建筑在這個框架之上的。利用這個框架,幾乎可以構建從簡單的網絡門戶到復雜的分布式企業級事務應用等任何應用系統。
J2EE組件框架可類比于最基本的建筑材料,它以庫、基礎類和接口等形式存在;在它之上構建的應用組件則具體實現特定的企業業務邏輯;最后由表示/控制器邏輯進行組件整合,最終組成一個完整的應用系統。
以servlet為例,servlet是J2EE提供的標準應用組件。但一個特定企業應用所需的servlet,需要在基礎servlet接口上開發。在這過程中,開發人員可以利用servlet軟件包附帶的servlet庫和服務。很多系統級服務,諸如從HTTP輸入流中讀取數據或將數據寫至HTTP輸出流中,都可以從這些庫中獲得,用起來非常方便。
因此,我們將J2EE提供的組件基礎結構稱之為應用組件框架,而將在它之上所編寫的程序代碼稱之為應用組件。但為簡單起見,這兩個術語也常常被交換使用。
J2EE的客戶層、表示層和業務邏輯層,都各自有其適用的應用組件,見圖3:
·客戶層:applet,Javabean
·表示邏輯層:servlet,JSP,Javabean
·業務邏輯層:企業Javabean
圖3 J2EE應用組件
這里需要特別指出的一點是,與上述分類無關,標準Java類和Jar文件是可以安裝在三層之中的任意一層的。即使不用應用組件,我們也可以使用標準Java類來編寫程序代碼。
企業信息系統(EIS)層沒有可適用的組件,這是因為EIS層處理的是J2EE領域內的所有企業后端資源,諸如數據庫、BackOffice或舊有遺留系統、ERP實施等。很明顯,我們所需要的是要使得應用組件能訪問這些資源,而這種訪問的實現是由J2EE企業服務來提供的,因此EIS層本身不需要應用組件。
至此,我們可以看到,企業應用系統是通過開發人員利用組件,編寫程序,再部署到各自容器中去的。
在一個特定的企業應用場合,合理運用組件是一項技巧性要求相當高的工作。由于可供使用的組件種類繁多,如何選擇適當的組件組合來構造高效優質的應用系統需要開發人員不僅有一定的知識積累,還要有豐富的實戰經驗。
J2EE的目標就是要通過對組件的合理利用來進行應用系統的設計和開發。組件接口保證了各個組件符合標準規范,能在不同的環境中保持一致性,從而為J2EE服務器產品的互操作奠定基礎。
應用組件在各個層中連接松散,以此在互操作的同時能保持自身的靈活性和可重用性。接下去要講到的所有企業服務,諸如電子郵件、數據庫訪問、消息服務和事務處理等,都是通過配置應用組件完成的。
最后順帶提一下,與微軟的.Net架構不同,所有J2EE應用組件只能用Java語言編程!
J2EE企業服務
一般認為,現代企業計算解決方案除了企業的業務邏輯外,還需要提供對一些基本服務的支持,J2EE環境的另一大特色就在于它提供了完善的企業級服務,以滿足各類應用的需要。這些服務主要有:
連通性服務
·JDBC(Java Database Connectivity):提供數據庫連接和訪問服務
·JCA(Java Connector Architecture):提供與舊有遺留系統之間的連接
通信服務
·Java消息服務JMS(Java Messaging Service):提供層與組件之間的消息傳遞
·電子郵件服務(JAF/Javamail):提供電子郵件服務
·Java IDL/RMI-IIOP:CORBA兼容接口,提供J2EE與CORBA的通信服務
·JAX(Java XML APIs):提供XML語法分析/綁定服務
認證服務
·JNDI(Java Naming and Directory Interface):提供分布式命名和目錄服務
其他服務
·JTS/JTA(Java Transaction Service):提供事務處理/監控服務
·JAAS(Java Authentication and Authorization service):提供訪問控制等安全服務
在應用服務器市場,我們常可見到某些服務的驅動程序與服務器產品本身捆綁在一起的現象。例如,WebLogic就自帶JDBC驅動程序提供J2EE應用和Informix數據庫的連接。目前這已經成為企業評估和挑選不同服務器產品的一個重要選擇標準。
J2EE運行時環境(容器)
J2EE應用組件各自運行在相應的運行時環境中,這些運行時環境在J2EE術語里被稱為“容器”。不同服務器廠商推出的容器產品不盡相同,但一定都符合通用接口標準,且均為J2EE中間件組件提供了許多必不可少的底層公共設施。
J2EE標準共定義了以下四種容器,應用組件可通過配置工具部署到對應的容器中:
·Applet容器:運行applet
·客戶端應用程序容器:運行標準客戶端Java應用程序(包括基于Swing的GUI客戶端應用程序)
·Web容器:運行表示邏輯層的servlet和JSP
·EJB容器:運行業務邏輯層的企業Javabean
這里值得指出的一點是,J2EE體系結構的主導思想就是開發人員只需要專注于其業務邏輯的設計及編程,而不必為考慮系統級問題分心,這一設計理念主要就是通過容器的概念體現出來的。
典型地,容器提供的基礎設施包括:內存管理、同步/分線程、垃圾收集、可用性、可伸縮性、負載平衡和容錯。
容器需要實現的基本接口和基礎設施在J2EE規范中都有詳細定義,但具體實施方案則因容器供應商的不同而不可能全然相同。因此J2EE在保持代碼兼容性的同時,也為支持服務器的特性提供了一定的余地。事實上,正是由于容器的概念,才使得眾服務器供應商能在中間件業內一展所長,以各自的特色服務分爭市場份額。
結束語
J2EE平臺基于MVC設計模式,由多層應用體系結構組成。其中每一層都有各自適用的應用組件模型,在此基礎上可以構建各種企業應用。
J2EE還為應用組件提供一整套企業服務,如數據庫訪問、電子郵件、認證和分布式目錄訪問等,通過自動化的方式完成應用程序開發中的許多耗時且費力的工作,方便系統整合。
轉帖 轉自 計算機世界網 謝楊 編譯
J2EE體系包括很多內容,其中每一個組成部分都堪稱龐雜。本文將去繁就簡,向讀者介紹幾個對于正確理解J2EE至關重要的核心概念,包括:J2EE平臺的多層體系結構、應用組件、企業服務和J2EE運行時環境。
J2EE核心概念
J2EE是一個企業級應用系統開發平臺或中間件體系結構,它通過提供一組應用組件和運行時環境來構造可伸縮的企業應用。
典型地,J2EE屬于分布式應用環境,一個企業應用系統,可以作為一套分布式組件部署在多臺服務器上。
要理解J2EE,我們首先得掌握以下四個核心概念:
·J2EE多層應用體系結構:J2EE平臺的基本架構
·J2EE應用組件:構成J2EE應用的軟件元素
·J2EE企業服務:應用組件需要用到的一些公共服務設施
·J2EE容器:J2EE運行時環境
J2EE多層應用體系結構
J2EE中間件定義了四個獨立的層,分別是:客戶層、表示邏輯層、業務邏輯層和企業信息系統層,如圖1所示:
圖1 J2EE多層應用體系結構
其中表示邏輯層和業務邏輯層同位于應用服務器區域,所謂應用服務器區域也就是J2EE平臺的具體實施場所。
J2EE四層中的每一層都可被物理地部署在不同的場地中,而且,即使同在應用服務器區域內,表示邏輯層和業務邏輯層也可以分開來,被安裝在不同的服務器上。
例如,我們可以將iPlanet(Sun公司的J2EE應用服務器產品)作為HTTP Web服務器和表示邏輯容器,而在Weblogic(BEA公司的J2EE應用服務器產品)上部署業務邏輯組件。
說到層和容器兩者的關系和區別,通常是將表示邏輯層和Servlet以及JSP容器相關聯,而將業務邏輯層和企業Javabean容器相關聯。或者,為了更易于理解,我們可以把層看作是概念實體——其功用是為了方便設計,而把容器看作物理意義上的軟件實例——也就是說,容器是為應用組件提供的運行時環境。
J2EE多層體系結構的靈感來自模型/視圖/控制器(Model-View-Controller,MVC)架構。MVC模式是軟件設計的典型結構。在這種設計結構下,一個復雜應用被分解為模型、視圖和控制器三部分,分別對應于業務邏輯和數據、用戶界面、用戶請求處理和數據同步。三個部分各自負責相應的功能。
MVC設計理念認為,在一個應用系統中,用戶界面發生變動的可能性最大,控制部分變動次之,而業務邏輯是最穩定的。因此為業務邏輯編寫的代碼不應和反映用戶界面的代碼混雜在一起,而是彼此應該盡可能地獨立,由控制器來擔當兩者交互的中介。
例如,設想一個基于Internet的銀行轉帳過程,根據MVC,該過程可以劃分為以下四個獨立子任務,如圖2所示。
·任務1:在瀏覽器中啟動轉帳服務(視圖)
·任務2:調用執行帳目轉帳的機制(控制器)
·任務3:真正執行帳目轉帳(業務過程或模型)
·任務4:將轉帳結果狀態(成功或失敗)顯示至瀏覽器(視圖)
圖2 網上銀行轉帳的MVC流程
MVC認為,核心業務過程(如上述任務3)應該完全不依賴于特定的客戶端程序,除了瀏覽器,該任務也應可被其他應用或銀行辦公系統調用。業務邏輯和視圖元素之間的數據交互分配給控制器完成。
基于MVC設計方法,J2EE體系結構很自然地將業務邏輯層和表示邏輯層分開,控制器可置于其中任意一層,也可分置兩層中。通過這種方式,J2EE的業務邏輯組件獲得相當高的可重用性。
J2EE應用組件
J2EE標準定義了一整套相當完備的應用組件框架。應用組件——企業系統的磚瓦——就是建筑在這個框架之上的。利用這個框架,幾乎可以構建從簡單的網絡門戶到復雜的分布式企業級事務應用等任何應用系統。
J2EE組件框架可類比于最基本的建筑材料,它以庫、基礎類和接口等形式存在;在它之上構建的應用組件則具體實現特定的企業業務邏輯;最后由表示/控制器邏輯進行組件整合,最終組成一個完整的應用系統。
以servlet為例,servlet是J2EE提供的標準應用組件。但一個特定企業應用所需的servlet,需要在基礎servlet接口上開發。在這過程中,開發人員可以利用servlet軟件包附帶的servlet庫和服務。很多系統級服務,諸如從HTTP輸入流中讀取數據或將數據寫至HTTP輸出流中,都可以從這些庫中獲得,用起來非常方便。
因此,我們將J2EE提供的組件基礎結構稱之為應用組件框架,而將在它之上所編寫的程序代碼稱之為應用組件。但為簡單起見,這兩個術語也常常被交換使用。
J2EE的客戶層、表示層和業務邏輯層,都各自有其適用的應用組件,見圖3:
·客戶層:applet,Javabean
·表示邏輯層:servlet,JSP,Javabean
·業務邏輯層:企業Javabean
圖3 J2EE應用組件
這里需要特別指出的一點是,與上述分類無關,標準Java類和Jar文件是可以安裝在三層之中的任意一層的。即使不用應用組件,我們也可以使用標準Java類來編寫程序代碼。
企業信息系統(EIS)層沒有可適用的組件,這是因為EIS層處理的是J2EE領域內的所有企業后端資源,諸如數據庫、BackOffice或舊有遺留系統、ERP實施等。很明顯,我們所需要的是要使得應用組件能訪問這些資源,而這種訪問的實現是由J2EE企業服務來提供的,因此EIS層本身不需要應用組件。
至此,我們可以看到,企業應用系統是通過開發人員利用組件,編寫程序,再部署到各自容器中去的。
在一個特定的企業應用場合,合理運用組件是一項技巧性要求相當高的工作。由于可供使用的組件種類繁多,如何選擇適當的組件組合來構造高效優質的應用系統需要開發人員不僅有一定的知識積累,還要有豐富的實戰經驗。
J2EE的目標就是要通過對組件的合理利用來進行應用系統的設計和開發。組件接口保證了各個組件符合標準規范,能在不同的環境中保持一致性,從而為J2EE服務器產品的互操作奠定基礎。
應用組件在各個層中連接松散,以此在互操作的同時能保持自身的靈活性和可重用性。接下去要講到的所有企業服務,諸如電子郵件、數據庫訪問、消息服務和事務處理等,都是通過配置應用組件完成的。
最后順帶提一下,與微軟的.Net架構不同,所有J2EE應用組件只能用Java語言編程!
J2EE企業服務
一般認為,現代企業計算解決方案除了企業的業務邏輯外,還需要提供對一些基本服務的支持,J2EE環境的另一大特色就在于它提供了完善的企業級服務,以滿足各類應用的需要。這些服務主要有:
連通性服務
·JDBC(Java Database Connectivity):提供數據庫連接和訪問服務
·JCA(Java Connector Architecture):提供與舊有遺留系統之間的連接
通信服務
·Java消息服務JMS(Java Messaging Service):提供層與組件之間的消息傳遞
·電子郵件服務(JAF/Javamail):提供電子郵件服務
·Java IDL/RMI-IIOP:CORBA兼容接口,提供J2EE與CORBA的通信服務
·JAX(Java XML APIs):提供XML語法分析/綁定服務
認證服務
·JNDI(Java Naming and Directory Interface):提供分布式命名和目錄服務
其他服務
·JTS/JTA(Java Transaction Service):提供事務處理/監控服務
·JAAS(Java Authentication and Authorization service):提供訪問控制等安全服務
在應用服務器市場,我們常可見到某些服務的驅動程序與服務器產品本身捆綁在一起的現象。例如,WebLogic就自帶JDBC驅動程序提供J2EE應用和Informix數據庫的連接。目前這已經成為企業評估和挑選不同服務器產品的一個重要選擇標準。
J2EE運行時環境(容器)
J2EE應用組件各自運行在相應的運行時環境中,這些運行時環境在J2EE術語里被稱為“容器”。不同服務器廠商推出的容器產品不盡相同,但一定都符合通用接口標準,且均為J2EE中間件組件提供了許多必不可少的底層公共設施。
J2EE標準共定義了以下四種容器,應用組件可通過配置工具部署到對應的容器中:
·Applet容器:運行applet
·客戶端應用程序容器:運行標準客戶端Java應用程序(包括基于Swing的GUI客戶端應用程序)
·Web容器:運行表示邏輯層的servlet和JSP
·EJB容器:運行業務邏輯層的企業Javabean
這里值得指出的一點是,J2EE體系結構的主導思想就是開發人員只需要專注于其業務邏輯的設計及編程,而不必為考慮系統級問題分心,這一設計理念主要就是通過容器的概念體現出來的。
典型地,容器提供的基礎設施包括:內存管理、同步/分線程、垃圾收集、可用性、可伸縮性、負載平衡和容錯。
容器需要實現的基本接口和基礎設施在J2EE規范中都有詳細定義,但具體實施方案則因容器供應商的不同而不可能全然相同。因此J2EE在保持代碼兼容性的同時,也為支持服務器的特性提供了一定的余地。事實上,正是由于容器的概念,才使得眾服務器供應商能在中間件業內一展所長,以各自的特色服務分爭市場份額。
結束語
J2EE平臺基于MVC設計模式,由多層應用體系結構組成。其中每一層都有各自適用的應用組件模型,在此基礎上可以構建各種企業應用。
J2EE還為應用組件提供一整套企業服務,如數據庫訪問、電子郵件、認證和分布式目錄訪問等,通過自動化的方式完成應用程序開發中的許多耗時且費力的工作,方便系統整合。
