Brotli4j
Brotli4j provides Brotli compression and decompression for Java.
Maven
<dependency>
    <groupId>com.aayushatharva.brotli4j</groupId>
    <artifactId>brotli4j</artifactId>
    <version>1.3.0</version>
</dependency>
 
Supported Platforms:
Windows 64-Bit 
 Linux 64-Bit 
 macOS Catalina 10.15
Loading native library:
Call Brotli4jLoader.ensureAvailability() in your application once before using Brotli4j.
Examples
Direct API
        // Load the native library
        Brotli4jLoader.ensureAvailability();
        // Compress data and get output in byte array
        byte[] compressed = Encoder.compress("Meow".getBytes());
        // Decompress data and get output in DirectDecompress
        DirectDecompress directDecompress = Decoder.decompress(compressed); // or DirectDecompress.decompress(compressed);
        if (directDecompress.getResultStatus() == DecoderJNI.Status.DONE) {
            System.out.println("Decompression Successful: " + new String(directDecompress.getDecompressedData()));
        } else {
            System.out.println("Some Error Occurred While Decompressing");
        } 
Compressing a stream:
        // Load the native library
        Brotli4jLoader.ensureAvailability();
        FileInputStream inFile = new FileInputStream(filePath);
        FileOutputStream outFile = new FileOutputStream(filePath + ".br");
        Encoder.Parameters params = new Encoder.Parameters().setQuality(4);
        
        BrotliOutputStream brotliOutputStream = new BrotliOutputStream(outFile, params);
        int read = inFile.read();
        while(read > -1) {
            brotliOutputStream.write(read);
            read = inFile.read();
        }
        // Close the BrotliOutputStream. This also closes the FileOutputStream.
        brotliOutputStream.close();
        inFile.close(); 
Decompressing a stream:
        // Load the native library
        Brotli4jLoader.ensureAvailability();
        FileInputStream inFile = new FileInputStream(filePath);
        FileOutputStream outFile = new FileOutputStream(decodedfilePath);
        BrotliInputStream brotliInputStream = new BrotliInputStream(inFile);
        int read = brotliInputStream.read();
        while(read > -1) {
            outFile.write(read);
            read = brotliInputStream.read();
        }
        // Close the BrotliInputStream. This also closes the FileInputStream.
        brotliInputStream.close();
        outFile.close(); 
Sponsors
JProfiler is supporting Brotli4J with its full-featured Java Profiler. JProfiler's intuitive UI helps you resolve performance bottlenecks, pin down memory leaks and understand threading issues. Click below to know more: