diff --git a/README.md b/README.md index e98538c..2af6903 100755 --- a/README.md +++ b/README.md @@ -1,31 +1,31 @@ The snappy-java is a Java port of the snappy , a fast C++ compresser/decompresser developed by Google. -## Features +## Features * Fast compression/decompression around 200~400MB/sec. - * Less memory usage. SnappyOutputStream uses only 32KB+ in default. + * Less memory usage. SnappyOutputStream uses only 32KB+ in default. * JNI-based implementation to achieve comparable performance to the native C++ version. * Although snappy-java uses JNI, it can be used safely with multiple class loaders (e.g. Tomcat, etc.). * Compression/decompression of Java primitive arrays (`float[]`, `double[]`, `int[]`, `short[]`, `long[]`, etc.) - * Portable across various operating systems; Snappy-java contains native libraries built for Window/Mac/Linux (64-bit). snappy-java loads one of these libraries according to your machine environment (It looks system properties, `os.name` and `os.arch`). - * Simple usage. Add the snappy-java-(version).jar file to your classpath. Then call compression/decompression methods in `org.xerial.snappy.Snappy`. - * [Framing-format support](http://snappy.googlecode.com/svn/trunk/framing_format.txt) (Since 1.1.0 version) + * Portable across various operating systems; Snappy-java contains native libraries built for Window/Mac/Linux (64-bit). snappy-java loads one of these libraries according to your machine environment (It looks system properties, `os.name` and `os.arch`). + * Simple usage. Add the snappy-java-(version).jar file to your classpath. Then call compression/decompression methods in `org.xerial.snappy.Snappy`. + * [Framing-format support](https://github.com/google/snappy/blob/master/framing_format.txt) (Since 1.1.0 version) * OSGi support * [Apache License Version 2.0](http://www.apache.org/licenses/LICENSE-2.0). Free for both commercial and non-commercial use. -## Performance +## Performance * Snappy's main target is very high-speed compression/decompression with reasonable compression size. So the compression ratio of snappy-java is modest and about the same as `LZF` (ranging 20%-100% according to the dataset). * Here are some [benchmark results](https://github.com/ning/jvm-compressor-benchmark/wiki), comparing snappy-java and the other compressors - `LZO-java`/`LZF`/`QuickLZ`/`Gzip`/`Bzip2`. Thanks [Tatu Saloranta @cotowncoder](http://twitter.com/#!/cowtowncoder) for providing the benchmark suite. + `LZO-java`/`LZF`/`QuickLZ`/`Gzip`/`Bzip2`. Thanks [Tatu Saloranta @cotowncoder](http://twitter.com/#!/cowtowncoder) for providing the benchmark suite. * The benchmark result indicates snappy-java is the fastest compreesor/decompressor in Java: http://ning.github.com/jvm-compressor-benchmark/results/canterbury-roundtrip-2011-07-28/index.html * The decompression speed is twice as fast as the others: http://ning.github.com/jvm-compressor-benchmark/results/canterbury-uncompress-2011-07-28/index.html -## Download +## Download - * [Release Notes](Milestone.md) + * [Release Notes](Milestone.md) The current stable version is available from here: * Release version: http://central.maven.org/maven2/org/xerial/snappy/snappy-java/ @@ -51,7 +51,7 @@ libraryDependencies += "org.xerial.snappy" % "snappy-java" % "1.1.2" ``` -## Usage +## Usage First, import `org.xerial.snapy.Snappy` in your Java code: ```java @@ -65,15 +65,15 @@ String input = "Hello snappy-java! Snappy-java is a JNI-based wrapper of " + "Snappy, a fast compresser/decompresser."; byte[] compressed = Snappy.compress(input.getBytes("UTF-8")); byte[] uncompressed = Snappy.uncompress(compressed); - + String result = new String(uncompressed, "UTF-8"); System.out.println(result); ``` -In addition, high-level methods (`Snappy.compress(String)`, `Snappy.compress(float[] ..)` etc. ) and low-level ones (e.g. `Snappy.rawCompress(.. )`, `Snappy.rawUncompress(..)`, etc.), which minimize memory copies, can be used. +In addition, high-level methods (`Snappy.compress(String)`, `Snappy.compress(float[] ..)` etc. ) and low-level ones (e.g. `Snappy.rawCompress(.. )`, `Snappy.rawUncompress(..)`, etc.), which minimize memory copies, can be used. ### Stream-based API -Stream-based compressor/decompressor `SnappyOutputStream`/`SnappyInputStream` are also available for reading/writing large data sets. `SnappyFramedOutputStream`/`SnappyFramedInputStream` can be used for the [framing format](https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt). +Stream-based compressor/decompressor `SnappyOutputStream`/`SnappyInputStream` are also available for reading/writing large data sets. `SnappyFramedOutputStream`/`SnappyFramedInputStream` can be used for the [framing format](https://github.com/google/snappy/blob/master/framing_format.txt). * See also [Javadoc API](https://oss.sonatype.org/service/local/repositories/releases/archive/org/xerial/snappy/snappy-java/1.1.2/snappy-java-1.1.2-javadoc.jar/!/index.html) @@ -82,7 +82,7 @@ Stream-based compressor/decompressor `SnappyOutputStream`/`SnappyInputStream` ar | Write\Read | `Snappy.uncompress` | `SnappyInputStream` | `SnappyFramedInputStream` | | --------------- |:-------------------:|:------------------:|:-----------------------:| -| `Snappy.compress` | ok | ok | x | +| `Snappy.compress` | ok | ok | x | | `SnappyOutputStream` | x | ok | x | | `SnappyFramedOutputStream` | x | x | ok | @@ -90,7 +90,7 @@ Stream-based compressor/decompressor `SnappyOutputStream`/`SnappyInputStream` ar If you have snappy-java-(VERSION).jar in the current directory, use `-classpath` option as follows: $ javac -classpath ".;snappy-java-(VERSION).jar" Sample.java # in Windows - or + or $ javac -classpath ".:snappy-java-(VERSION).jar" Sample.java # in Mac or Linux @@ -102,15 +102,15 @@ Post bug reports or feature request to the Issue Tracker: