對於用戶而言,最有前途的中間件之一就是互聯網的平台——J2EE應用服務器。在J2EE應用服務器領域,IBM、BEA、東方通、Apusic都在積極推動市場的發展。那麼,J2EE到底有哪些好處呢? J2EE的全稱是Java 2 Platform Enterprise Edition,它是由SUN公司領導、各廠商共同制定並得到廣泛認可的工業標准。業界各大中間件廠商如BEA、IBM、Oracle都積極地促進了它的“誕生”、“長大”。 從一開始,J2EE走的就是開放路線——眾多廠商共同制定規范,使得J2EE吸收了這些廠商多年來在系統設計、系統集成方面的經驗、教訓。同時,這些廠商對新技術發展的預測以及各自獨到的觀點,也會在J2EE的規范中體現。所以,J2EE產品可以滿足當前不斷變化、日趨復雜的商業需求,很快就成為企業構建新系統的首選產品。由此帶來的巨大商業利潤又使得各廠商更加努力地完善J2EE,從而造就了J2EE強大的生命力。 保護企業的投資 對於很多企業而言,在多年的發展過程中,它會有自己的技術人員設計開發的系統,也會有從專業軟件公司那裡買來的系統。這些系統可能是由同一種編程語言寫的,也可能是由不同的編程語言寫的;可能運行在相同的操作系統上,也可能需要運行在不同的操作系統上。 為了保護已有投資,企業在構建新系統的時候,會盡量利用已有的系統以節約人力物力並加快系統開發的速度。參加J2EE規范制定的各廠商都在自己的產品中實現了和老系統的接口,如BEA的WebLogic可以直接調用Tuxedo中的服務,IBM的WebSphere也可以調用CICS的服務。Java本身的跨平台性,使得J2EE產品幾乎可以在任何操作系統上運行。因此,選擇J2EE,企業可以充分利用已有硬件和操作系統。 對於系統將來的擴展,J2EE規范也考慮得很周全。J2EE規范強制開發者把業務邏輯封裝成可重用的組件模式。在系統擴展的時候,原來的組件可以直接使用。另外,即使企業重新購買了別的J2EE產品,由於所有的J2EE產品都遵循一個統一的規范,原來的組件只要經過極少的改動就可以在新的J2EE產品上使用。這樣,也避免了企業被一家廠商綁死。 縮短企業進入市場的時間 當今的市場競爭十分激烈,需求變化日趨復雜、瞬息萬變。面對這樣的環境,企業的反應必須及時。哪怕是延遲一點點,也要花很多的時間才能彌補回來。J2EE設計的初衷就是加快開發的速度,減少從投入到產出之間的時間周期。基於組件的開發,可以使開發者專注於業務邏輯的實現,而其余復雜的功能(如分布式事務處理、自動容錯等)則由廠商負責實現,降低了對開發者編程水平的要求,也減輕了他們的負擔。 具有穩定的可用性 許多系統都必須24小時不停運轉,一旦宕機將造成不可接受的損失。通常的解決方案是采用集群技術。通過把用戶數據備份在不同的物理機器上,J2EE產品能夠有效防止數據丟失。在不同機器上的用戶數據和它的備份會實時地保持同步,如果某台機器因故障宕機了,用戶的請求會被轉發到備份數據所在的機器上。這樣,用戶的請求仍會被正常處理。從用戶的角度看來,他根本感覺不到系統出了故障。 使用J2EE產品作集群沒有對硬件和操作系統的要求,而一般采用硬件的集群則要求集群中的所有硬件必須是一家廠商的,因為不同廠商的硬件無法作集群。這就可能要求企業購買新的硬件,無法使用原有的資源。所以,使用J2EE產品也能節約企業的支出。 背景知識: J2EE的多層應用通常被稱為三層應用,因為整個系統分布在三個地方:客戶端機器、J2EE服務器和後端的數據庫。圖1描述了J2EE的多層結構(EIS是Enterprise Information System的簡稱,意為企業信息系統)。大多數J2EE的系統都分成三層或四層,復雜的系統層次會更多一些。這樣的劃分,使系統結構十分清晰,每個層次都各盡其責。 圖1 J2EE的多層結構 J2EE應用是由一個個的組件構成的。組件是一種具有獨立功能的軟件單元,它可以在J2EE服務器中執行,也可以調用別的組件的功能。J2EE說明書中定義了以下的J2EE組件: ◆客戶端應用程序和Applet是客戶層組件; ◆Java Servlet和Java Server Page(JSP)是Web層組件; ◆Enterprise JavaBean(EJB)是業務層組件。 一個J2EE的客戶端可以是Web Clients、Applets或客戶端應用程序。Web Client包括兩部分:動態的網頁和浏覽器。Web ClIEnt簡單方便,但不能做復雜的操作。Applet是一個小的客戶端程序,它需要浏覽器的JVM來執行,可以把一部分的業務邏輯用Applet來實現。客戶端應用程序提供了更加友好的圖形界面的功能,它可以直接調用業務邏輯層中的EJB,當然,也可以打開一個HTTP聯接,與Web層的Servlet通訊。 Web層和業務邏輯層都在J2EE服務器上。Web層的組件可以是Servlets或是JSPs。Servlets和JSPs都用來生成動態網頁,它們的主要作用是接受並檢驗用戶輸入的數據,把數據傳給後端的業務邏輯層,並把業務邏輯層處理的結果返回給用戶。業務層代碼的邏輯用來滿足銀行、零售、金融等特殊商務領域的需要,由運行在業務層上的EJB來實現。 企業信息系統層包括ERP、CRM、大型機事務處理、數據庫系統以及其它的遺留信息系統等。通常企業信息系統層僅僅是數據庫,但隨著商業邏輯的復雜化,越來越多的系統需要和ERP、CRM互連。J2EE1.3規范頒布了JCA(Java Connector Adapter)規范,對如何與ERP、CRM等企業信息系統層互連作了統一的規定。 看了上面的層次劃分,你會知道構建一個以J2EE為平台的系統的主要時間都花在Web層和業務邏輯層的開發上。上面提到J2EE可以使開發者專注於業務邏輯的實現,而不必考慮分布式事務處理、自動容錯等其它關鍵功能的實現,從而加快開發速度。 名詞解釋: Tuxedo:這是BEA公司的交易中間件產品,1984年由貝爾實驗室開發成功,1992年易主Novell公司,1996年BEA公司收購到旗下。經過十多年的不斷更新和完善,Tuxedo已經成為交易中間件領域的代表產品之一。