Чистые драйверы Java SQLitejdbc действительно чистые?

StackOverflow https://stackoverflow.com/questions/4238428

  •  26-09-2019
  •  | 
  •  

Вопрос

Я принимаю решение о встроенную базу данных в предстоящем приложении Java Servlet. Я до двух окончательных соперников: SQLite с драйверами SQLitejdbc "Чистые Java" VS Java db (aka derby).

Вот мои критерии убийцы: приложение должно работать в любой ОС, которая поддерживает Java, в частности, у нас есть Solaris, CentO, Windows X86 и Windows X64 хосты, которые надо будет запускать приложение. И установка должна быть не более, чем копирование файла войны в папку развертывания целевого сервера и позволить серверу сделать остальные (что не более, чем просто копировать ZIP на целевой сервер, а затем позволить серверу распечатать и запускать приложение). Не должно быть, не должно быть мукинга с родными двоичными дворами как часть установки и никакой дополнительной логики установки. (Это на самом деле не мое требование, это компания, для всех приложений на основе сервлетов, но мне нравится).

Я знаю, что дерби (Java db) соответствует вышеуказанным критериям. Я сделал это один или два раза. Но мне действительно нравится единая архитектура SQLite, и тот факт, что сообщество SQLite составляет около 20 раз больше, чем у Дерби. У меня также боюсь, что Oracle убьет дерби когда-нибудь, поскольку теперь у них есть что-то вроде пяти конкурирующих продуктов баз данных под их зонтиком, и это не может продолжаться навсегда. Дерби, вероятно, будет первым несчастным случаем, когда начинается домашнее хозяйство.

Итак, я смотрел на SQLiteJDBC, который утверждает, что «чистые Java» драйверы JDBC для SQLite. Теперь я бы понял «чистую Java», чтобы означать, что нет никаких зависимостей ОС или дополнительных библиотек, которые можно запускать драйвер в любом JVM в любой ОС. Итак, я иду и получаю файл JAR с чистыми драйверами Java. И быть любопытным родом, я смотрю в него. Затем я замечаю, что он содержит 4 файла в корне с расширениями «.lib» следующим образом:

Linux-AMD64.Lib.
Linux-X86.Lib.
Mac-Universal.Lib.
win-x86.lib.

Хорошо, так что с этим с этим? Это как родные библиотеки для именованных ОС? Если это так, могу ли я предположить, что этот чистый драйвер Java будет работать только на платформе с подходящим файлом lib в банке? Если это так, я при желании придется взять SQLite из списка претендентов, потому что WinX64 и Solaris - наши две самые важные ОС здесь.

Или, может быть, я неверно истолкованный, а чистый драйвер Java действительно чистый Java, и он будет работать в любом JVM?

Все ответы Добро пожаловать !!!

Заранее спасибо, Джон

Это было полезно?

Решение

Если я правильно понимаю, сам SQLitejdBC - это драйвер JDBC типа 4, но все же требует некоторой нативной бинарной интеграции к рабочей платформе хоста, поскольку SQLite все еще является решением на базе C и не имеет слоя сетевого интеграции / протокола, такого как SQL * NET для Oracle насколько я знаю. Домашняя страница SQLiteJDBC упоминает «NestedVM» реализацию для любого языка, поддерживаемого GCC, поэтому кажется возможным для развертывания кроссплатформенной платформы, где бы существует среда выполнения GCC. Однако не было упоминания о Solaris.

Другие советы

http://www.xerial.org/trac/xerial/wiki/sqlitejdbc. - Обеспечивает чистую реализацию Java, хотя он использует предоставленные файлы .lib, где это возможно, когда они быстрее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top