Действительно ли чистые драйверы Java SQLiteJDBC чисты? - PullRequest
7 голосов
/ 21 ноября 2010

Я принимаю решение для встроенной базы данных в будущем приложении сервлета Java.Я дошел до двух последних претендентов: SQLite с драйверами SQLiteJDBC «чистая Java» против Java DB (он же Derby).

Вот мой критерий убийцы: приложение должно работать на любой ОС, которая поддерживает Java, в частности, у нас естьХосты Solaris, CentOS, Windows x86 и Windows x64, которые будут необходимы для запуска приложения.И установка должна включать в себя не что иное, как копирование файла war в папку развертывания целевого сервера и предоставление возможности серверу делать все остальное (что является не чем иным, как простым копированием zip-файла на целевой сервер, а затем позволяет серверу разархивировать и запустить приложение).В процессе установки не должно быть никаких проблем с собственными двоичными файлами и никакой дополнительной логики настройки.(На самом деле это не мое требование, это компания, для всех приложений на основе сервлетов, но мне это нравится).

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

Итак, я смотрел на SQLiteJDBC, который утверждает, что имеет драйверы JDBC для «чистой Java» для 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?

Все ответы приветствуются !!!

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

Ответы [ 2 ]

3 голосов
/ 07 января 2012

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

2 голосов
/ 21 ноября 2010

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

...