當前位置:學問君>人在職場>IT認證>

EJB的開發優勢

學問君 人氣:1.7W

EJB是sun的服務器端組件模型,最大的用處是部署分佈式應用程序當然,還有許多方式可以實現分佈式應用,類似微軟的技術。憑藉java跨平臺的優勢,用EJB技術部署的分佈式系統可以不限於特定的平臺。下面主要介紹採用EJB開發的三個優勢。

JAVA語言已經慢慢的在成爲主流的開發語言之一,或者說現在已經成爲了主流的開發語言。在JAVA語言平臺上,也出現了多種開發模型。對於剛入門的JAVA程序員來說,也許面對這麼多的開發模型,會眼花繚亂,不知道該如何選擇。筆者剛開始接觸JAVA語言的時候沒有多少的開發模型可以選擇。而前幾年筆者也遇到了這個問題。

可選的開發模型比較多,筆者必須選擇一個開發模型作爲未來自己的主攻方向。因爲人的精力是有限的,特別是我們做程序開發的。我們要把有限的精力花在刀口上。筆者在這裏向大家推薦EJB開發模型。

這個EJB本質上就是一個被管理的組件,存在於J2EE容器中,由J2EE容器進行創建、控制和銷燬。J2EE容器複雜控制當前存在的EJB數目和EJB所使用的資源。在重負載的情況下,即使是客戶端正在使用的EJB,也將被返回到實例池,如此的話,這個EJB實例還可以供其他客戶端使用,從而提高EJB實例的利用率。

雖然J2EE官方也是推薦使用EJB,但是這並不是一個強制性的措施。程序開發人員除了利用EJB之外,還可以利用JSP或者單機版的JAVA應用程序等等。但是如果應用程序需要不斷的升級、性能要求比較高等等,那麼筆者就向大家推薦使用EJB,主要有如下三個方面的原因。

一、可以隱藏管道代碼。

現在音樂噴泉在各地迅速的被採用,成爲高科技景觀的一個代表之作。程序員在開發這個應用程序的時候,程序人員需要用到這些管道,但是並不需要知道這些水管的具體走向。這不是程序開發人員所需要關注的內容。程序開發人員之需要直接使用這些現成的管道即可。我們把這些管道就叫做“管道代碼”。其實程序開發人員有時候就好像一個工業設計師。工業設計師在設計洗澡用的花撒水籠頭的時候,其根本不用關心自來水管道。

爲什麼呢?因爲自來水管道都是採用同一的標準,水壓的話也是國家有一個強制性的標準。爲此在需要使用管道的時候,設計者之需要直接引用這些標準化的參數即可。在早期的一些開發模型中,如最原始的 CORBA開發模型,程序開發人員不得不便寫大量的代碼來完成同Corba環境的交互、連接、註冊過程。其實這些代碼就是通常所說的管道代碼。而如果採用 EJB模型的話則可以最大限度的減少這些管道代碼的編寫工作。

如程序開發人員透過聲明屬性就可以無需要編寫代碼來控制這些功能即可指定組件的事務性爲;不用透過編寫管道代碼來定義EJB組件之間的關係以及所需要用到的資源,因爲可部署的J2EE應用程序在部署描述資訊中定義了多個EJB組件之間的關係同時定義了EJB組件所需要用到的資源;如每個Bean 都遵循一個定義的聲明週期和一套規則,爲此程序開發人員不需要知道“管道”的'設計,而只需要知道管道接口的參數即可,如此的話系統代碼與應用程序代碼之間就是兩個互相獨立的內容。

顯然,透過J2EE提供的EJB組件,可以讓程序開發人員將精力集中在業務代碼的編寫上,而儘量減少編寫管道代碼。這不僅可以提高應用程序的開發效率,而且把管道代碼與應用程序代碼獨立開來,也利於後續的調試與維護。這就是筆者推薦使用EJB模型來開發JAVA應用程序的第一個原因。

二、EJB預定義了一些複雜的處理機制。

在應用程序開發的過程中,或多或少有一些共性的內容。如需要進行應用程序的生命週期管理,需要進行命名和註冊,需要進行事務管理等等。如果每次在開發應用程序的時候,都需要從零開始來開發這些功能,那麼工作量就會很大,而且代碼的重複利用性也會比較差。爲了解決這些問題,EJB提供了一些預定義的服務,把一些應用程序開發中要用到的服務集成到J2EE開發環境中。需要用到這些服務的時候,程序開發人員之需要聲明一下或者透過少量的代碼就可以調用這些服務,實現一些複雜的控制管理機制。

如在應用程序開發中,爲了保持數據的一致性事務管理機制是必須要實現的一個機制。如果在應用程序層面沒有實現事務管理機制的話,則當同一個業務涉及到多條記錄的時候,很容易破壞數據的一致性。而如果從零開始來編寫事務處理機制代碼的話,那麼工作量會很大。在EJB的容器服務中就預先提供了事務管理的解決方式,程序開發人員可以憑藉這個預定義地解決方案輕鬆的創建事務、處理與控制事務等等。

如在應用程序開發中命名與註冊也是很麻煩的一件工作。而EJB也提供另一個命名與註冊的容器,EJB容器和服務器爲 EJB提供了對命名服務的訪問。遠程和本地客戶端使用這些服務來尋找EJB;EJB組件本身也使用這些服務來查詢自身所需要的資源。也就好說,程序開發人員在應用程序開發中不用透過代碼來實現命名與註冊服務,而直接調用EJB組件中的命名與註冊容器即可。這個容器會自動生成相關的代碼來完成所需要實現的功能。

另外,EJB組件還提供了生命週期管理容器、安全性和訪問控制容器、持久性容器等等,透過這些容器可以讓程序開發人員少寫大量的代碼,不僅可以提高程序的開發效率,而且同意了這些基礎性內容解決方案。這也有利於後來的人員瞭解原始碼,有利於應用管理軟件的後續升級。

三、用戶接口與底層業務功隔離。

在企業管理中共性與個性是並存的,這也體現在了企業的管理軟件上。如同一家企業,如果管理者的文化背景不同,其或許多同一個業務具有不同的管理方式。這個用我們程序開發人員專業的術語來講就是用戶接口不同。但是其背後的管理模型是相同的,也就是說其業務功能是相同的。

如利用JAVA語言開發的一個訂單管理系統,其訂單的處理機制是相同的,都在數據庫中建立相關的紀錄並在儲存記錄之前進行數據有效性的審覈。但是不同的訂單類型其處理方式可能稍有不同。如對於預付訂單,必須要先收到客戶的款項才能夠下訂單給生產部門安排生產或者倉庫部門準備出貨;如對於倉庫訂單,則在流程處理上不需要經過生產而直接轉到倉庫出貨等等。

也就說是,10種不同類型的訂單,其80%的功能是相同的,而又20%的內容由於管理方式或者其他的原因而有所不同。在這種情況下難道要寫十個不同的代碼來實現這十種不同的需求嗎?

在EJB開發模型中不用這麼複雜,因爲EJB允許獨立於表達層開發和部署業務功能。如上面這個訂單管理需求,程序開發人員可以利用EJB模型來實現底層的功能(80%的共性內容),然後再無需重新設計或者開發整個應用程序或者銷售訂單管理模組的情況下,可以利用不同的用戶接口來實現用戶的不同需求。

這就好像父母與子女的關係。現把父母的特性定義好,然後再根據不同的需要生養不同的子女即可(用戶接口)。由於子女繼承了父母的全部特性。那麼只需要把用戶需要實現的一些個性特點嫁接到子女身上即可。

所以這種業務需求與業務功能相分離,各自獨立的特徵,是EJB開發模型的最大優勢。程序開發人員可以利用EJB實現分佈式應用程序,將用戶接口與底層業務功能隔離開來。

TAGS:EJB