Android開發-物件導向的資料庫Db4o

來源:互聯網
上載者:User

 

領先的開源物件導向資料庫提供廠商db4objects宣布db4o已可以順利運行於Android平台。先前的InfoQ新聞“Db4Objects發布Db4o 7.0,支援透明啟用”中曾經報道db4objects公司和愛好者積極推進db4o運行於Google Android平台,以期待讓db4o成為Android上的首選資料庫平台,現在db4o已經成功走出了這一步。

Android是Google宣布成立的“開放手機聯盟”的移動開發平台。開發人員拿到的Andorid SDK是一個包含完整的行動裝置開發套件,包括應用程式架構、開發環境和工具(基於Eclipse)、調試和虛擬運行環境,預設的開發語言是Java,讓開發人員可以使用熟悉的物件導向方式開發移平台動應用程式。Andorid平台的作業系統使用Linux核心,其上架設了基於C/C++編寫的OpenGL、字型、轉碼器、SQLite和用於Web渲染的Webkit。更多細節,可以回顧新聞“Google Android SDK捨棄Java ME,支援Java Lite和Apache Harmony”。在這個SDK發布之後,其Dalvik虛擬機器背離標準Java虛擬機器的基於寄存器的實現,而且配合使用了Apache的Harmony基礎類庫,這種選擇說明了Google實現開放同盟決心,雖然引發了是否會造成Java移動開發平台的分裂的爭議,但是從長遠的角度講開放平台能夠擁有更高的市場佔有率。

db4o是一個被廣泛歡迎的物件導向資料庫,起初它基於Java平台,而後發布了.Net平台的版本,db4o具有雙授權(GPLv2和商業授權),所以在很多開源項目中都可以看到db4o的身影。物件導向資料庫的出現是為了更好的適合物件導向方式開發應用程式,因為傳統的關係型資料庫與OO模型具有“阻抗不匹配”問題,目前廣被接受的方案是使用ORM(對象關係映射)架構來解決。但是Java中的Hibernate、基於標準的JPA、輕量級iBatis或.Net下的NHibernate都無法解決複雜度問題,且ORM架構中廣泛使用的動態增強方式在資源受限環境下的效能開銷(Dalvik不使用堆實現VM的其中一個原因就是效能最佳化的考慮)很難被接受,所以在Android發布時選擇了資源佔用小核心簡單的SQLite作為資料庫引擎,但這意味著Android平台將預設使用關聯式模式資料庫。db4objects這樣評價了這個組合的遺憾之處:

然而,令人驚訝的是Android推出時依然使用了關係型資料庫,它是與整個平台的物件導向風格所不和諧的唯一部分。幸運的是,db4objects有相應的解決方案。db4o可以無縫的運行於Android,使簡單的實現原生對象存取成為可能。

雖然關係型資料庫對於大多數開發人員來說都非常熟悉,但是對於喜歡使用一致的OO模型進行持久化的程式員來說這就有些“困擾”了,因為前面所述在這種環境下選擇ORM是不現實的。db4o擁有方便嵌入應用程式中的引擎,適合與應用程式共同分發,而且它具有輕量特性,運行檔案只有600k左右。這些特性與SQLite相呼應,因為SQLite也是以容易嵌入、資源佔用小見長的,db4o作為物件導向資料庫在這些對應方面不會遜色,可以作為一個SQLite的很好的物件導向替代方案。db4o的新聞中這樣描述了使用了像db4o這類物件導向資料庫的好處:

使用像db4o這樣的物件導向資料庫有很多好處,包括代碼更容易維護、可以基於更靈活的資料模型建立各種新穎的應用程式。不同於僵化的,預先定義的SQL表(table),db4o允許儲存靈活、形式自由的資料,這些資料可以隨時更改或修正。而且,db4o還允許通過dRS(db4o複製系統)高效的複製資料,這也是Android中一個缺失的環節。通過dRS,開發人員可以編寫應用程式讓使用者的資料備份到後台伺服器或者家中的PC上。也就是說,一個使用者可以在電話上開始玩一個遊戲,然後暫停,晚上可以在家中繼續玩。商業的應用情境包括基於地點的自動設定資訊同步(field force automation),RFID的資料擷取,和複雜導航系統的本地地理資料緩衝。

db4o支援Android平台對於程式員來說就是提供了在移動平台使用物件導向API(創新的資料查詢方式,使用原生查詢可以語義化、型別安全的對資料進行查詢)進行持久化和查詢的工具,也補全了Android平台開發API中唯一不符合物件導向的模組(即SQLite對應的關係型資料庫),對於“開放手機聯盟”來說意味著更多的開源廠商開始向開放聯盟靠攏。Db4Objects的新聞稿中這樣描述了讓db4o運行於Android平台的過程和一些相關的樣本項目:

在下載了Android SDK後幾分鐘,db4objects的工程師就使db4o運行於Android上了。Android上的db4o通過了3,500個單元測試。現在db4o擁有達到裝置層級(device-grade)的軟體品質,在關鍵性場合得到了證明,它被部署於高速列車、飛行器、複印機等裝置中,它也可以被部署於Android開發人員的掌上裝置中。

現在db4o剛剛宣布支援Android,所以可以參考的程式範例並不多。db4o的社區經理German Viscuso將PasswordSafe移植到db4o,它可能是第一個可以在Android下與db4o協同工作的軟體包。而PasswordSafe的作者Steven Osborn也稱讚說:“太棒了,db4o的代碼比我的更優雅”。另外一個範例程式是MapMe,它可以在 Android上面顯示2D地圖,使用了db4o儲存和查詢Google地圖的資料資訊。

Ted Neward曾經多次提到過使用db4o帶來的好處,InfoQ曾經在“借用對象資料庫db4o簡化開發過程”中描述過db4o在最佳化開發過程方面的優勢,它能夠更簡單的適應持久化模型不斷的變化,能夠平滑的實現資料模型重構,所以在測試驅動開發中會帶來實際的紅利。對於db4o與Android都還處於觀望態度的程式員可以藉此機會一起嘗試一下這個移動開發平台和物件導向資料庫帶來的新編程模型。

 

原文連結:http://www.infoq.com/cn/news/2007/12/db4o_as_android_ready

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.