|
Project Information
Featured
Downloads
Links
|
The snappy-java is a Java port of the snappy, a fast compresser/decompresser written in C++, originally developed by Google. Features
Performance
DownloadThe current stable version 1.0.4.1 is available from Download page.
If you are a Maven user, see #Using_with_Maven UsageFirst, import org.xerial.snapy.Snappy in your Java code: import org.xerial.snappy.Snappy; Then use Snappy.compress(byte[]) and Snappy.uncompress(byte[]): 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. See also Snappy API Stream-based APIStream-based compressor/decompressor SnappyOutputStream, SnappyInputStream are also available for reading/writing large data sets.
Setting classpathIf 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 $ javac -classpath ".:snappy-java-(VERSION).jar" Sample.java # in Mac or Linux Using with Maven
Add the following dependency to your pom.xml: <dependency> <groupId>org.xerial.snappy</groupId> <artifactId>snappy-java</artifactId> <version>(version)</version> <type>jar</type> <scope>compile</scope> </dependency> Public discussion groupPost bug reports or feature request to the Issue Tracker: http://code.google.com/p/snappy-java/issues/list Public discussion forum is here: Xerial Public Discussion Group. Building from the source codeSee the installation instruction. Building from the source code is an option when your OS platform and CPU architecture is not supported. To build snappy-java, you need Mercurial(hg), JDK (1.6 or higher), Maven (3.x or higher is required), g++ compiler (mingw in Windows) etc. $ hg clone https://snappy-java.googlecode.com/hg/ snappy-java $ cd snappy-java $ make A file target/snappy-java-$(version).jar is the product additionally containing the native library built for your platform. Miscellaneous NotesUsing snappy-java with Tomcat 6 (or higher) Web ServerSimply put the snappy-java's jar to WEB-INF/lib folder of your web application. Usual JNI-library specific problem no longer exists since snappy-java version 1.0.3 or higher can be loaded by multiple class loaders in the same JVM by using native code injection to the parent class loader ( Issue 21 ). Snappy-java is developed by Taro L. Saito. Twitter @taroleo |