Isolate native boundaries and understand the trade-offs of JNI/JNA when JVM libraries are not enough.
Most Clojure systems get performance by using great JVM libraries, not by calling native code. But sometimes you need an existing C library, a specialized codec, or access to OS primitives not exposed cleanly on the JVM.
This section teaches the practical mindset: treat native interop as a boundary you isolate, measure the real overhead (marshalling, copying, latency), and keep failures contained.
If you have JNI/JNA experience from Java, the mechanics will feel familiar—the main difference is designing the boundary so the rest of your Clojure code stays simple and testable.