Clojureは、JVM (Java仮想マシン)上で動き、型システム、ガーベッジ・コレクション、スレッドなどを利用する言語として設計された。関数はすべてJVMバイトコードにコンパイルされる。ClojureはJavaのライブラリを利用するのに適しており、Javaのピリオド連結表記をそのまま利用できる。クラス名の全体を書いて呼び出すことが可能だが、インポート後には短縮名も使える。Clojureでは、プロクシーを用いることで、Javaクラスとインターフェースを動的実装することができる。
Swingの小さなアプリの例:
(import '(javax.swing JFrame JLabel JTextField JButton) '(java.awt.event ActionListener) '(java.awt GridLayout)) (defn celsius [] (let [frame (JFrame. "Celsius Converter") temp-text (JTextField.) celsius-label (JLabel. "Celsius") convert-button (JButton. "Convert") fahrenheit-label (JLabel. "Fahrenheit")] (.addActionListener convert-button (proxy [ActionListener] [] (actionPerformed [evt] (let [c (Double/parseDouble (.getText temp-text))] (.setText fahrenheit-label (str (+ 32 (* 1.8 c)) " Fahrenheit")))))) (doto frame (.setLayout (GridLayout. 2 2 3 3)) (.add temp-text) (.add celsius-label) (.add convert-button) (.add fahrenheit-label) (.setSize 300 80) (.setVisible true)))) (celsius)