Java から Clojure を呼び出す
はじめに:
Clojure と Java 間のインターフェースは一般的です多くのプロジェクトで必要とされています。ただし、clojure.lang.RT を使用した古いアプローチは現在では時代遅れです。この投稿では、事前に構築された Clojure jar とそれがクラスパスに含まれていることを前提として、この統合を実行するための簡略化された方法について説明します。
ステップバイステップの説明:
Clojure を作成する名前空間:
:gen-class キーワードを使用して Clojure 名前空間を定義し、Java からアクセスできる Java クラスとメソッドを指定します。例:
(ns com.domain.tiny (:gen-class :name com.domain.tiny :methods [#^{:static true} [binomial [int int] double]]))
静的メソッド ラッパーを定義します:
Java から呼び出したい Clojure 関数を Java-先頭にハイフンを付けた呼び出し可能なラッパー (-binomial など)。これにより、Java で Clojure 関数を呼び出すことができます。
Clojure Jar をビルドしてインクルードします。
Clojure 名前空間を jar ファイルにコンパイルし、インクルードします。 Java プロジェクトのクラスパス内にあります。 Clojure jar がクラスパスにも存在することを確認します。
Java から Clojure を呼び出す:
Java プログラムで、Clojure クラスをインポートします。静的メソッドを Java メソッドであるかのように呼び出します。例:
import com.domain.tiny; public class Main { public static void main(String[] args) { System.out.println("(binomial 5 3): " + tiny.binomial(5, 3)); } }
コンパイル パラメーターの設定:
Java 部分をコンパイルするときに、Clojure jar とパッケージを含めるクラスパスを指定します。結果として得られるクラスとマニフェストを JAR に変換するfile.
更新された例 (最新ツールの使用):
Clojure 1.5.1、Leiningen 2.1.3、および JDK 1.7.0 の使用アップデート25:
Clojure パート:
Leiningen プロジェクトを作成し、次の内容で project.clj を更新します:
; Same as the original example code from the introduction
ジャワパート:
Java クラスをコンパイルします:
javac -g -cp target\com.domain.tiny-0.1.0-SNAPSHOT.jar -d target\src\com\domain Main.java
マニフェスト ファイルを作成する(Manifest.txt):
; Same as the original example code from the introduction
Java クラスと Clojure jar を JAR ファイルにパッケージ化します:
jar cfm Interop.jar Manifest.txt Main.class lib\com.domain.tiny-0.1.0-SNAPSHOT.jar lib\clojure-1.5.1.jar
Javaを実行するプログラム:
java -jar Interop.jar
この更新された例は、最新のツールを使用した Clojure と Java 間の相互運用性を示します。
以上がJava から Clojure 関数を効率的に呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。