1. 什麼是J2EE
J2EE可以說指Java在資料庫信息系統上實現,資料庫信息系統從早期的dBase、到Delphi/VB等C/S結構,發展到B/S(Browser瀏覽器/Server伺服器)結構,而J2EE主要是指B/S結構的實現。 J2EE又是一種框架和標准,框架類似API、庫的概念,但是要超出它們。 J2EE是一個虛的大的概念,J2EE標准主要有三種子技術標准:WEB技術、EJB技術和JMS,談到J2EE應該說最終要落實到這三個子概念上。 這三種技術的每個技術在應用時都涉及兩個部分:容器部分和應用部分,Web容器也是指Jsp/Servlet容器,你如果要開發一個Web應用,無論是編譯或運行,都必須要有Jsp/Servlet庫或API支持(除了JDK/J2SE以外)。 J2EE應用系統開發工具有很多 :如JBuilder、Eclipse等,這些IDE首先是Java開發工具,也就是說,它們首要基本功能是可以開發出JavaBeans或Java class,但是如果要開發出J2EE系統,就要落實到要麼是Web技術或EJB技術,那麼就有可能要一些專門模塊功能,最重要的是,因為J2EE系統區分為容器和應用兩個部分,所以,在任何開發工具中開發J2EE都需要指定J2EE容器。 J2EE容器分為WEB容器和EJB容器,Tomcat/Resin是Web容器;JBoss是EJB容器+Web容器等,其中Web容器直接使用Tomcat實現的。所以你開發的Web應用程序可以在上面兩種容器運行,而你開發的Web+EJB應用則只可以在JBoss伺服器上運行, 商業產品Websphere/Weblogic等和JBoss屬於同一種性質。 J2EE容器也稱為J2EE伺服器,大部分時它們概念是一致的。 衡量J2EE應用系統設計開發水平高低的標准就是 :解耦性;你的應用系統各個功能是否能夠徹底脫離?是否不相互依賴,也只有這樣,才能體現可維護性、可拓展性的軟體設計目標。 為了達到這個目的,誕生各種框架概念,J2EE框架標准將一個系統劃分為WEB和EJB主要部分,當然我們有時不是以這個具體技術區分,而是從設計上抽象為表現層、服務層和持久層,這三個層次從一個高度將J2EE分離開來,實現解耦目的。 因此,我們實際編程中,也要將自己的功能向這三個層次上靠,做到大方向清楚,涇渭分明,但是沒有技術上約束限制要做到這點是很不容易的,因此我們還是必須藉助J2EE具體技術來實現,這時,你可以使用EJB規范實現服務層和持久層,Web技術實現表現層; J2EE開發三件寶 : Domain Model(域建模)、patterns(模式)和framework(框架)。 從整體上講,J2EE是使用Java技術開發企業級應用的一種事實上的工業標准(Sun公司出於其自身利益的考慮,至今沒有將Java及其相關技術納入標准化組織的體系),它是Java技術不斷適應和促進企業級應用過程中的產物。Sun推出J2EE的目的是為了克服傳統Client/Server模式的弊病,迎合Browser/Server架構的潮流,為應用Java技術開發伺服器端應用提供一個平台獨立的、可移植的、多用戶的、安全的和基於標準的企業級平台,從而簡化企業應用的開發、管理和部署。J2EE是一個標准,而不是一個現成的產品。各個平台開發商按照J2EE規范分別開發了不同的J2EE應用伺服器,J2EE應用伺服器是J2EE企業級應用的部署平台。由於它們都遵循了J2EE規范,因此,使用J2EE技術開發的企業級應用可以部署在各種J2EE應用伺服器上。 為了推廣並規范化使用J2EE架構企業級應用的體系架構,Sun同時給出了一個建議性的J2EE應用設計模型:J2EE Blueprints。J2EE Blueprints提供了實施J2EE企業級應用的體系架構、設計模式和相關的代碼,通過應用J2EE Blueprints所描述的體系模型,能夠部分簡化架構企業級應用這項復雜的工作。J2EE Blueprints是開發人員設計和優化J2EE組件的基本原則,同時為圍繞開發工作進行職能分工給出了指導性策略,以幫助應用開發設計人員合理地分配技術資源。
2. J2EE技術介紹,要原創
目前,Java 2平台有3個版本,它們是適用於小型設備和智能卡的Java 2平台Micro版(Java 2
Platform Micro Edition,J2ME)、適用於桌面系統的Java 2平台標准版(Java 2 Platform
Standard Edition,J2SE)、適用於創建伺服器應用程序和服務的Java 2平台企業版(Java 2 Platform
Enterprise Edition,J2EE)。J2EE是一種利用Java 2平台來簡化企業解決方案的開發、部署和管理相關的復雜問題的體系結構。
J2EE技術的基礎就是核心Java平台或Java
2平台的標准版,J2EE不僅鞏固了標准版中的許多優點,例如"編寫一次、隨處運行"的特性、方便存取資料庫的JDBC
API、CORBA技術以及能夠在Internet應用中保護數據的安全模式等等,同時還提供了對 EJB(Enterprise
JavaBeans)、Java Servlets API、JSP(Java Server
Pages)以及XML技術的全面支持。其最終目的就是成為一個能夠使企業開發者大幅縮短投放市場時間的體系結構。
J2EE平台由一整套服務(Services)、應用程序介面(APIs)和協議構成,它對開發基於Web的多層應用提供了功能支持,下面對J2EE中的13種技術規范進行簡單的描述:
2技術規范編輯
JDBC(Java Database Connectivity)
JDBC API為訪問不同的資料庫提供了一種統一的途徑,象ODBC一樣,JDBC對開發者屏蔽了一些細節問題,另外,JDBC對資料庫的訪問也具有平台無關性。
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伺服器。
JAF(JavaBeans Activation Framework)
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的位元組流可以被轉換成Java對象,或者轉換自Java對象。大多數應用都可以不需要直接使用JAF。