Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Memanggil Fungsi Clojure dengan Cekap dari Java?

Bagaimanakah Saya Boleh Memanggil Fungsi Clojure dengan Cekap dari Java?

Barbara Streisand
Barbara Streisandasal
2024-12-02 10:43:09577semak imbas

How Can I Efficiently Call Clojure Functions from Java?

Memanggil Clojure dari Java

Pengenalan:

Antaramuka antara Clojure dan Java adalah perkara biasa keperluan dalam banyak projek. Walau bagaimanapun, pendekatan lama menggunakan clojure.lang.RT kini sudah lapuk. Dalam siaran ini, kami akan menerangkan kaedah yang dipermudahkan untuk melaksanakan penyepaduan ini, dengan mengandaikan balang Clojure yang telah dibina dan kemasukannya dalam laluan kelas.

Arahan Langkah demi Langkah:

  1. Buat Clojure Ruang nama:

    Tentukan ruang nama Clojure dengan kata kunci :gen-class untuk menentukan kelas Java dan kaedah yang boleh diakses dari Java. Contohnya:

    (ns com.domain.tiny
      (:gen-class
        :name com.domain.tiny
        :methods [#^{:static true} [binomial [int int] double]]))
  2. Tentukan Pembungkus Kaedah Statik:

    Balutkan fungsi Clojure yang anda ingin panggil dari Java dengan Java- pembalut boleh panggil, diawali dengan tanda sempang (cth., -binomial). Ini membolehkan Java menggunakan fungsi Clojure.

  3. Bina dan Sertakan Balang Clojure:

    Kompilkan ruang nama Clojure ke fail balang dan masukkan ia dalam laluan kelas projek Java. Pastikan balang Clojure turut terdapat dalam laluan kelas.

  4. Panggil Clojure dari Java:

    Dalam program Java anda, import kelas Clojure dan panggil kaedah statik seolah-olah kaedah Java. Contohnya:

    import com.domain.tiny;
    
    public class Main {
        public static void main(String[] args) {
            System.out.println("(binomial 5 3): " + tiny.binomial(5, 3));
        }
    }
  5. Tetapkan Parameter Kompilasi:

    Apabila menyusun bahagian Java, nyatakan laluan kelas untuk memasukkan balang dan pakej Clojure kelas yang terhasil dan nyata ke dalam JAR fail.

Contoh Kemas Kini (Menggunakan Alat Moden):

Menggunakan Clojure 1.5.1, Leiningen 2.1.3 dan JDK 1.7.0 Kemas kini 25:

Clojure Bahagian:

  • Buat projek Leiningen dan kemas kini projek.clj dengan yang berikut:

    ; Same as the original example code from the introduction
  • Pastikan kebergantungan diselesaikan menggunakan lein deps.
  • Bungkus kod Clojure ke dalam balang menggunakan lein balang.
  • Letakkan balang Clojure dan balang Clojure yang dibina di lokasi yang sesuai.

Bahagian Java:

  • Buat kelas Java (cth., Main.java) seperti dalam asal contoh.
  • Kompilasi kelas Java:

    javac -g -cp target\com.domain.tiny-0.1.0-SNAPSHOT.jar -d target\src\com\domain Main.java
  • Buat fail manifes (Manifest.txt):

    ; Same as the original example code from the introduction
  • Bungkus kelas Java bersama balang Clojure ke dalam JAR fail:

    jar cfm Interop.jar Manifest.txt Main.class lib\com.domain.tiny-0.1.0-SNAPSHOT.jar lib\clojure-1.5.1.jar
  • Jalankan program Java:

    java -jar Interop.jar

Contoh yang dikemas kini ini menunjukkan kebolehoperasian antara Clojure dan Java menggunakan alatan kontemporari .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanggil Fungsi Clojure dengan Cekap dari Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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