Browse Clojure Foundations for Java Developers

Interoperability with Java

Call Java libraries from Clojure and design a clean, testable boundary between worlds.

Clojure is not “Java with different syntax,” but it is also not a foreign runtime. It is a JVM language that can use the entire Java ecosystem when it makes sense.

This chapter shows how to call Java code, create objects, implement interfaces, and work with common Java types. More importantly, it teaches boundary design: keep interop localized so most of your code stays idiomatic Clojure and easy to test.

For Java engineers, think of this as building adapters: treat Java APIs as an edge you integrate with, not the center of your Clojure program.

In this section

Revised on Friday, April 24, 2026