Maison >Java >javaDidacticiel >Comment puis-je appeler efficacement des fonctions Clojure depuis Java ?
Appeler Clojure depuis Java
Introduction :
L'interface entre Clojure et Java est une opération courante exigence dans de nombreux projets. Cependant, les anciennes approches utilisant clojure.lang.RT sont désormais obsolètes. Dans cet article, nous expliquerons une méthode simplifiée pour effectuer cette intégration, en supposant un pot Clojure pré-construit et son inclusion dans le chemin de classe.
Instructions étape par étape :
Créer un espace de noms Clojure :
Définir un espace de noms Clojure avec le mot-clé :gen-class pour spécifier une classe Java et des méthodes accessibles depuis Java. Par exemple :
(ns com.domain.tiny (:gen-class :name com.domain.tiny :methods [#^{:static true} [binomial [int int] double]]))
Définissez un wrapper de méthode statique :
Enveloppez la fonction Clojure que vous souhaitez appeler depuis Java avec un Java- wrapper appelable, préfixé par un trait d'union (par exemple, -binomial). Cela permet à Java d'invoquer la fonction Clojure.
Construisez et incluez le pot Clojure :
Compilez l'espace de noms Clojure dans un fichier jar et incluez dans le chemin de classe du projet Java. Assurez-vous que le pot Clojure est également présent dans le chemin de classe.
Appelez Clojure depuis Java :
Dans votre programme Java, importez la classe Clojure et appelez les méthodes statiques comme s’il s’agissait de méthodes Java. Par exemple :
import com.domain.tiny; public class Main { public static void main(String[] args) { System.out.println("(binomial 5 3): " + tiny.binomial(5, 3)); } }
Définir les paramètres de compilation :
Lors de la compilation de la partie Java, spécifiez le chemin de classe pour inclure le pot et le package Clojure la classe résultante et se manifeste dans un JAR fichier.
Exemple mis à jour (à l'aide d'outils modernes) :
Utilisation de Clojure 1.5.1, Leiningen 2.1.3 et JDK 1.7.0 Mise à jour 25 :
Clojure Partie :
Créez un projet Leiningen et mettez à jour project.clj avec ce qui suit :
; Same as the original example code from the introduction
Partie Java :
Compiler la classe Java :
javac -g -cp target\com.domain.tiny-0.1.0-SNAPSHOT.jar -d target\src\com\domain Main.java
Créez un fichier manifeste (Manifest.txt) :
; Same as the original example code from the introduction
Emballez la classe Java avec les pots Clojure dans un fichier JAR :
jar cfm Interop.jar Manifest.txt Main.class lib\com.domain.tiny-0.1.0-SNAPSHOT.jar lib\clojure-1.5.1.jar
Exécutez Java programme :
java -jar Interop.jar
Cet exemple mis à jour démontre l'interopérabilité entre Clojure et Java à l'aide d'outils contemporains.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!