自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

J2EE開發(fā)框架發(fā)展簡史 擁抱更簡單的POJO編程模型

開發(fā) 后端
本文簡單介紹了J2EE開發(fā)框架的發(fā)展歷史。J2EE規(guī)范提出了解決方案(EJB),但仍舊沒有一個(gè)合適的編程模型。Spring則成為了一個(gè)出色的解決方案。它使得很多項(xiàng)目的成本大大降低,并且投放使用以及維護(hù)速度都增加了。

早在1990年,一些商業(yè)的ORM工具就出現(xiàn)了,比如TopLink。但由于其價(jià)格昂貴、結(jié)構(gòu)復(fù)雜并且與Sun的實(shí)體bean標(biāo)準(zhǔn)相左,所以很少人會(huì)用。不管怎樣,在持久化POJO方面,這些工具與JDBC和實(shí)體Bean相比確實(shí)有了很大的進(jìn)步Java Data Object于2001年在Java Community Progress(www.jcp.org)的規(guī)范中出現(xiàn)。它為一般的POJO提供了大多數(shù)的持久化實(shí)現(xiàn)(盡管很多實(shí)現(xiàn)都是對(duì)關(guān)系數(shù)據(jù)庫的)。但Sun公司以及其他的J2EE技術(shù)提供商對(duì)該技術(shù)表現(xiàn)的很冷淡。所以JDO也沒有能夠流行。

Hibernate的出現(xiàn)。ORM領(lǐng)域在2002年發(fā)生了大變化,原因有兩個(gè)。首先,實(shí)體Beans在實(shí)踐中失敗,開發(fā)者們將其從J2EE中忽視掉了。它向開發(fā)者們說明了一個(gè)規(guī)范是如何將開發(fā)拉入泥潭的。

另外的一個(gè)原因是Hibernate的發(fā)布(www.hibernate.org),它是第一個(gè)功能健全的解決關(guān)系對(duì)象映射的解決方案。雖然在功能上,它沒有TopLink多樣。但在那些最常用的功能上,Hibernate實(shí)現(xiàn)的更加健壯,并且有一個(gè)非常專業(yè)的團(tuán)隊(duì)提供全職的開發(fā)。Hibernate并不是全新的,它的ORM思想在這個(gè)領(lǐng)域很普遍,但它提供的編程模型比其他任何競爭者都容易使用、都來的直接,它為ORM的使用提供了更加易用、廉價(jià)的途徑。

與此同時(shí),新一代的商業(yè)產(chǎn)品針對(duì)關(guān)系數(shù)據(jù)庫提供了極其高效的JDO規(guī)范的實(shí)現(xiàn)。這樣開發(fā)者的選擇就更豐富了;還有,TopLink也朝著開發(fā)者友好的方向前進(jìn),它的liscense越來越開放了。

ORM大獲全勝。所得這些因素使得ORM比以往更加規(guī)范。雖然很多項(xiàng)目仍然使用自己的持久層框架,但Hibernate,TopLink以及一些高端的JDO實(shí)現(xiàn),使得使用自己持久層框架的難度相對(duì)變大、可維護(hù)性降低,自然,也沒有什么理由去使用自己的框架了。

雖然這些J2EE開發(fā)框架的功能覆蓋范圍已經(jīng)很大了,但仍有很多地方不在其中。比如,一個(gè)基于struts,hibernate的項(xiàng)目,業(yè)務(wù)邏輯很難搞定。盡管對(duì)于這種問題,J2EE規(guī)范提出了解決方案(EJB),但仍舊沒有一個(gè)合適的編程模型。

Spring

J2EE開發(fā)框架被大規(guī)模地運(yùn)用到項(xiàng)目中,而項(xiàng)目總要負(fù)責(zé)這些框架以及自己業(yè)務(wù)代碼的連接,使之真正融合到一起。Spring就是專注于這個(gè)問題的,它和Hibernate融合的很好。

本質(zhì)上講,Spring是反向控制(IOC)和面向切面編程(AOP)的組合體。它是一個(gè)非侵入式的框架,增強(qiáng)了POJO的功能。從服務(wù)上講(With a service abstraction),它將程序代碼從J2EE環(huán)境解耦到普通的java對(duì)象(自然,這些代碼可以脫離J2EE而在多種環(huán)境中運(yùn)行)。它還在很多功能上提供了除EJB之外的選擇--比如為所有的POJO提供聲明式事務(wù)。Spring被廣泛運(yùn)用到很多項(xiàng)目中,從小的web程序到大的企業(yè)應(yīng)用程序。

在這個(gè)領(lǐng)域還有其他的產(chǎn)品,比如HiveMind (http://jakarta.apache.org/hivemind)和NamoContainer (http://nanocontainer.codehaus.org)。前者和Spring的思想大致相同,只不過在IOC上有較大差異;后者將很多服務(wù)融合在PicoContainer的IOC容器中。這些產(chǎn)品的實(shí)現(xiàn)方式和J2EE的不同在于,它們都很輕便。

在有J2EE API下做測(cè)試是非常困難的,這些容器將POJO從J2EE API中脫離出來,從而大大降低了測(cè)試的難度。測(cè)試一個(gè)普通的java對(duì)象,不用象測(cè)試J2EE程序那樣,得先將應(yīng)用程序部署到服務(wù)器上,要不就得自己動(dòng)手模擬J2EE環(huán)境。提供日益流行的測(cè)試驅(qū)動(dòng)的開發(fā)環(huán)境(對(duì)于開發(fā)者來說這是應(yīng)得的),是這些輕量容器流行的關(guān)鍵因素。

下一個(gè)將會(huì)是誰?

人們?nèi)找鎸?duì)開源框架的重視,使得很多項(xiàng)目的成本大大降低,并且投放使用以及維護(hù)速度都增加了?,F(xiàn)在的開源框架都有很高的質(zhì)量,都提供了很好的文檔和一些書籍讓開發(fā)者做參考。即便如此,兩大因素使得J2EE領(lǐng)域充滿了不確定性:開源領(lǐng)域和J2EE“標(biāo)準(zhǔn)”的沖突和AOP的日益重要。

開源和標(biāo)準(zhǔn)之間的沖突表現(xiàn)在兩個(gè)地方。一個(gè)是表現(xiàn)層,JSF的身后有Sun公司和其他的一些大公司,而在這個(gè)領(lǐng)域有Struts等開源產(chǎn)品與之競爭。在中間層,EJB 3.0采用J2SE5.0的annotations實(shí)現(xiàn)了依賴注入(dependency injection)的功能,但這個(gè)功能只是Spring的一個(gè)子集。

在這兩個(gè)領(lǐng)域,開源產(chǎn)品都更加革新。JSP借鑒了ASP.NET,而Tapestry(http://jakarta.apache.org/tapestry)則采用了WebObjects的思想。

同樣的,不知道EJB3.0為何要嘗試著標(biāo)準(zhǔn)化依賴注入,即使這樣會(huì)使之不可避免地喪失很多功能。 EJB 3.0好像也要進(jìn)入程序編寫領(lǐng)域,而J2EE規(guī)范在這方面還沒有涉足。

與此同時(shí),AOP的重要性在J2EE社區(qū)猛增,在使用上,AOP也越來越受到開發(fā)者的青睞。像Spring、dynaop (http://dynaop. dev.java.net)等被稱作“帶著雙拐的AOP”實(shí)現(xiàn)提升了AOP的知名度。而純粹的AOP技術(shù)比如AspectJ,在將來的幾年也會(huì)流行起來。

其次,JBoss (www.jboss.com)通過JCP和EJB3.0保持一致,它極大地推動(dòng)了AOP技術(shù)。但即使如此,JCP 還沒有轉(zhuǎn)向AOP跡象。

下一代的J2EE規(guī)范將擁抱更簡單的POJO編程模型,就像Spring和Hibernate這兩個(gè)J2EE開發(fā)框架做的一樣。J2EE開發(fā)者也注定要從“欺詐客戶”轉(zhuǎn)到以自己的編程經(jīng)驗(yàn)開發(fā)上來。這次改變將受到大多數(shù)人的歡迎,不像以前那樣每一個(gè)新規(guī)范發(fā)布后,最終都沒有能很好的實(shí)現(xiàn)。

【編輯推薦】

  1. JBoss的配置
  2. J2EE下使用JNDI
  3. J2EE筆試題目節(jié)選 Java的通信編程
  4. J2EE筆試題目節(jié)選 Java基礎(chǔ)系列
  5. 簡單解析J2EE架構(gòu):工具包的集合
責(zé)任編輯:book05 來源: 百度博客
相關(guān)推薦

2009-06-19 10:09:00

J2EE開發(fā)框架

2009-06-23 08:06:46

J2EE體系架構(gòu)J2EE模型J2EE設(shè)計(jì)模式

2009-06-10 13:30:32

J2EE四層模型客戶層Web層

2009-06-18 16:13:14

J2EE開發(fā)

2009-06-10 14:10:23

J2EE學(xué)習(xí)J2EE是什么

2011-11-25 14:59:36

JavaJ2EE框架

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護(hù)

2012-02-21 09:48:10

JavaJ2EE

2009-06-22 17:09:00

J2EE項(xiàng)目開發(fā)流程

2009-06-22 17:20:33

J2EE框架

2009-06-22 17:38:05

J2EE框架

2009-06-23 16:48:26

J2EE常見問題J2EE平臺(tái)

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-09-23 17:11:18

數(shù)據(jù)持久層Hibernate

2011-07-21 14:23:03

J2EE

2009-06-16 11:14:00

Hibernate+SJ2EE應(yīng)用開發(fā)

2012-01-17 10:22:07

JavaJ2EEJBoss

2009-06-22 17:05:41

Java EEJava企業(yè)應(yīng)用

2009-06-22 16:21:02

J2EE線程

2009-06-18 15:42:15

J2EE架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)