Heim >Java >javaLernprogramm >Wie kann ich Clojure-Funktionen effizient aus Java aufrufen?
Clojure aus Java aufrufen
Einführung:
Schnittstellen zwischen Clojure und Java sind weit verbreitet Anforderung in vielen Projekten. Allerdings sind ältere Ansätze mit clojure.lang.RT inzwischen veraltet. In diesem Beitrag erklären wir eine vereinfachte Methode zur Durchführung dieser Integration, vorausgesetzt, es handelt sich um ein vorgefertigtes Clojure-Glas und dessen Einbindung in den Klassenpfad.
Schritt-für-Schritt-Anleitung:
Erstellen Sie eine Clojure Namespace:
Definieren Sie einen Clojure-Namespace mit dem Schlüsselwort :gen-class, um eine Java-Klasse und Methoden anzugeben, auf die von Java aus zugegriffen werden kann. Zum Beispiel:
(ns com.domain.tiny (:gen-class :name com.domain.tiny :methods [#^{:static true} [binomial [int int] double]]))
Definieren Sie einen statischen Methoden-Wrapper:
Umschließen Sie die Clojure-Funktion, die Sie von Java aus aufrufen möchten, mit einem Java- Aufrufbarer Wrapper, dem ein Bindestrich vorangestellt ist (z. B. -binomial). Dadurch kann Java die Clojure-Funktion aufrufen.
Das Clojure-Jar erstellen und einbinden:
Den Clojure-Namespace in eine JAR-Datei kompilieren und einbinden es im Klassenpfad des Java-Projekts. Stellen Sie sicher, dass das Clojure-Glas auch im Klassenpfad vorhanden ist.
Clojure aus Java aufrufen:
Importieren Sie in Ihrem Java-Programm die Clojure-Klasse und rufen Sie die statischen Methoden auf, als wären sie Java-Methoden. Zum Beispiel:
import com.domain.tiny; public class Main { public static void main(String[] args) { System.out.println("(binomial 5 3): " + tiny.binomial(5, 3)); } }
Kompilierungsparameter festlegen:
Geben Sie beim Kompilieren des Java-Teils den Klassenpfad an, um das Clojure-JAR und -Paket einzuschließen die resultierende Klasse und Manifest in einer JAR-Datei.
Aktualisiert Beispiel (Verwendung moderner Tools):
Verwendung von Clojure 1.5.1, Leiningen 2.1.3 und JDK 1.7.0 Update 25:
Clojure-Teil:
Erstellen Sie ein Leiningen project und aktualisieren Sie project.clj mit Folgendem:
; Same as the original example code from the introduction
Java-Teil:
Kompilieren Sie Java Klasse:
javac -g -cp target\com.domain.tiny-0.1.0-SNAPSHOT.jar -d target\src\com\domain Main.java
Erstellen Sie eine Manifestdatei (Manifest.txt):
; Same as the original example code from the introduction
Verpacken Sie die Java-Klasse zusammen mit Clojure jars in eine JAR-Datei:
jar cfm Interop.jar Manifest.txt Main.class lib\com.domain.tiny-0.1.0-SNAPSHOT.jar lib\clojure-1.5.1.jar
Führen Sie Java aus Programm:
java -jar Interop.jar
Dieses aktualisierte Beispiel demonstriert die Interoperabilität zwischen Clojure und Java unter Verwendung moderner Tools.
Das obige ist der detaillierte Inhalt vonWie kann ich Clojure-Funktionen effizient aus Java aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!