我正在为在即将到来的Java servlet应用程序的数据库embededded的决定。我下到最后两个竞争者:SQLite的与SQLiteJDBC“纯Java”的司机和Java DB(又名德比)

下面是我的杀手标准:应用程序必须在任何操作系统上运行支持Java,特别是我们的Solaris,CentOS的中,Windows 86和Windows 64将所有需要运行的应用程序的主机。而且安装必须更不涉及任何不是复制war文件到目标服务器的部署文件夹,然后让服务器做休息(这无非只是复制压缩到目标服务器,然后让服务器解压并运行应用程序)。应该没有摆弄周围的本地二进制文件作为安装的一部分,并没有额外的设置逻辑。 (这实际上不是我的要求,这是该公司的,所有基于servlet的应用程序,但我不喜欢它)。

我知道德比(爪哇DB)符合上述标准。我一次或两次做到了。但我真的很喜欢的SQLite的单个文件架构,事实上,SQLite的社区大约比德比的大20倍。我也有一个担心,甲骨文将杀死德比有一天,因为他们现在有一些像5个相互竞争的数据库产品的保护伞下,并不能永远持续下去。德比将可能是第一个受害者持家开始时。

所以,我一直在寻找在SQLiteJDBC,声称拥有SQLite的“纯Java” JDBC驱动程序它。现在,我想了解“纯Java”的意思,有没有操作系统的依赖关系或其他库,一个可以在任何操作系统的任何JVM上运行的驱动程序。所以,我去弄用纯Java驱动程序的jar文件。并且是好奇的那种,我看里面。然后,我注意到它含有与“的.lib”扩展的根部4个文件,如下所示:

Linux的amd64.lib结果 Linux的x86.lib结果 MAC-universal.lib结果 双赢x86.lib

好了,所以,有什么与怎么了?难道这些像命名操作系统的本地库?如果是这样,我能承担这个纯Java驱动程序将只在一个罐子相应的lib文件的平台上运行?如果是这样的话,我可悲将不得不采取的SQLite了竞争者的名单中,因为winX64和Solaris是我们最重要的两个OS在这里。

也许我误解和纯Java驱动程序真的是纯Java的,它会在任何JVM上运行?

所有响应欢迎!!!

在预先感谢 约翰

有帮助吗?

解决方案

如果正确地明白SQLiteJDBC本身是类型4 JDBC驱动器,但仍需要一定的本机二进制整合到宿主操作系统平台,因为SQLite是仍然基于C的溶液与不具有像SQL的网络整合/协议层*对于净Oracle作为据我所知。该SQLiteJDBC主页提到了由海湾合作委员会支持的任何语言中的“NestedVM”的实施,所以它似乎可以部署跨平台,只要有GCC运行时环境。没有的Solaris然而提及

其他提示

http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC - 提供一个纯Java实现,尽管它使用所提供的.lib在可能,因为它们是更快速的文件

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top