Java binary diff utility
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


README file for JBDiff (Java Binary Diff) 
Version: 0.1.1
Release date: 1 Oct 2007

JBDiff (Java Binary Diff) utility is a Java translation of the bsdiff (v4.2) utility 
by Colin Percival. See

The file format is similar to, but currently not compatible with the bsdiff utility. 
This is because bsdiff uses bzip2 for compression which is not available in the 
standard Java libraries. Instead I use gzip (*)

The diff utility is very memory hungry. Attempting to diff very large files with 
insufficient RAM may cause your computer to 'trash' (ie become unusably slow and may
require a reset to recover). Comparing two 20MB files will take approx 80 seconds 
on a 2GHz Pentium 4 and will require a maximum heap size of at least 220 MBytes. The
maximum heap size can be specified using the -Xmx switch to the Java VM (see examples
below). The patch utility has more modest resource requirements.


To compare old.bin with new.bin and produce diff file new-old.diff:

java -Xmx200m -classpath jbdiff.jar ie.wombat.jbdiff.JBDiff old.bin new.bin new-old.diff

To patch old.bin with new-old.diff to produce new.bin:

java -Xmx200m -classpath jbdiff.jar ie.wombat.jbdiff.JBPatch old.bin new.bin new-old.diff


This first release is a rather blind port of the bsdiff utility. A vast bulk of
the code ported to Java without any modification. There is scope 
for optimization (the C bsdiff runs in approx 50% faster than JBDiff).

Also it would be nice to be able to produce output that is compatible with bsdiff.
I need a bzip2 library for that.

Any suggestions, feedback and bugs will be much appreciated. Please email


Now available under BSD license (previously GPL).


Change of license from GPL v2 to BSD license.

Joe Desbonnet
1 Oct 2007