Maison > Java > javaDidacticiel > Comment puis-je appeler efficacement des fonctions Clojure depuis Java ?

Comment puis-je appeler efficacement des fonctions Clojure depuis Java ?

Barbara Streisand
Libérer: 2024-12-02 10:43:09
original
664 Les gens l'ont consulté

How Can I Efficiently Call Clojure Functions from 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 :

  1. 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]]))
    Copier après la connexion
  2. 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.

  3. 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.

  4. 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));
        }
    }
    Copier après la connexion
  5. 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
    Copier après la connexion
    Copier après la connexion
  • Assurez-vous que les dépendances sont résolues à l'aide de lein deps.
  • Emballez le code Clojure dans un pot en utilisant lein pot.
  • Placez le pot Clojure et le pot Clojure construit dans un emplacement pratique.

Partie Java :

  • Créer une classe Java (par exemple, Main.java) comme dans l'exemple original.
  • Compiler la classe Java :

    javac -g -cp target\com.domain.tiny-0.1.0-SNAPSHOT.jar -d target\src\com\domain Main.java
    Copier après la connexion
  • Créez un fichier manifeste (Manifest.txt) :

    ; Same as the original example code from the introduction
    Copier après la connexion
    Copier après la connexion
  • 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
    Copier après la connexion
  • Exécutez Java programme :

    java -jar Interop.jar
    Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal