国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java數據對象(JDO)的前世今生

2019-11-18 15:46:58
字體:
來源:轉載
供稿:網友

  1 java數據庫應用,JDBC

  Java發明以來,在短短的幾年之間,迅速占領了從桌面應用(J2SE)到服務器(J2EE),再到小型設備嵌入式系統(J2ME)的應用開發市場,其語言吸取了SmallTalk的一切皆對象的理念,擺脫了C++的歷史累贅,簡潔、自由的風格贏得了很多開發者的喜愛。從JDK1.1開始,Java成為實用的語言,而不是被人觀望的新品秀;再經過JDK1.2的大量增強(尤其是Collection Framework),JDK1.3的虛擬機效率提升(HotSpot),JDK1.4的融合百家之長(Logging、RegEXP、NewIO等),現在已經是成熟穩重,頗顯大家風范。

  在企業級市場上,大部分的應用建立在數據庫基礎上,數據是企業的生命,傳統開發語言,包括面向過程的C、面向對象的C++、變種Pascal的Delphi(非常棒的語言,我用過四年),面向數據的PowerBuilder等等,先后在數據庫開發的舞臺上展現風姿。Java當然不會放過這些,于是,出現了JDBC。在JDBC的幫助下,Java也迅速滲入數據庫開發的市場,尤其是面向企業服務器的應用開發。

  今天要談的JDO,與JDBC有非常密切的關系,盡管JDO并不是只面向JDBC的數據對象包裝規范。下面先簡單地介紹一下JDBC。

  1.1 關系數據庫之百家爭鳴,ODBC

  關系數據庫的歷史一言難盡,我只能從我的接觸經歷和所見所聞,簡單地敘述一下。最早的時候,計算機還只在一些大型的研究機關露面,并不是普羅大眾可以涉及的。蘋果電腦將個人電腦引入民間,再隨著IBM的PC標準開放,個人電腦逐步普及開來,加上微軟的DOS操作系統,以及Borland的Turbo系列語言開發環境,老百姓發現原來電腦可以做這么多事!后來,出現了DBASE,一個簡單的關系數據庫系統,和SQL語言。后來,Borland看到了數據庫的市場前景,推出了Paradox(也是當今Delphi和C++Builder中仍然使用的Paradox),一舉占領了民用數據庫的大部分江山,之后,Borland干脆收購了Dbase,后來又購買了InterBase,將數據庫市場的領先優勢一直保持到Windows3.0出現。這時候,微軟在Windows1.0和2.0被人痛罵之后頑強地推出3.0,以及更穩定的3.1和Win32API,造就了個人電腦桌面操作系統的霸主地位,在Borland未警覺的情況下,購買了同樣具有類Dbase數據庫技術的Fox公司,并迅速將其易用化,形成了FoxBase,后來演變成FoxPRo,逐漸超過了Borland,成為個人電腦數據庫的大戶。微軟再接再勵,為簡單易用而低負荷要求的數據庫應用開發了access,贏得了廣大開發人員的心。當然,同期的Oracle、Sybase、Informix等商用數據庫憑專注于企業級數據庫技術成為高端的幾位領軍人物。微軟當然也想成為高端數據庫供給商之一,于是自行開發一套面向企業級應用的數據庫,不過很快項目夭折,微軟不甘心,購買了Sybase的底層TDS技術,包裝成了SQL Server,憑微軟的高度易用性的特點,也占領了不少市場。

  當市場上出現眾多的數據庫產品之后,Borland和微軟都發現自己擁有的數據庫產品挺多,市場也不小,不同的產品給用戶帶來不同的配置任務,不利于所有產品的推廣,于是,兩者紛紛開始制定數據庫訪問的規范,微軟推出了ODBC,其面向開發人員的親和性,逐步獲得了認可,同時,Borland糾集了IBM和Novell也推出了IDAPI數據庫接口規范,也就是今天BDE的核心,不過后來Novell和IBM先后退出,只剩Borland獨力支撐。不過Borland是一個技術實力雄厚的公司,其技術一向領先于微軟,BDE的性能比初期的ODBC不知道要好多少倍,后來微軟偷師學藝,把連接池等技術加到ODBC中,在Delphi3.0及其BDE在市場上風光無限的時候,逐步趕了上來并有超過。直到今天,BDE仍是Borland的產品線上的數據庫訪問標準,而微軟假如不是將ODBC和多數數據庫的客戶端內嵌進Windows的話,估計BDE仍是市場的贏家。不過,微軟是玩弄市場的老手,通過對操作系統的壟斷,其數據庫產品和ODBC標準終究占據了多數開發市場。

  1.2 從optional pack到JDK的標準API

  Java開始涉及數據庫應用后,Sun就極力制定Java的數據庫規范,JDBC API就是類似ODBC一樣,對數據庫訪問的底層協議進行最基本的包裝,然后形成一套統一的數據訪問接口,數據庫連接、SQL語句句柄、結果集,都帶有ODBC的影子。以方便配置為目的,Sun極力推薦完全瘦客戶端的TYPE 4型JDBC驅動,這是一個不需要安裝數據庫客戶端的驅動規范,是現在使用最多的。當然,為了保持與舊的數據庫兼容,JDBC規范中包括了專用于連接ODBC的TYPE 1驅動和需要安裝數據庫客戶端的TYPE 2驅動,以及可以由廠商在數據庫服務端專門提供面向JDBC的服務的TYPE 3驅動。

  JDBC最早出現時,還不屬于標準JDK的一部分,而是作為一個額外包提供下載。后來,隨著Java編寫的數據庫應用的的增多,和JDBC規范本身的逐漸成熟,JDBC終于成為JDK1.1的一部分。

  JDBC目前最新的是3.0版本,還有正在討論中的4.0版本。實際上,在開發中使用得最多的還是1.0中的API,2.0中主要增加了可雙向滾動的結果集、更新批處理等提高可用性和性能的API,3.0主要增加了連接池、可更新的結果集等特性。4.0將在可治理性、連接池規范化等方面再做改進。

  2 面向對象與數據庫

  現在的程序員,沒有不知道面向對象的。作為接近真實客觀世界的開發概念,面向對象使程序代碼更易讀、設計更合理。在普遍存在的數據庫應用領域,開發人員對面向對象的追求從未停止過。從八十年代開始,就有很多公司和研究機構在進行著面向對象與數據庫結合的研究。

  2.1 SmallTalk、C與C++、Delphi-Object Pascal、Java

  面向對象的語言最早有好幾種雛形,IBM的SmallTalk是其中最為流行的,在SmallTalk中,一切都是對象,一切都是類,它將面向對象的概念發揮到了極致。面向對象的編程比起傳統的面向過程的方式挺進了一大步,使人們熟悉到:原來軟件可以這樣寫。不過,由于計算機基本結構與底層硬件體系和系統軟件的限制,SmallTalk還不能在理想的性能前提下推廣到普通的應用上,這一點暫時限制了SmallTalk的發展,接著,C語言的面向對象版C++出現了,由于使用C語言的人很多,C++很快成為面向對象編程的主流語言。不過,為了保證與C的兼容,C++保留了很多面向過程的痕跡,比如惡心的指針、全局變量等等。Pascal的改進版Object Pascal相對來說安全許多,后來Borland干脆將Object Pascal換了個名字,叫Delphi,從此開創了一片面向對象編程的新世界, Delphi的嚴謹語法和快速編譯吸引了眾多的應用開發者,加上Borland的完美的VCL組件體系,比起MFC來方便而輕易,另外,Delphi完整的數據庫組件,也將數據庫開發變得簡單而輕易,Delphi再次成為成熟的面向對象開發語言。微軟當然不會放過這些,通過將MFC內置到操作系統中,微軟的VC++也搶回一些市場。這也是為什么Delphi開發的應用程序編譯后會比VC、VB開發的程序大的原因。

  1995年,Sun的一個開發小組本來為了小型嵌入式系統開發OAK語言,結果無心插柳柳成蔭,發展出了Java語言,它是一個完全擺脫了傳統語言的各種負擔的面向對象的語言,當然,也保留了一些非面向對象的核心(原始類型)以保證速度。現在Java也為最流行的面向對象語言之一。當然,微軟同樣不會放過它,擅于模擬的微軟立即弄出一個C#來與之競爭,并在C#中保留了一些變種的指針(指代)以吸引傳統的C開發者。關于這些語言的各自特點,這里就不一一贅述了。

  2.2 數據庫與數據對象化

  數據庫是企業級應用不可缺少的,因此,在面向對象流行的時候,數據庫廠商也在進行著數據對象化的研究。這些研究在上個世紀八十年代就初現端倪。

  數據庫的對象化一般有兩個方向:一個是在主流的關系數據庫的基礎上加入對象化特征,使之提供面向對象的服務,但訪問語言還是基于SQL;另一個方向就是徹底拋棄關系數據庫,用全新的面向對象的概念來設計數據庫,這就是對象數據庫ODBMS。

  2.2.1 關系數據庫對象化、SQL99與JDBC3.0

  隨著許多關系數據庫廠商開始提供對象化服務,各自的接口開始互不兼容,在經歷一些麻煩之后,關系數據庫廠商感覺到規范化的必要,因為當初關系數據庫雄霸天下時SQL92標準起了很大作用,大家可以按照統一的編程方式來訪問高性能的商用數據庫。

  關系數據庫廠商集中起來,重新將對象化服務規范起來,形成了SQL99規范,將其中的對象結構等內容規范起來,開始一個嶄新的面向對象的關系數據庫(ORDBMS)的歷程。

  JDBC3.0就是在這種情況下出臺的,它將對關系數據庫中的對象服務的訪問API規范起來,為Java平臺提供了訪問ORDBMS的標準方式。當然,JDBC3.0對傳統的SQL操作也進行了很多功能增強。

  Oracle是一個傳統的關系數據庫廠商,在對象化的道路上,Oracle當然采取追加對象化特征的道路,以侵入數據對象化的市場,保持Oracle在數據庫領域的領導地位。假如說Oracle7.4使Oracle走向全盛的話,從Oracle8開始,Oracle就成為關系數據庫加對象類型的先驅。在Oracle8中,我們可以定義一些數據結構(Record),將普通的類型包裝在其中成為數據元素,然后可以在客戶端按Record結構進行訪問,初步提供了面向對象的數據庫服務。

  2.2.2 對象數據庫

  對象數據庫就是采用全新的面向對象概念來設計數據庫的全新數據庫類型。在這方面,主要以一些大學研究機構進行設計和開發,有些也形成了產品,不過由于市場方面的原因(主要是關系數據庫的輕易上手和市場絕對領導地位)和ODBMS先天的一些弱點(比如查詢引擎很難優化),使ODBMS沒有象關系數據庫那樣流行起來。

  不過對象數據庫的對象化特點還是令人割舍不下,目前還是有一些很好的產品在市場上,從商用的到免費的都用。目前在ODBMS領域占據領導地位的是Versant、FastObjects和ObjectStore等幾大廠商,并且,市場份額也在逐步擴展。免費的產品包括C++編寫的Ozone、純Java的db4o等等。還有一些研究機構開發一些底層的面向對象數據庫引擎,但只提供一些底層的API,不提供治理方面的功能,以及一些算法提供開放式接口,讓廠商去選擇和實現。比如美國威斯康新大學計算機系數據庫組的SHORE引擎,就是一個非常出色的面向對象數據庫引擎,現在還在積極的更新中,一些其它研究機構和數據庫廠商采用它完成了自己的非凡的對象數據庫,比如專用于地理信息的數據庫、專用于宇宙空間數據研究的數據庫等等。

  目前對象數據庫最大的障礙是缺乏統一的規范,各個數據庫廠商有各自的訪問接口。對象數據庫比起關系數據庫來,不只是基本的幾種數據類型那么簡單,它還涉及繼續處理、多態等一大堆面向對象特征的實現,規范化道路當然困難重重。這也是對象數據庫無法普及的一個重要原因。

  也有一些機構提出了一些建議的規范,比如制定Corba標準的OMG小組的一個分組ODMG提出的ODMG規范,目前已經是3.0版本,其中的OQL對象查詢語言相當具有吸引力。還有一些中立的機構提出了其它的一些標準化的對象訪問API,也可算是面向對象數據庫的規范之一。象前面提到的FastObjects和Ozone就是符合ODMG3.0規范的。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河池市| 洪洞县| 云阳县| 晋江市| 调兵山市| 招远市| 万山特区| 海城市| 贺兰县| 双鸭山市| 霍邱县| 雅安市| 满洲里市| 萝北县| 泌阳县| 古浪县| 淳化县| 碌曲县| 班玛县| 台湾省| 洪泽县| 镇康县| 彭泽县| 正镶白旗| 曲阜市| 浮山县| 盱眙县| 昌宁县| 赣榆县| 彰化县| 巴楚县| 开化县| 英德市| 普宁市| 葵青区| 尼木县| 闵行区| 宾阳县| 凤山市| 海林市| 岳阳市|