Adam Retter
adam@evolvedbinary.com
RocksDB Meetup
@ Meta, Bellevue
2026-09-30
@adamretter
RocksJava
Past, Present, and Future

Evolved Binary and RocksDB
-
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
Releasing
RocksJava
RocksJava Releases (1/2)
-
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
-
-
RocksJava Releases (2/2)
-
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
-
Current RocksJava
Release Process
Overview
( < v10.5.1 )

Current
RocksJava
Release
Process
( < 10.5.1 )

Problems with Current Release Process
-
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
-
New Release Process
-
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
-
New RocksJava
Release Process
Overview
( >= 10.5.1 )

New
RocksJava
Release
Process
( >= 10.5.1 )

Modernising
RocksJava
Java - Foreign Function and Memory API
-
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)
-
JNI vs FFM Benchmarks (Get - Small Values)
Intel
Xeon
Linux

JNI vs FFM Benchmarks (Get - Large Values)
Intel
Xeon
Linux

JNI vs FFM Benchmarks (Get - Small Values)
Apple
M3

JNI vs FFM Benchmarks (Get - Large Values)
Apple
M3

JNI vs FFM Benchmarks
-
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
How to move from JNI to FFM?
-
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)
-
Thanks
(Questions in the Break please)
RocksJava - Past, Present and Future
By Adam Retter
RocksJava - Past, Present and Future
RocksDB Meetup @ Meta, Bellevue 2026-09-30
- 21