2007年12月5日,领先的开源面向对象数据库提供厂商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都还处于观望态度的程序员可以借此机会一起尝试一下这个移动开发平台和面向对象数据库带来的新编程模型。
分享到:
相关推荐
db4o 支持多种版本的 JDK,因此可以根据需要选择合适的 JAR 包。 二、db4o 查询方式 db4o 提供了三种查询方式:QBE(Query by Example)、SODA(Simple Object Database Access)和 NQ(Native Queries)。每种...
Db4o,全称为“Database for Objects”,是一个开源的对象数据库管理系统,主要应用于Java和.NET平台。这个项目专注于提供一种简单的方式来存储和检索Java对象,无需SQL或其他中间映射层。在“Db4o的简单操作项目”...
在db4o 8.0版本中,引入了多项增强功能和改进,以提升性能和用户体验。 ### 一、对象数据库基础 对象数据库与传统的关系型数据库不同,它不依赖于表格和列的结构,而是直接存储和检索对象实例。这使得对象数据库在...
**版本8.0** 是db4o的最后一个官方发布版本,意味着这个版本包含了db4o的所有最新特性和改进。在这个版本中,用户可以期待更稳定、更优化的性能以及更丰富的功能。 **源码包含** 在此版本中,开发者可以深入理解db4...
Android开源数据库框架db4o是一个强大的对象数据库管理系统,专为Java和.NET平台设计,但在Android环境中也有广泛的应用。db4o提供了一种直接在内存或磁盘上存储对象的方式,无需传统的关系型数据库映射,这使得开发...
- **跨平台支持**:db4o可以在多种平台上运行,包括Java、.NET和Mono等。 #### 四、进一步学习资源 为了更深入地学习db4o,官方提供了一系列学习资源: - **交互式教程应用**:Db4objects.Db4o.Tutorial.exe 是一...
它可能是针对Java开发者的教程,因为db4o也支持Java平台。学习Java版本的教程可能有助于理解db4o的核心概念,这些概念在.NET版本中也是适用的。 ### 5. 主要特性 - **透明性**:db4o的透明持久化意味着对象可以像...
db4o(database for objects)是对象数据库的一种,它提供了对Java和.NET平台的完全支持,允许开发者以面向对象的方式来操作数据,极大地简化了数据管理和持久化的过程。 ### db4o概述 db4o的核心理念是“存储对象...
4. **版本控制**:db4o支持对象的历史版本记录,这意味着可以追踪对象的修改历史,并能回滚到先前的状态。这对于实现版本控制和数据恢复功能非常有用。 5. **内存管理**:db4o可以配置为在内存中运行,这样就能提供...
此外,作为开源项目,db4o的社区支持和版本更新也是重要的部分,可能会介绍如何参与社区,获取最新的开发信息和bug修复。 总的来说,《db4o 权威指南》是一本全面覆盖db4o特性和实践的资源,对于想要深入理解和使用...
9. **Versioning**:db4o支持对象版本控制,可以在不覆盖旧版本的情况下保存对象的多个状态。 在Android环境中使用db4o,需要注意的是要正确处理资源释放,因为移动设备上的内存资源有限。同时,由于db4o是基于JVM...
【db4o6.4-java】是一个针对Java平台的数据库引擎开发包,它包含了db4o的源代码、测试代码以及其他相关资源。db4o全称为"Database for Objects",是一个开源的对象数据库管理系统(ODBMS),它允许开发者直接在Java...
若需使用客户端/服务器版本或可选组件,还需要`db4o-8.0-cs-java5.jar`和`db4o-8.0-optional-java5.jar`。最简便的安装方式是将`db4o-8.0-all-java5.jar`添加到项目的CLASSPATH中。在集成开发环境(如Eclipse)中,...
db4o支持复杂的数据结构,包括嵌套对象和集合。在db4o中,对象可以包含其他对象或者集合作为属性,这些被包含的对象也会被完整存储。例如,一个人对象可以包含地址对象,而地址对象又可以包含街道、城市等子对象。...
Db4o,全称为“Database for Objects”,是一个开源的对象数据库系统,专为.NET和Java平台设计。它允许开发者直接在对象上进行数据操作,而无需传统的ORM(对象关系映射)层,简化了数据存储和检索的过程。这个...
db4o是一款开源的对象数据库,支持Java、.NET以及Mono平台。该教程旨在帮助用户快速上手db4o,并在开发过程中提供可靠的支持。 ### 一、db4o概述 db4o(发音为“d-b-for-o”)是一款原生的Java、.NET和Mono平台的...
同时,DB4O支持事务管理和版本控制,以确保数据的一致性和可恢复性。 - 完整的全源码和注解:为了深入理解DB4O的工作原理和最佳实践,开发者通常需要参考完整的示例代码和详细的注释。这些资源可以帮助你更好地了解...
8. **跨平台**:除了.NET,Db4o也支持Java和其他平台,提供了一致的API和功能。 在压缩包中,"Db4objects.Db4o"可能包含了Db4o的主要组件和库文件。通常,这些文件包括Db4o的主DLL、配置文件、文档和可能的示例代码...
2. **自动版本管理**:DB4O会跟踪对象的变化,为每个对象的修改创建新的版本,便于回滚和历史查询。 3. **查询API**:DB4O提供了一个强大的查询接口,允许通过对象的属性进行查询,类似于LINQ in .NET或 Criteria ...