Java EE开发三剑客现状及发展浅析
JSF?2.0
????? 盡管?Java?在展示層框架上競(jìng)爭(zhēng)的非常激烈,但?JSF?仍然固守著自己的領(lǐng)地。雖然有很多關(guān)于?JSF?的易用性和健壯性的質(zhì)疑聲,但?JSF2.0?就是為正面解決這些問(wèn)題而提出來(lái)的,它的易用,創(chuàng)新以及可擴(kuò)展的特性包括:
JSF?正式將?Facelets?作為視圖技術(shù)。也許你不熟悉?Facelets?,它也是一個(gè)與?JSF?結(jié)合默契的開(kāi)源視圖技術(shù)。因此, 與?JSP?不同的是?Facelets?更適合?JSF?的組件模型以及生命周期的概念。當(dāng)然,也許?Facelets?最強(qiáng)大的特性就是在 用?mark-up?來(lái)代替?java?代碼創(chuàng)建自定義的組件。創(chuàng)建自定義組件的復(fù)雜度也許是開(kāi)發(fā)者對(duì)?JSF?抱怨最多的地方了。
JSF2.0?通過(guò)使用標(biāo)簽為?Java?EE?5?提供了基于?annotation?驅(qū)動(dòng)的配置特性(比如說(shuō)可以使 用?@ManagedBean?和?@ManagedProperty?)。這也意味著可以一定程度上的減少?faces-config.xml?文件的 大小,不過(guò)像在?navigation?這些結(jié)點(diǎn)的配置在?XML?文件還是不能少。
JSF2.0?為適應(yīng)?AJAX?而改變了自身的生命周期,只需要局部頁(yè)面的交由?AJAX?事件處理。這個(gè)特性使得?JSF+AJAX?的組合更加自然。
JSF2.0?現(xiàn)在內(nèi)置了優(yōu)秀的資源處理器。對(duì)?images?,?JavaScript?文件以及?CSS?樣式等都表現(xiàn)出眾。它可以對(duì)通過(guò)邏輯名稱,資源分組以及版本等方式來(lái)更好的引用資源。
除上述特性外,?JSF2.0?還包括許多其它方便的改變。比如說(shuō)支持事件,支持?RAILS_ENV?的開(kāi)發(fā)風(fēng)格?(?就是?ROR)?,支持對(duì)標(biāo)準(zhǔn)組件集進(jìn)行擴(kuò)展。
EJB?3.1
???? EJB?在?Java?EE?5?就已經(jīng)經(jīng)歷過(guò)了非常大的改動(dòng)。也許看似不可能,但實(shí)際上?EJB3.0?還是在社區(qū)中廣泛得到認(rèn)可,并且采納它的 人也在不斷增長(zhǎng)。而這一切也許是因?yàn)槲覀冞^(guò)度的認(rèn)為需要怎么怎么簡(jiǎn)化?Java?EE?5?才取得這樣的成績(jī)。比如說(shuō),對(duì)?JBoss?Seam?的興趣 和?GlassFish?的熱情都是重要的關(guān)鍵因素。?EJB3.1?的目標(biāo)就是在增加業(yè)務(wù)組件時(shí),繼續(xù)讓?EJB?變得盡可能簡(jiǎn)單。下面是 對(duì)?EJB3.1?特性的高度概括:
原本需要甚至實(shí)現(xiàn)?Session?Beans?的業(yè)務(wù)接口變得可選了,不再?gòu)?qiáng)迫要求實(shí)現(xiàn)。在使用?Session?Beans+JSF+WebBeans?的場(chǎng)景下尤其有用。
EJB3.1?增加了?Singleton?Beans?的概念。因?yàn)槿藗兏鼉A向于管理共享的應(yīng)用程序狀態(tài),需要保證是完全線程安全的模型。此外,?EJB3.1?新增的聲明式的并發(fā)控制也更加靈活。
EJB3.1?一個(gè)可圈可點(diǎn)的的強(qiáng)大特性就是支持?cron?風(fēng)格的?scheduling?.除目前基于?timer?API?的調(diào)度計(jì)時(shí)器外,聲明式和編程式的?cron?風(fēng)格的?scheduling?API?也加入了進(jìn)來(lái)。
另一個(gè)強(qiáng)大的特性就是可以通過(guò)使用?@Asynchronous?標(biāo)注來(lái)對(duì)?Session?Bean?的方法進(jìn)行異步調(diào)用。你甚至還通過(guò)它來(lái)控制異步?EJB?方法從而返回一個(gè)?java.util.concurrent.Future?對(duì)象。
EJB3.1?Lite?概念的逐漸引入形成了一個(gè)?EJB?API?的子集,并在?Web?Profile?中得到應(yīng)用。只不 過(guò)?EJB?Lite?包含了像事務(wù)處理和安全這樣的特性,而那些消息機(jī)制,遠(yuǎn)程調(diào)用以及?scheduling?等非必須的自然沒(méi)有必要加入其中。除上 述列表所述特性外,EJB3.1?的特性還包括:括直接將?EJB?打包成?war?文件,可運(yùn)行在?embedded?的容器中便 于?Java?SE?環(huán)境進(jìn)行?JUnit?測(cè)試,使用統(tǒng)一的標(biāo)準(zhǔn)化全局?JNDI?命名方式。?
JPA?2.0
????? 到?Java?EE?6?的時(shí)候,?JPA?已經(jīng)徹底從?EJB?中分離,形成自己的體系?(EJB3.0?已經(jīng)將?JPA?分離出去 了?)?.?JPA?的成功是毫無(wú)疑問(wèn)的。它廣泛得到社區(qū)的采納和一流供應(yīng)商的支持。本來(lái)我們擔(dān)心?EJB2.*?的?Enity?Beans?垮臺(tái)可能 無(wú)法讓?Java?EE?再次引領(lǐng)持久層的標(biāo)準(zhǔn),一個(gè)重要成功的因素就是?Gaving?King?和?JBoss?社區(qū)毫不含糊的支 持。?JPA2.0?的目標(biāo)就是要在這次成功的基礎(chǔ)上再接再厲,填補(bǔ)更多的空白,再創(chuàng)多的創(chuàng)新:JPA2.0?加入了大量必須的?ORM?映射增強(qiáng)特性, 包括:支持通過(guò)使用?@ElementCollection?標(biāo)注來(lái)增強(qiáng)?collections,?maps?和?lists(?這里不是指實(shí)體之間的 關(guān)聯(lián)關(guān)系?)?集合,支持?map?的單向?one-to-many?關(guān)聯(lián)?(JPA1.0?只允許雙向?one-to-many?關(guān)聯(lián)?)?
EntityManager?和?Query?API?都得到改進(jìn)。比如說(shuō),現(xiàn)在可以從結(jié)果集中直接取得第一條記錄?(JPA1.0?只允許從一 個(gè)?unique?結(jié)果集中反回單個(gè)記錄?)?,指定?query?結(jié)果集的最大值,訪問(wèn)各個(gè)供應(yīng)商的底層實(shí)體對(duì)象?manager?或?query?, 最后就是加入悲觀鎖?(JPA1.0?只支持樂(lè)觀鎖?)?
JPQL?也提供類似于?SQL?的?CASE?,?NULLIF?,?COALESCE?等函數(shù)?JPA2.0?應(yīng)廣大開(kāi)發(fā)者要求增加了?Criteria?API?.
要是你對(duì)?Hibernate?或?TopLink?的?Criteria?API?不熟悉的話,可以將它想像成一個(gè)以?Java?為中心的面向?qū)?象,線程安全并可以與?JPQL?劃上等號(hào)的一組?API?.這組?API?適合于編寫(xiě)復(fù)雜的動(dòng)態(tài)查詢語(yǔ)句,還可避免解析?JPQL?語(yǔ)句時(shí),所拋出的運(yùn) 行期異常。
更完整的?JAP2.0?特性還包括:標(biāo)準(zhǔn)的二級(jí)緩存,標(biāo)準(zhǔn)的?JDBC?properties?,指定超時(shí)時(shí)間等等。轉(zhuǎn)載于:https://www.cnblogs.com/Rambol/archive/2009/02/27/1399647.html
總結(jié)
以上是生活随笔為你收集整理的Java EE开发三剑客现状及发展浅析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: XAML概要--事件和后台代码
- 下一篇: 关于每年一次的社会保险缴费基数核定说明