簡要介紹
JavaEE是J2EE的一個新的名稱,之所以改名,目的還是讓大家清楚J2EE隻是Java企業應用。随着WEB和EJB容器概念誕生,使得軟件應用業開始擔心SUN的夥伴們是否還在Java平台上不斷推出翻新的标準框架,緻使軟件應用業的業務核心組件架構無所适從,從一直以來是否需要EJB的讨論聲中說明了這種彷徨。
在2004年底中國軟件技術大會Ioc微容器(也就是Jdon框架的實現原理)演講中指出:我們需要一個跨J2SE/WEB/EJB的微容器,保護我們的業務核心組件(中間件),以延續它的生命力,而不是依賴J2SE/J2EE版本.此次J2EE改名為JavaEE,實際也反映出業界這種共同心聲。
JavaEE的核心是EJB3.0,其提供了更兼便捷的企業級的應用框架。
核心優勢
J2EE容易讓初學者誤解是獨立于一套Java的技術方案。
從更深層次來看,Java誕生十年,多年前的業務組件還可以使用,軟件應用不再由于語言的更叠革命帶來毀滅的打擊了。
功能規定
架構圖
讓我們看看JavaEE5有哪些新的功能或規定,我們可以從SUN網站下載JavaEE5規範。其架構圖如下:
圖中灰色加黑部分是JavaEE5新的功能,我們看到,在WEB層主要加入了JSF這個新的表現層框架,和我們日常開發關系密切的是,引入了新的JavaPersistence标準,這個标準正在由EJB3.0專家組制定。
值得指出的是,這個Java持久化标準也可以嵌入在WEB層調用,所以,它肯定不會從屬于EJB标準,這樣,當前所有的Java持久層标準如:JDBC/JDO/Hibernate/EntityBean将可能統一,減少用戶的架構選擇痛苦。
EJB3.0和EJB2.0的區别
從架構圖可以看出,無論Web結構或EJB結構,提供實現的功能相差不多,這樣,我們的業務核心組件就可以根據需要部署在Web或EJB中運行,而不依賴具體的JavaEE容器了。前面一章圖的目标在JavaEE5中可以實現了。
當然,JavaEE5重要改變還是:JavaEE不再象以前那樣隻注重大型商業系統的開發,而是更關注小到中型系統的開發,簡化這部分系統開發步驟。
落實這一簡化行動的最大特征是在Java5.0(Java1.5)中加入Annotations,通過Annotations引入,降低JavaEE開發時,既要寫code,又要寫XML配置文件之苦,來回照顧,疲于奔命,Annotations既是得益于C++語言,也是從開源項目xDoclet實踐中獲得經驗。
但是Annotations是一把雙刃劍,初學者用得不好,将會使得原本在XML中的Hardcode(硬編碼)寫進入代碼Annotations,破壞代碼的簡潔和靈活性,
當然,Annotations的引入不隻是解決XML配置,從大的概念說,是解決一個資源注射問題(XML屬于其中一個資源),在原理J2EE中,容器管理的資源都是由JNDI向應用程序提供的,通過Annotations可以方便實現注射。
資源注射(Resourceinjection)設計概念其實是來自Ioc模式(DependencyInjection),筆者設計開發的Jdon框架其實已經将Annotations這一宗旨的目的實現,在Jdon框架應用演示源碼SimpleJdonFrameworkTest中,在jdonframework.xml中有一段如下
配置
這段配置是将數據庫的JNDI名java:/TestDS注射到JdbcDAO中。JdonFramework下一個版本将是基于Java5.0,這行配置将可通過Annotations寫在jdbcDAO代碼中,方便程序員開發。
從這裡,大家也可以知道EJB3.0和EJB2.0的區别了,有的人疑惑,是學習EJB3.0還是學習EJB2.0,其實EJB3.0并沒有在原理機制上對EJB有多大改動,隻是做了編程方面的簡化,另外EJBCMP參考了Hibernate新特點,EJB3.0最大簡化變動是CMP編程方法上。所以,無論學習EJb3.0/2.0,EJB原理和運行機制都是一樣,這部分才是學習EJB最大的困難處,而不是因為到了EJB3.0,理解EJB就會容易。
初學者可從Eclipse+Xdoclet開發EJB2.0開始學習,EJB3.0=EJB2.0+xDoclet,這裡有一篇Eclipse開發EJB教程,使用JBossIDE非常簡單,無需Lomboz等插件。
Security安全
Security安全是JavaEE的一個重要特點,也就是基于容器的安全訪問,無需自己手工編碼,具體實現可參考Jdon框架應用演示源碼JdonNews。這雖然是基于J2EE1.3編寫,但是和JavaEE5區别不是很大。
事務管理TransactionManagement也是JavaEE5的一個重要部分,該标準文檔從幾個方面闡述了事務管理的要點,标準中規定了在WEB層中使用事務和線程的處理關系,标準中規定:Web服務器如Tomcat無需在Web層提供事務支持,因為Web組件根本不支持事務繁衍/傳遞。
因為當前一些架構如Struts+Spring+Hibernate/Struts+Hibernate是标準中的Web結構,因此JavaEE5在J2EE4.2.2規定了Web組件事務的生命周期,如果Web組件直接調用JTA,事務就不可以跨一個客戶端的多個請求,事務隻能在一個請求(Servlet/Jsp)中完成,這個标準規定了我們在Web架構中(如上述架構)無法使用長事務(如工作流/狀态圖中跨頁面請求事務),針對一個客戶端跨請求的事務暫時隻有唯一解決方案:隻有使用EJB的有态Session。
以上是JavaEE5主要部分,JavaEE包含更多其他技術部分如JdbcJMSJCAJNDI等等,需要用戶在實踐中摸索。
相關事件
在開源領域頗負盛名的洪峰、章文嵩、陳渝、程勇等為我們深入解剖了那個讓人捉摸不定的開源;UML和RUP方面的著名實踐和布道者潘加宇、蔣芳、方春旭、胡協剛、黎娟等為我們分析了UML/UP的實踐誤區,講解了用例驅動的交互設計技術,并從構架分析與設計、團Java/J2EE專家Jdon的首席架構師彭晨陽帶領我們重新關注Ioc模式,指出這不僅可以為我們在Java實踐中提供更加靈活的解決方案,甚至還誕生了新的技術概念:微内核容器。



















