RocksDB Meetup
@ Meta, Bellevue
2026-09-30
Evolved Binary
UK - Software, Consultancy, Training, and R&D
Contributors to RocksJava for > 10 Years
RocksJava (Java, C++, and JNI / FFM)
Ensure Feature Parity with C++ API
Performance Improvements
Docker Images - Build Environments - AlmaLinux 8 / Alpine 3.20
Build and Release RockJava binaries (146 releases since 2016)
Helped Porting RocksDB
Windows / macOS / z/OS / PPC / Arm64 / RISC-V
GitHub issues, and general bug-fixing
Intentionally Conservative!
Java 8 (2014)
Targets 15 platforms:
Linux
i386 / amd64 / ppc64le / aarch64 / s390x / RISC-V
GNU libc 2.28 (2018)
musl Libc 1.2.5 (2024)
Windows (Windows 10+ / Windows Server 2016+)
amd64
vcruntime140.dll and UCRT
macOS (Mojave 10.14 +)
amd64
aarch64
Upcoming targets:
Windows aarch64
AIX PPC64
z/OS
FreeBSD amd64
OpenBSD amd64
Cloud Hardware Donations (Thank You!):
Evolved Binary - RISC-V, macOS, Windows, Linux amd64/i386, FreeBSD, OpenBSD
Oregon State University - Open Source Labs - ppc64le Linux, ppc64 AIX
Huawei - aarch64 Linux
Marist University - s390x Linux
IBM - z/OS
RISC-V - 10xEngineers
Driven from macOS
We can't emulate/virtualize macOS
Can no longer build Linux i386 binaries under macOS (on Apple Silicon)
RocksJava upgrade to C++ 20 was challenging
We want to target older GNU/MUSL libc, or Windows, or macOS
Need C++ 20 compiler that supports older platform
Thank you SCL for CentOS!
Maven Central changed its publication process
Now hard to publish without Apache Maven
Can be run on any OS
Native Binaries are still built on specific hardware platforms
Modernised tool chain
AlmaLinux8 / Apline 3.20
gcc13
Only the C++ code is built wth Make or CMake
Java code is now built with Maven
Greatly reduced the build config
Easy to publish to Maven Central - central-publishing-maven-plugin
RocksJava is currently built using JNI (Java Native Interface)
Java FFM (Foreign Function and Memory API)
Modern replacement for JNI
Previewed in Java 18 (Mar. 2022)
Stabilised in Java 22 (Mar. 2024)
Performance improved in Java 24 (Mar. 2025)
Advantages
Less/No binding code (delete JNI C++ code)
Performance?
Disadvantages
Need to improve RocksDB C API (Advantage?)
Requires dependent projects to upgrade their Java (>= RocksJava)
Java JNI and FFM Benchmarks (JMH)
https://github.com/evolvedbinary/jni-benchmarks
RocksDB Blog - Java API Performance Enhancements
https://rocksdb.org/blog/2023/11/06/java-jni-benchmarks.html
RocksDB Blog - Java Foreign Function Interface
https://rocksdb.org/blog/2024/02/20/foreign-function-interface.html
RocksDB is widely used as infrastructure:
e.g. Many Apache projects use RocksJava
Java Binaries are Forwards Compatible - Not Backwards Compatible
RocksJava's use of Java 8 (and older glibc, etc.) ensures wide compatibility
Parallel Approach - Maintain Java compatibility in medium-term
Improve the RocksDB C API (Feature Partity, etc.)
Develop FFM (Java 25+) in Parallel to JNI (Java 8+)
Deprecate JNI
Grow FFM Adoption
Remove JNI (eventually)