diff --git a/README.md b/README.md index c105f12..bcaa00e 100644 --- a/README.md +++ b/README.md @@ -3,4 +3,16 @@ _(ametlik nimi uurimustööl?)_ ## Uurimustöö programmi jooksutamine -`git clone https://git.wut.ee/mikroskeem/java-class-compression-research` ja `mvn`. Java 8 on vajalik. \ No newline at end of file +`git clone https://git.wut.ee/mikroskeem/java-class-compression-research` ja `mvn`. Java 8 on vajalik. + +## Testitud algoritmid +- BZip2 +- GZip +- LZ4 (fast ja HC) +- LZMA +- XZ +- Zip + +## Mittetuntud testitud algoritmid +- [Brotli](https://github.com/google/brotli) +- [Zstandard](https://github.com/facebook/zstd) \ No newline at end of file diff --git a/pom.xml b/pom.xml index 9019dd8..f81ebf9 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,11 @@ true + + bintray-nitram509-jbrotli + bintray + http://dl.bintray.com/nitram509/jbrotli + @@ -102,5 +107,19 @@ lz4 1.3.0 + + + + org.meteogroup.jbrotli + jbrotli + 0.5.0 + + + + + com.github.luben + zstd-jni + 1.1.4 + diff --git a/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Brotli.java b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Brotli.java new file mode 100644 index 0000000..c9378aa --- /dev/null +++ b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Brotli.java @@ -0,0 +1,31 @@ +package eu.mikroskeem.uurimustoo.algoritmidetest.algoritmid; + +import lombok.Getter; +import org.meteogroup.jbrotli.BrotliStreamCompressor; +import org.meteogroup.jbrotli.BrotliStreamDeCompressor; +import org.meteogroup.jbrotli.libloader.BrotliLibraryLoader; + +/** + * @author Mark Vainomaa + */ +public class Brotli extends AbstractAlgorithm { + @Getter private final String name = "Brotli"; + + static { + BrotliLibraryLoader.loadBrotli(); + } + + @Override + public byte[] compress(byte[] input) { + BrotliStreamCompressor compressor = new BrotliStreamCompressor(); + return compressor.compressArray(input, true); + } + + @Override + public byte[] decompress(byte[] input) { + BrotliStreamDeCompressor decompressor = new BrotliStreamDeCompressor(); + byte[] buf = new byte[8192]; // *sigh* + decompressor.deCompress(input, buf); + return buf; + } +} diff --git a/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Zstandard.java b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Zstandard.java new file mode 100644 index 0000000..b6a2c4f --- /dev/null +++ b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Zstandard.java @@ -0,0 +1,26 @@ +package eu.mikroskeem.uurimustoo.algoritmidetest.algoritmid; + +import com.github.luben.zstd.ZstdInputStream; +import com.github.luben.zstd.ZstdOutputStream; +import lombok.Getter; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * @author Mark Vainomaa + */ +public class Zstandard extends AbstractAlgorithm { + @Getter private final String name = "Zstandard"; + + @Override + public OutputStream createCompressor(OutputStream outputStream) throws IOException { + return new ZstdOutputStream(outputStream); + } + + @Override + public InputStream createDecompressor(InputStream inputStream) throws IOException { + return new ZstdInputStream(inputStream); + } +}