NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Db4o 发布新版本,支持 Android 平台

  • 2007-12-10
  • 本文字数:2259 字

    阅读完需:约 7 分钟

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 都还处于观望态度的程序员可以借此机会一起尝试一下这个移动开发平台和面向对象数据库带来的新编程模型。

2007-12-10 07:561472

评论

发布
暂无评论
发现更多内容

全程干货!拍乐云受邀LiveVideoStackCon,首席科学家分享拥塞控制最佳实践

拍乐云Pano

MySQL常用引擎及优缺点

Sakura

4月日更

架构实战营 - 模块 2- 总结

吴建中

架构实战营

抢购倒计时自定义控件的实现与优化

vivo互联网技术

动画 安卓 自定义控件 倒计时

【签约计划】行业分析能力考核成绩公布

InfoQ写作社区官方

签约计划 热门活动

三色标记原理,我给应聘者问懵了...

华为云开发者联盟

Java 节点 三色标记 SATB算法 回收器

全球案例 | 霍尼韦尔:Atlassian 帮助我们在疫情期间拯救生命

Atlassian

敏捷 Atlassian Jira 远程协作 霍尼韦尔

裸辞还可以吊打大厂面试官?四面拿到阿里、字节offer后我还是选择了美团!

Java架构师迁哥

《专访阿里研究员吴翰清:大数据时代下,如何保障网络安全和用户隐私》(采访提纲)

三掌柜

调查采访能力考核

【LeetCode】实现 strStr()Java题解

Albert

算法 LeetCode 4月日更

架构实战营 - 模块 2- 微信朋友圈高性能复杂度分析

吴建中

架构实战营

计算机原理学习笔记Day11

穿过生命散发芬芳

计算机原理 4月日更

面试加分项!为了跳槽强刷1000道Android真题,附小技巧

欢喜学安卓

android 程序员 面试 移动开发

华为云PB级数据库GaussDB(for Redis)揭秘第八期:用高斯 Redis 进行计数

华为云开发者联盟

redis GaussDB(for Redis) 计数器 计数

腾讯万字Code Review规范出炉!别再乱写代码了

程序员生活志

Linux tree命令

一个大红包

Linux linux命令 4月日更

iMazing 一款替代iTunes的数据备份软件

懒得勤快

ios Mac imazing 手机管理

Rust从0到1-枚举-if let控制流

rust 枚举 if let

我很久没写代码了,但我是个好架构师

四猿外

Java 程序员 系统架构 架构师 代码

Redis持久化方案介绍之RDB方案

大数据技术指南

redis 4月日更

搭建亿级时间线数据的监控系统,我有绝招!

华为云开发者联盟

Grafana 监控系统 GaussDB(for Influx) 华为云数据库 时间线

低代码:正在改变软件的开发方式

华为云开发者联盟

软件开发 低代码 低代码平台 华为云应用魔方 AppCube

一天下载量突破9000000!限时分享:阿里Java架构师成长笔记(2021版)

比伯

Java 架构 面试 程序人生 计算机

凡尔赛?拿到阿里offer只用了29天?

Java架构师迁哥

聪明人的训练(二十)

Changing Lin

4月日更

多源数据即席查询Trino(Presto)引擎剖析

小舰

4月日更

破十亿浏览量的阿里最新Java架构师成长笔记开源!

Java架构追梦

Java 阿里巴巴 架构 面试 成长笔记

神级Android进阶笔记!一次关于JVM的面试经历,建议收藏

欢喜学安卓

android 程序员 面试 移动开发

GitHub开源:100美元自制激光雷达

不脱发的程序猿

GitHub 开源 DIY 4月日更 激光雷达

阿里员工:最惨P7,33岁才28K,感觉没有前途了。网友调侃:最美逆行者

程序员生活志

【全网首发】2021年移动开发iOS进阶提升方案,内附详细视频知识点解析和思维导图!【强烈建议收藏!】

flutter swift 数据结构与算法 ios开发 iOS逆向

Db4o发布新版本,支持Android平台_Java_田乐_InfoQ精选文章