EJB3.0相比于以往的EJB版本而言改動很大,是到目前為止,EJB變動最大的一次。EJB之所以這么改,與EJB市場慢慢地被Spring剝奪有很大關(guān)系。EJB容器往往被看作是一種重量級組件容器,而Spring則更多地被認(rèn)為用來進(jìn)行輕量級企業(yè)程序的開發(fā)。面面俱到、考慮完備,是EJB的優(yōu)點(diǎn),但同時也是其致命弱點(diǎn),很多時候我們并不需要那么完備的功能,但偏偏以前的EJB規(guī)范就這么做的,導(dǎo)致以往的EJB開發(fā)者必須實現(xiàn)很多接口,而這些接口也許永遠(yuǎn)也用不著;而Spring則不然,使用Spring是那么的容易,以至于Spring一經(jīng)推出就被大量的公司使用,甚至在招聘時很多公司的招聘啟事上寫的都是要求熟悉Spring框架。EJB感受到了這種壓力,因此不管從生存還是改進(jìn)方面講,EJB都必須變,而且必須大變。
講了一大通廢話,言歸正傳,EJB3.0和以往的EJB有什么區(qū)別呢?最大的區(qū)別就在于開發(fā)EJB3.0程序很容易,很簡單,簡單的一個接口和一個bean文件就可以實現(xiàn)一個EJB了,而不用像以前的EJB那樣必須得實現(xiàn)3-5個接口,一大堆的文件,雖然都容易實現(xiàn),但確實是很煩人的一件事。如果從更深層次而言,兩者的區(qū)別在于EJB3.0是面向POJO開發(fā)的,采用EJB3.0開發(fā)程序幾乎和開發(fā)普通的Java程序毫無二致。
他們兩者的區(qū)別,從下圖中是最容易看出的:

上圖是EJB2.1的訪問模型,我們再來看看EJB3.0的訪問模型:

從兩圖的對比,應(yīng)該可以清晰地看出EJB3.0和EJB2.1的區(qū)別。
更詳細(xì)的描述待續(xù)。