Rumah > Java > javaTutorial > Bagaimana untuk Memanggil Fungsi Clojure dengan Cekap dari Java Menggunakan Teknik Moden?

Bagaimana untuk Memanggil Fungsi Clojure dengan Cekap dari Java Menggunakan Teknik Moden?

Mary-Kate Olsen
Lepaskan: 2024-12-20 07:57:09
asal
259 orang telah melayarinya

How to Efficiently Call Clojure Functions from Java Using Modern Techniques?

Memanggil Clojure dari Java dengan Alat Moden

Walaupun sesetengah maklumat yang diberikan dalam perbincangan dalam talian sebelum ini mungkin sudah lapuk, panggilan Clojure dari Java masih agak mudah. Berikut ialah panduan langkah demi langkah:

Penyediaan Balang Clojure:

  1. Buat projek Clojure menggunakan Leiningen: lein new com.domain.tiny
  2. Tentukan fungsi Clojure anda dalam src/com/domain/tiny.clj:

    (ns com.domain.tiny)
    
    (defn binomial
      "Calculate the binomial coefficient."
      [n k]
      (let [a (inc n)]
     (loop [b 1
            c 1]
       (if (> b k)
         c
         (recur (inc b) (* (/ (- a b) b) c))))))
    
    (defn -binomial
      "A Java-callable wrapper around the 'binomial' function."
      [n k]
      (binomial n k))
    
    (defn -main []
      (println (str "(binomial 5 3): " (binomial 5 3)))
      (println (str "(binomial 10042, 111): " (binomial 10042 111))))
    Salin selepas log masuk
  3. Janakan balang menggunakan tugas Leiningen: lein jar
  4. Salin balang Clojure dan tiny.jar yang anda hasilkan ke dalam lokasi yang selesa

Jawa Kod:

  1. Buat kelas Java yang memanggil fungsi Clojure:

    import java.lang.reflect.Method;
    
    import com.domain.tiny;
    
    public class Main {
    
     public static void main(String[] args) {
         try {
             Method binomialMethod = Class.forName("com.domain.tiny").getMethod("binomial", int.class, int.class);
    
             Integer n = 5;
             Integer k = 3;
             Double result = (Double) binomialMethod.invoke(null, n, k);
             System.out.println("(binomial " + n + " " + k + "): " + result);
    
             n = 10042;
             k = 111;
             result = (Double) binomialMethod.invoke(null, n, k);
             System.out.println("(binomial " + n + ", " + k + "): " + result);
         } catch (Exception e) {
             System.err.println("Error calling Clojure function: " + e.getMessage());
             e.printStackTrace();
         }
     }
    }
    Salin selepas log masuk
  2. Kompilasi kelas Java menggunakan javac
  3. Buat fail manifes (MANIFEST.MF) dengan yang sesuai kebergantungan:

    Manifest-Version: 1.0
    Class-Path: tiny.jar:clojure-x.y.z.jar
    Main-Class: Main
    Salin selepas log masuk
  4. Pakej kelas Java dan kebergantungan ke dalam balang: jar cfm Interop.jar MANIFEST.MF Main.class tiny.jar clojure-x.y.z.jar

Jalankan Program:

  1. Pastikan balang Clojure dan tiny.jar anda berada di laluan kelas
  2. Jalankan balang Java: java -jar Interop.jar

Output hendaklah serupa dengan:

(binomial 5 3): 10.0
(binomial 10042, 111): 4.9068389575068143E263
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memanggil Fungsi Clojure dengan Cekap dari Java Menggunakan Teknik Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan