jvmtp — Java bytecode → C++/JNI transpiler

jvmtp pulls selected methods out of a JAR, rewrites them as C++ that follows HotSpot's zero-interpreter semantics, and links the result into a JNI shared library. The output JAR still runs on a stock JVM. Only the methods you picked become native, and an injected NativeLoader loads them at startup.

It is built on ASM and a bundled Zig toolchain, so one host can cross-compile to every supported platform without any SDKs installed. It also sits in front of bytecode obfuscators (ZKM and the like) and native protectors such as VMP or Themida.

version  1.1.0
output   fat JAR + per-platform JARs (.so / .dll / .dylib)
Features
Method-level transpilation
Pick what becomes native by annotation simple-name (any annotation works, no API jar required), plus optional path-glob include/exclude filters. The default direction is exclude, so everything gets transpiled except what you mark.
JNI shared library output
Output is a fat JAR plus one JAR per target triple, each containing a standard JNI library (.so / .dll / .dylib). The injected NativeLoader picks the matching binary at runtime.
JVM-accurate semantics
Lowering follows HotSpot's own zero-interpreter and JIT internals. Integer overflow, NaN propagation, exception ordering and stack effects match the JVM specification.
Built-in intrinsics
Calls into Math, StrictMath, Integer, Long, Float, Double, Unsafe, and others are replaced with direct native equivalents instead of a JNI round-trip.
Custom intrinsics
Map any owner | name | desc to a C++ function in one of your headers. Options for JNIEnv*, exception checking, return casts, and skipping the receiver argument.
Constructor extraction
<init> and <clinit> bodies are split into synthetic methods that can be transpiled. Synthetic names follow a configurable scheme (hash, alphabetic, random, …).
Multi-target cross-compilation
Zig is bundled and downloaded automatically on first run. One config.conf can produce libraries for every supported triple from any host, with no Xcode, MSVC, or NDK required.
Native obfuscation
Constant, Invoke and Flow obfuscation utilizing opaque predicates, mba, hashing and many more obfuscation techniques, powered by a modified multi-platform version of Cloakwork
Supported platforms
triple os / environment status
x86_64-linuxLinux (glibc)stable
x86_64-windowsWindows 10+stable
aarch64-macosmacOS (Apple Silicon)stable
aarch64-windowsWindows on ARMstable
aarch64-linuxLinuxexperimental
x86_64-macosmacOS (Intel)experimental

Triples are configured via target.platforms in config.conf. You can cross-compile from any host without extra SDKs, since Zig brings its own linker and headers.

Documentation
License

jvmtp is a commercial product, licensed per update on a perpetual basis. Each release you buy is yours to keep and use forever, and every later update is a separate one-time purchase. There is no subscription, no recurring fee, and no license server. Evaluation samples and education / research licenses are available on request; the license page has the details and a way to get in touch.