今後のJavaサーブレットアプリケーションに埋め込まれたデータベースを決定しています。私は2つの最終的な候補になります:SQLiteJDBC「純粋なJava」ドライバーを備えたSQLiteとJava DB(別名Derby)。
私のキラー基準は次のとおりです。アプリケーションは、JavaをサポートするすべてのOSで実行する必要があります。具体的には、アプリケーションを実行する必要があるSolaris、CentOS、Windows x86、およびWindowsx64ホストがあります。また、インストールには、warファイルをターゲットサーバーのデプロイメントフォルダーにコピーし、サーバーに残りの作業を任せるだけで済みます(これは、zipをターゲットサーバーにコピーしてから、サーバーに解凍してアプリを実行させるだけです)。インストールの一部としてネイティブバイナリをいじくり回したり、追加のセットアップロジックを使用したりしないでください。(これは実際には私の要件ではありません。すべてのサーブレットベースのアプリについては会社の要件ですが、私はそれが好きです)。
Derby(Java DB)が上記の基準を満たしていることを知っています。私はそれを1、2回やりました。しかし、私はSQLiteの単一ファイルアーキテクチャと、SQLiteコミュニティがDerbyの約20倍の大きさであるという事実が本当に好きです。また、オラクルがダービーを殺すのではないかと心配しています。ダービーには5つの競合するデータベース製品のようなものがあり、それは永遠に続くことはできないからです。ハウスキーピングが始まると、おそらくダービーが最初の犠牲者になるでしょう。
そこで、SQLite用の「純粋なJava」JDBCドライバーを備えていると主張するSQLiteJDBCを見ていました。ここで、「純粋なJava」とは、OSの依存関係や追加のライブラリがなく、任意のOSの任意のJVMでドライバーを実行できることを意味すると理解します。そこで、純粋なJavaドライバーを使用してjarファイルを取得します。そして、好奇心旺盛なソートなので、私はその中を見ます。次に、次のように、ルートに「.lib」拡張子の付いた4つのファイルが含まれていることに気付きます。
linux-amd64.lib
linux-x86.lib
mac-universal.lib
win-x86.lib
さて、それで、どうしたの?これらは、指定されたOSのネイティブライブラリのようなものですか?もしそうなら、この純粋なJavaドライバーは、jarに適切なlibファイルがあるプラットフォームでのみ実行されると想定できますか?その場合、winX64とSolarisがここで最も重要な2つのOSであるため、残念ながらSQLiteを競合他社のリストから除外する必要があります。
あるいは、私が誤解していて、純粋なJavaドライバーが本当に純粋なJavaであり、どのJVMでも実行できるのでしょうか。
すべての回答を歓迎します!!!
よろしくお願いします、ジョン