在Windows下配置和编译Oracle Berkeley DB Java Edition
1. 前言
Oracle Berkeley DB Java Edition(以下简称JE)是一套由纯Java语言实现的嵌入式数据库,具有移植性强,存储性能高等特点。
JE提供的事务存储引擎不仅显著的减少了对象持久化开销,而且支持大量的并发的事务存储,并保持了对象-关系映射(ORM)解决方案的灵活性,速度和扩展性。为了让用户更加方便的使用JE,JE还提供了直接持久层(DPL),旨在提供与EJB3相同的好处:对象持久化时,不需要将对象转换成关系表。使用DPL,可以让用户更加关注事务逻辑,而不需要关心对象的存储。
除了Sun J2SE平台之外,JE还支持Android平台以及Oracle JRockit JVM,JE与JasperReport无缝集成更是大大的便利于商业智能及分析。同时为了方便项目管理,JE还提供了对Maven这一自动化编译及部署工具的支持。
本文介绍了如何在Windows下配置和编译Oracle Berkeley DB Java Edition以及如何运行一个简单的示例程序。后续文章还将涵盖许多JE使用及提高的机制和技巧。
2. 环境配置
为了在Windows上编译JE,系统需要安装JDK,Ant(1.7及以上版本)以及JUnit(3.8及以上)。
您可以从以下地址下载这些工具的最新版本:
- http://java.sun.com/javase/downloads/index.jsp
- http://ant.apache.org/bindownload.cgi
- http://www.junit.org/
下载完这些工具之后,下一步就是解压缩和安装。
1.将Ant解压缩到指定目录(如d:toolsant)。解压缩之后的目录文件如图1所示:

图1
2.将JUnit解压缩到指定目录(如d:toolsjunit)。解压后的目录结构如图2所示:

图2
3.将Java安装到指定目录(如d:toolsjava)。
4.在安装完指定工具之后,您需要设置环境变量,主要为:classpath和path两个设置。具体方法如下:右键点击“我的电脑”,选择“属性”,选择“高级”标签,进入环境变量设置,如图3所示:

图3
根据您安装Ant,JDK和JUnit的具体位置,将path相应设置为对应目录,如:d:toolsjavabin;d:toolsantbin,将classpath设置为:
.;d:toolsjavalibtools.jar;d:toolsantlibant.jar;d:toolsjunitjunit.jar.
在安装成功之后,您可以在命令行窗口输入:java -version和ant -version来查看是否已经安装成功,如图4。

图4
3. 下载Berkeley DB Java Edition
安装必需的工具后,用户可以由地址:http://www.oracle.com/technology/software/products/berkeley-db/je/index.html下载JE最新本的zip压缩包,如图5:

图5
JE的最新发行版本是3.3.75,用户下载zip包到本地机器之后,将其解压缩到指定目录,如:d:databaseje,目录结构如图6:

图6
4. 编译并运行示例
用户在解压缩之后的目录中,会看到名为build.xml的Ant脚本,参看上图。它设置了一系列任务,如编译,单元测试以及运行JE提供的示例,接下来我们运行“testex-simple”任务所表示的
示例。
该任务实际上是运行在目录d:databasejeexamplesje下名为SimpleExample的示例程序,如图7:

图7
该任务演示了最基本的使用JE存取数据的过程,用户可以打开一个Windows的控制台,并进入到JE解压缩的目录:d:databaseje,然后输入命令:ant testex-simple,就会在控制台的输出
中看到取出的数据,如图8:

图8
5.总结
从上述过程中可以发现,在Windows平台上配置和编译Oracle Berkeley DB Java Edition是非常简单的。Linux用户会发现,在Linux编译及运行JE示例程序的配置流程和本文基本一致。如您有进一步的疑问,欢迎访问JE的官方论坛:http://forums.oracle.com/forums/forum.jspa?forumID=273,或者给我留言。
不知道能否说一下eclipse下,如何使用。谢谢了
Hi, Chen
在Eclipse下开发一个JE应用程序是很简单的,你只需要将下载的je.jar加到”project->properties->Java build path”中就可以开发你的JE应用了。
谢谢!
张涛
你好,
请问我怎么样才能够编译下下来的db-46之类的版本得到db.jar和libdb_java46.dll
谢谢了
我在Myeclispe下使用BDB JE,je-3.3-62.jar和db.jar都已经导入了,但是报错:
java.lang.UnsatisfiedLinkError: no libdb_java46 in java.library.path
不知道是怎么回事,找了好久一直没法解决,请帮忙看看
谢谢了
@colo
db.jar和libdb_java46.dll 是BDB 4.6版本中Java API用到的类库。 je-3.3-62.jar 是BDB-JE产品。两者不同产品,不可以混用。
哦,我知道了,谢谢你
另外请问下怎样编译BDB得到它的JAVA API类库,我太菜了实在搞不定
@colo
关于编译使用BDB C语言版的下的Java API,可参考如下文档:
1. 如果用的最新版本的BDB, 可以参考这里: http://www.oracle.com/technology/documentation/berkeley-db/db/installation/index.html
2. 如果用的是早期版本,请参考你下载的BDB发布包里安装文档(即 Berkeley DB Installation and Build Guide)的 关于Building the Java API的章节。
好的,太感谢了,我刚看到你们博客的一篇文章了
另外,能提个建议吗,觉得你们的所有文章列表很不好找,
要是在顶部 首页》关于我们》招贤纳士》旁边加个文章列表之类的导航就好了
@colo
好建议,我考虑加上。 另外,在页面右边有对应产品分类、标签云等都可以帮助快速找到文章。
请问可以用prefuse+BDB做可视化显示吗
我页面是JSP的,从BDB读出来的数据是一个一个类的形式或者字节流
请问怎么样能利用prefuse显示
我看到prefuse主页上的是xml和jdbc连接的例子,不知道这样要怎么实现,谢谢了