首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纯Java SQLiteJDBC驱动程序真的是纯的吗?

纯Java SQLiteJDBC驱动程序真的是纯的吗?
EN

Stack Overflow用户
提问于 2010-11-21 22:46:12
回答 2查看 3.1K关注 0票数 7

我决定在即将推出的Java servlet应用程序中使用嵌入式数据库。我最后只剩下两个竞争者:使用SQLiteJDBC“纯Java”驱动程序的SQLite和Java DB (又称Derby)。

这是我的杀手级标准:应用程序必须运行在任何支持Java的操作系统上,特别是我们有Solaris、CentOS、Windows x86和Windows x64主机,它们都需要运行应用程序。安装必须只涉及将war文件复制到目标服务器的部署文件夹,并让服务器完成其余的工作(这只是将zip复制到目标服务器,然后让服务器解压缩并运行应用程序)。作为安装的一部分,不应该将本机二进制文件搞得乱七八糟,也不应该有额外的设置逻辑。(这实际上不是我的要求,而是公司对所有基于servlet的应用程序的要求,但我确实喜欢它)。

我知道Derby (Java DB)满足上述标准。我已经做过一两次了。但我真的很喜欢SQLite的单文件体系结构,以及SQLite社区比Derby社区大20倍的事实。我还担心Oracle有一天会杀了Derby,因为他们现在有五个相互竞争的数据库产品,这种情况不会永远持续下去。当内务工作开始时,Derby可能会成为第一个受害者。

因此,我关注的是SQLiteJDBC,它声称拥有用于SQLite的“纯Java”JDBC驱动程序。现在,我将“纯Java”理解为没有操作系统依赖或附加库,即可以在任何操作系统上的任何JVM中运行驱动程序。因此,我使用纯Java驱动程序获取jar文件。作为一个好奇的人,我看了看它的内部。然后我注意到它在根目录中包含4个扩展名为".lib“的文件,如下所示:

linux-amd64.lib

linux-x86.lib

mac-universal.lib

win-x86.lib

好吧,那么,这是怎么回事?这些是命名操作系统的本地库吗?如果是这样的话,我是否可以假设这个纯Java驱动程序只能在jar中具有适当的lib文件的平台上运行?如果是这样的话,我不得不遗憾地将SQLite从竞争者名单中剔除,因为winX64和Solaris是我们这里最重要的两个操作系统。

或者,也许我误解了,纯Java驱动程序真的是纯Java,它可以在任何JVM上运行?

欢迎所有回复!

先谢谢你,约翰

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-21 23:19:10

如果我理解正确的话,SQLiteJDBC本身是一个Type4JDBC驱动程序,但仍然需要一些到主机操作平台的本机二进制集成,因为据我所知,SQLite仍然是一个基于C的解决方案,并且没有像SQL*Net for Oracle那样的网络集成/协议层。SQLiteJDBC主页提到了针对GCC支持的任何语言的"NestedVM“实现,因此似乎可以在任何有GCC运行时环境的地方部署跨平台。但是,并没有提到Solaris。

票数 2
EN

Stack Overflow用户

发布于 2012-01-07 21:55:45

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4238428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档