深入 EJB 2.1 (1)
04:21
最近看了許多人發表的文章
發現很多人對於 ejb 的誤解非常深
可能是因為大多數的人開發的都是單一的系統
而非分散式的系統
如果你要以效能為主的比較
我可以毫不猶豫地告訴你
你不要使用 ejb, 尤其不要使用 entity ejb.
因為不熟悉調校 application server 系統的系統工程師
甚至不了解如何使用 Design pattern 優化程式碼的程式設計師
很容易造成 ejb 就是慢的錯誤開發
如何開始
我們先由 EJB 2.1 的 Spec 開始吧
http://java.sun.com/products/ejb/docs.html
大家也可以下載 J2EE 1.4 RI
這是練習 ejb 不錯的平台
如果你對於 weblogic / websphere / sunone / oracle 等商用 application server 熟悉的話
也可以下載該 application server 來測試 ( 這些都可以自由下載 )
當然, 如果要選擇好用完整的 j2ee opensource application server,
我會推薦 jboss, 不過, 以初學者的角度, 我會建議使用 j2ee 1.4 RI 做為測試平台.
那麼, 我們這次討論 什麼情況要使用 ejb
以下是 EJB Spec 中所提出 EJB 的目標
- The Enterprise JavaBeans architecture will be the standard component architecture for building distributed object-oriented business applications in the Java™ programming language.
- The Enterprise JavaBeans architecture will support the development, deployment, and use of web services.
- The Enterprise JavaBeans architecture will make it easy to write applications: Application developers will not have to understand low-level transaction and state management details,multi-threading, connection pooling, or other complex low-level APIs.
- Enterprise JavaBeans applications will follow the Write Once, Run Anywhere™ philosophy of the Java programming language. An enterprise bean can be developed once, and then deployed on multiple platforms without recompilation or source code modification.
- The Enterprise JavaBeans architecture will address the development, deployment, and runtime aspects of an enterprise application’s life cycle.
- The Enterprise JavaBeans architecture will define the contracts that enable tools from multiple vendors to develop and deploy components that can interoperate at runtime.
- The Enterprise JavaBeans architecture will make it possible to build applications by combining components developed using tools from different vendors.
- The Enterprise JavaBeans architecture will provide interoperability between enterprise beans and Java 2 Platform, Enterprise Edition (J2EE) components as well as non-Java programming language applications.
- The Enterprise JavaBeans architecture will be compatible with existing server platforms. Vendors will be able to extend their existing products to support Enterprise JavaBeans.
- The Enterprise JavaBeans architecture will be compatible with other Java programming language APIs.
- The Enterprise JavaBeans architecture will be compatible with the CORBA protocols.
我們逐點來討論
EJB 是一個標準的開發元件
如果我們在開發一套完整的企業系統, 大型企業中, 往往是很多系統組合而成, 分別由不同的廠商來製作, 如果沒有統一的標準在開發, 未來整合與維護, 都會面臨到更大的成本, 所以 Java 組織中, 希望能夠以 EJB 做為一個共通的元件, 可以在分散式的系統中穩定正常方便地運作.
EJB 支援 web services 的開發
當企業發展到一個規模之後, ERP, SCM, EIP, HR 等等的系統將不再是獨立運作, EAI 共同的整合將會持續不斷, 而 web services 將是最容易也是目前最好的解決方案, EJB 也具備了 web services 的支援.
EJB 讓開發人員更容易開發元件
我想這是最重要的特點, 能夠簡單容易地開發元件, 不用去了解低階的交易複雜的程式設計, 狀態管理, 多執行緒, 連結池等等的開發, 這些低階的應用, 我們只需要在 ejb 採用高階的 API 或是 設定就可以完成了.
EJB 具備了跨平台的能力
因為 EJB 採用 Java 語言來開發, 當然具備了跨平台的能力, 不過.. 跨 application server 有待改進, 因為各家 application server 的市場考量, 設計了許多 "綁死" 的功能, 不過, 只要你遵守標準的開發, 跨 application server 只是加入或是更改某些設定就可以了. 不需要真正去修改程式碼.
EJB 加強系統開發的生命週期與開發工具
一個多麼好的架構, 如果沒有好用的開發工具, 細膩的開發週期, 很容易讓開發陷入瓶頸, 落入無窮的延遲時程之中, 所以如何建立完整的開發管控, ejb 制定了許多規則, 讓大家共同遵守. 如果你的 server 廠商願意開發 ejb container , 那麼 ejb 也提供了相關的規範讓廠商為你們打造一個平台.
EJB 也可以和非 Java 開發的程式碼溝通
你可能採用 delphi 或是 c++ 程式來做 desktop 的應用系統, ejb 也提供了呼叫的方式, 即使你不是使用 java 來開發, 也可以免去資料交換這一段複雜的程式碼撰寫.
EJB 相容於 Java / CORBA
EJB 相容於 Java 不稀奇, 能夠與早年分散式系統 CORBA protocol 溝通, 這是最吸引舊有系統升級最佳的解決方案, 沒有必要去丟棄舊有的開發, 為客戶增值舊有的系統, 將是我們要思考的方向.
一定要用 EJB 嗎
話說回來, 難道要用 ejb 不可嗎
我想 你可以用最簡單的思考
你的系統是屬於分散式的嗎 ?
你是為大型企業訂做完整的解決方案嗎 ?
我看過太多失敗的 j2ee 專案
大多是工程師的錯
而不是 ejb 的錯
也看過太多團隊利用 jsp/servlet + POJO 來開發系統 反而成功
EJB 太深奧嗎 ? 不是的 .. 是大家都沒有好好利用 ^^~
因此, 如果你對於 application server 和 j2ee design pattern 不熟悉
我建議先不要輕易嘗試...................