7

今後の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でも実行できるのでしょうか。

すべての回答を歓迎します!!!

よろしくお願いします、ジョン

4

2 に答える 2

3

http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC-純粋なJava実装を提供しますが、提供されている.libファイルを可能な限り高速で使用します。

于 2012-01-07T13:55:45.457 に答える
2

私が正しく理解していれば、SQLiteJDBC自体はタイプ4 JDBCドライバーですが、SQLiteは依然としてCベースのソリューションであり、SQL * Net for Oracleのようなネットワーク統合/プロトコルレイヤーがないため、ホストオペレーティングプラットフォームへのネイティブバイナリ統合が必要です。私の知る限りでは。SQLiteJDBCホームページには、GCCでサポートされている任意の言語の「NestedVM」実装が記載されているため、GCCランタイム環境があればどこにでもクロスプラットフォームをデプロイできるようです。ただし、Solarisについては言及されていません。

于 2010-11-21T15:19:09.920 に答える