VCDIFF バイナリ差分形式 (デコーダーとエンコーダー) のオープンソース Java 実装はありますか?
xdeltaとopen-vcdiffがありますが、どちらも C ライブラリです。
または、Java からバイナリ ファイルの差分を生成するために使用できる他の形式/アルゴリズムはありますか?
VCDIFF バイナリ差分形式 (デコーダーとエンコーダー) のオープンソース Java 実装はありますか?
xdeltaとopen-vcdiffがありますが、どちらも C ライブラリです。
または、Java からバイナリ ファイルの差分を生成するために使用できる他の形式/アルゴリズムはありますか?
バイナリ diff は、badiff を使用して生成できます。ウェブサイトは
Maven Central で利用できます。BSD ライセンスなので、OSS と商用の両方に適しています。使用されるアルゴリズムは、このペーパーで説明されている O(ND) diff のチャンク バージョンです。
http://www.xmailserver.org/diff2.pdf
diff 形式は他の形式と特に互換性があるわけではありませんが、非常に優れた、非常に小さい diff が生成されます。
ライブラリはかなり高速です。私のデスクトップ マシンでは、54 秒で 2 つのランダムな 50MB 入力ストリームの差分を生成できます。うまくいけば、それは十分に速いです。これは、それぞれ 5,000 万トークンの 2 つのトークン ストリームの比較であるため、かなり印象的だと思います。diff を計算するとき、badiff は複数の CPU コアを利用します。
免責事項:私はbadiffの作者なので、もちろんかっこいいと思います。私はいつでも提案を受け付けています。「標準」のバイナリ diff 形式を読み書きできるなどの機能は、今後のリリースで追加されるクールな新機能のように思えます。
MiscUtil の vcdiff デコーダーを Java に移植しました。 https://github.com/xiaxiaocao/jvcdiff 更新: vcdiff エンコーダーも追加されました
私はC# で書かれた VCDIFF 用のデコーダーを持っています。これはMiscUtilの一部ですが、MiscUtilの他のビットに依存しているとは思いません(とにかく、最小限にすぎません)。
残念ながら、私はエンコーダーの作成に取り掛かることはありませんでした。これは明らかにかなり難しく、私たちの場合は必要ありませんでした (モバイル デバイス上の .NET にパッチを適用する必要がありましたが、サーバーで必要に応じてそれらを作成できました)。 .
Githubに open-vcdiffのJava ポートがあります。open-vcdiff に対してテストされていますが、本番環境では使用されていません。
xdelta の Java ポートがあります: http://sourceforge.net/projects/javaxdelta/
しかし、その品質については何も言えません。まだ試していません。