對EJB的認識
接觸EJB以來有一段時間了,走馬觀花一樣把它所涉及到的東西看了一遍,隨着深入了解越來越感覺到ejb的很強大,用了java后覺的java好用、學歷SSH覺的比java好用、學了ejb覺的比ssh好用,至於它們什么關系,可以概括為后面的概念理解要依賴於前面,用EJB時間還不長不過已經對它有了一個新的定位,下面來讓我們站在ejb的角度俯視ssh、java。
EJB相關概念
ejb既是J2EE的一種規范,又是一個特殊的java類(API、IDL一樣,既是一個規范,又是一個實現)給一個類貼上規范化的標簽就成了EJB類或者叫ejb組件,這種特殊的類需要一個更特殊的類來管理,以用來控制很多個我們自己建立的ejb類,這個更特殊的ejb類,我們可以稱之為ejb容器,也可以叫做ejb組件、中間件都可以拿來叫,只不過概念側重點不同。容器負責一些與業務邏輯無關而必須的功能,如事務、日志、安全、管理EJB和servlet的生命周期、數據庫連接池、數據持久化等公共的服務,使得我們把主要精力放在業務邏輯上。
ejb容器相當於二次革命,大家都知道蒸汽機時代的到來,為生成提高了效率,工人們生產不再是一點一點的手工生產,而不是相當一部分工作讓機器幫我們完成,我們可以把這個蒸汽機看做是ejb容器,它幫助我們完成了一些輔助性功能,不需要我們再手工開發,這樣提高了我們的開發效率.
下面是我簡單畫的這些概念之間的基本關系,有的會有交叉、有的是包含關系,這只是一個一般關系也有一些特殊的沒有包括在內。
從SSH到EJB
它們都是一種框架,作為框架都是為了解決某一方面的問題而出現,對於開發一般的項目不涉及到分布式用SSH可以完美解決,目前國內好多中小型公司都在使用這個框架開發項目,SSH屬於輕量級框架即它的獨立性高拿來就可以用,不會依賴於其它的一些軟件,用框架開發本來的目前是為了解決開發的耦合性,使得開發越分散越有利於分工、簡化開發,SSH的解決了ejb中的很多問題,如事務、日志、安全、注釋等,不過還有些分布式沒有解決,同ssh相比ejb是重量級框架要依賴容器運行,但是它也有它的優勢,ejb為解決了項目的分布式邏輯調用,舉個例子來說:如果一家公司總部設在北京,美國、上海、新加坡等有很多的子公司共用一套管理系統,如果新加坡的子系統想要調用北京總公司的系統接口,這種實現SSH是完不成的,而ejb可以完成這種跨網絡的分布式互操作。
ejb也有它的缺陷,分布式調用的效率沒有本地調用高,還要過多的依賴於網絡通信、網絡資源等,如果不是特別的大的系統,諸如電信、聯通等用到ejb的時候還是比較少的,當然還有其他技術實現這種跨網絡,甚至跨品太、跨語言調用,比如CORBA標准,很多廠商退出了自己的CORBA產品,為以后的分布式業務邏輯實現提供了廣泛前景。
從下面可以看出ejb將業務邏輯分出來了運行在單獨的EJB容器里面,這也說明他可以跨不同的電腦部署,業務邏輯、數據庫可以部署在異地電腦上,這也是同ssh的主要區別。
也許你會覺的ejb功能這么強大,那么以后開發項目都用ejb吧,這也是沒有必要可以說ejb是對ssh的補充和擴展,兩者沒有說誰一定會替代誰,就好比出現了java、C#、C++語言,就一定會淘汰掉VB嗎?它們更有更得用處、有各自的市場,只是互補的關系,從ejb的發展來看它也在朝着既輕量又支持分布式的方向發展,沒准ejb4.0會支持這一特點。