草庐IT

sqlite - 纯 Java SQLiteJDBC 驱动真的是纯的吗?

coder 2023-07-20 原文

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

这是我的 killer 标准:应用程序必须在任何支持 Java 的操作系统上运行,特别是我们有 Solaris、CentOS、Windows x86 和 Windows x64 主机都需要运行该应用程序。安装必须无非就是将war文件复制到目标服务器的部署文件夹,让服务器完成剩下的工作(无非就是复制一个zip到目标服务器,然后让服务器解压并运行应用程序)。作为安装的一部分, native 二进制文件不应该乱搞,也不应该有额外的设置逻辑。 (这实际上不是我的要求,而是公司的要求,适用于所有基于 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

好的,那么,这是怎么回事?这些是否类似于指定操作系统的 native 库?如果是这样,我是否可以假设此纯 Java 驱动程序仅在 jar 中具有适当 lib 文件的平台上运行?如果真是这样,我将不得不遗憾地将 SQLite 从竞争者列表中剔除,因为 winX64 和 Solaris 是我们这里最重要的两个操作系统。

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

欢迎所有回复!!!

提前致谢, 约翰

最佳答案

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

关于sqlite - 纯 Java SQLiteJDBC 驱动真的是纯的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4238428/

有关sqlite - 纯 Java SQLiteJDBC 驱动真的是纯的吗?的更多相关文章

  1. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  2. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  3. ruby-on-rails - 我真的需要在 Rails 中使用 csv gem 吗? - 2

    我的问题很简单:我是否必须在使用RubyonRails的类上require'csv'?如果我打开一个railsconsole并尝试使用CSVgem它可以工作,但我必须在文件中这样做吗? 最佳答案 CSVlibrary是ruby​​标准库的一部分;它不是gem(即第三方库)。与所有标准库(与核心库不同)一样,csv不会由ruby​​解释器自动加载。所以是的,在您的应用程序中某处您确实需要要求它:irb(main):001:0>CSVNameError:uninitializedconstantCSVfrom(irb):1from/Us

  4. ruby - Sinatra + Heroku + Datamapper 使用 dm-sqlite-adapter 部署问题 - 2

    出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t

  5. ruby - 当前的 Ruby 方法是通过 super 调用的吗? - 2

    在运行时的方法中,有没有办法知道该方法是否已通过子类中的super调用?例如moduleSuperDetectordefvia_super?#whatgoeshere?endendclassFooincludeSuperDetectordefbarvia_super??'super!':'nothingspecial'endendclassFu"nothingspecial"Fu.new.bar#=>"super!"我如何编写via_super?,或者,如果需要,如何编写via_super?(:bar)? 最佳答案 可能有更好的方法

  6. ruby - Ruby 导入的方法总是私有(private)的吗? - 2

    最好用一个例子来解释:文件1.rb:deffooputs123end文件2.rb:classArequire'file1'endA.new.foo将给出错误“':调用了私有(private)方法'foo'”。我可以通过执行A.new.send("foo")来解决这个问题,但是有没有办法公开导入的方法?编辑:澄清一下,我没有混淆include和require。另外,我不能使用正常包含的原因(正如许多人正确指出的那样)是因为这是元编程设置的一部分。我需要允许用户在运行时添加功能;例如,他可以说“run-this-app--includefile1.rb”,应用程序的行为将根据他在file1

  7. ruby-on-rails - ruby 真的是一种完全面向对象的语言吗? - 2

    Ruby是完全面向对象的语言。在ruby​​中,一切都是对象,因此属于某个类。例如5属于Objectclass1.9.3p194:001>5.class=>Fixnum1.9.3p194:002>5.class.superclass=>Integer1.9.3p194:003>5.class.superclass.superclass=>Numeric1.9.3p194:005>5.class.superclass.superclass.superclass=>Object1.9.3p194:006>5.class.superclass.superclass.superclass.su

  8. ruby - 运行测试时静音 Chrome 驱动程序控制台输出 - 2

    我使用的是最新版本的Chrome(32.0.1700.107)和Chrome驱动程序(V2.8)。但是当我在Ruby中使用以下代码运行示例测试时:require'selenium-webdriver'WAIT=Selenium::WebDriver::Wait.new(timeout:100)$driver=Selenium::WebDriver.for:chrome$driver.manage.window.maximize$driver.navigate.to'https://www.google.co.in'defapps_hoverele_hover=$driver.find_

  9. node.js - 从未编写过任何自动化测试,我应该如何开始行为驱动开发? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。多年来,我一直在使用多种语言进行编程,并且认为自己总体上相当擅长。但是,我从未编写过任何自动化测试:没有单元测试,没有TDD,没有BDD,什么都没有。我已经尝试开始为我的项目编写适当的测试套件。我可以看到在进行任何更改后能够自动测试项目中所有代码的理论值(value)。我可以看到像RSpec和Mocha这样的测试框架应该如何使设置和运行所述测试变得相当容易

  10. ruby-on-rails - Rails 3 Cli 执行命令真的很慢吗? - 2

    有人知道为什么我的rails3.0.7cli这么慢吗?当我运行railss或railsg时,他大约需要5秒才能真正执行命令...有什么建议吗?谢谢 最佳答案 更新:我正在将我的建议从rrails切换到rails-sh,因为前者支持REPL,而rrails不是用例。此外,当与ruby​​环境结合使用时,修补似乎确实可以提高性能变量,现在反射(reflect)在答案中。一个可能的原因可能是这个performancebuginruby每当在ruby​​代码中使用“require”时,它就会调用一些代码(更多详细信息here)。在使用Rai

随机推荐