Clojure - Antarmuka Java
Seperti yang telah kita ketahui, kode Clojure berjalan di lingkungan virtual Java pada akhirnya. Jadi, masuk akal jika Clojure mampu memanfaatkan semua fungsi dari Java. Pada bab ini, mari kita bahas korelasi antara Clojure dan Java.
Memanggil Metode Java
Metode Java bisa dipanggil dengan menggunakan notasi titik. Contohnya adalah string. Karena semua string di Clojure adalah string Java, Anda dapat memanggil metode Java normal pada string.
Contoh bagaimana ini dilakukan ditunjukkan pada program berikut.
Contoh
(ns Project
(:gen-class))
(defn Example []
(println (.toUpperCase "Hello World")))
(Example)
Program di atas menghasilkan keluaran sebagai berikut. Anda dapat melihat dari kode bahwa jika Anda hanya memanggil notasi titik untuk metode string apa pun, itu juga akan berfungsi di Clojure.
Keluaran
HELLO WORLD
Memanggil Metode Java dengan Parameter
Anda juga dapat memanggil metode Java dengan parameter. Contoh bagaimana ini dilakukan ditunjukkan pada program berikut.
Contoh
(ns Project
(:gen-class))
(defn Example []
(println (.indexOf "Hello World","e")))
(Example)
Program di atas menghasilkan keluaran sebagai berikut. Anda dapat melihat dari kode di atas, bahwa kita mengirimkan parameter "e" ke metode indexOf. Program di atas menghasilkan keluaran sebagai berikut.
Keluaran
1
Membuat Objek Java
Objek dapat dibuat di Clojure dengan menggunakan kata kunci 'baru' yang mirip dengan apa yang dilakukan di Java.
Contoh bagaimana ini dilakukan ditunjukkan pada program berikut.
Contoh
(ns Project
(:gen-class))
(defn Example []
(def str1 (new String "Hello"))
(println str1))
(Example)
Program di atas menghasilkan keluaran sebagai berikut. Anda dapat melihat dari kode di atas, bahwa kita dapat menggunakan kata kunci 'baru' untuk membuat objek baru dari kelas String yang ada dari Java. Kita bisa meneruskan nilai saat membuat objek, seperti yang kita lakukan di Java. Program di atas menghasilkan keluaran sebagai berikut.
Keluaran
Hello
Berikut adalah contoh lain yang menunjukkan bagaimana kita bisa membuat objek kelas Integer dan menggunakannya dalam perintah Clojure normal.
Contoh
(ns Project
(:gen-class))
(defn Example []
(def my-int(new Integer 1))
(println (+ 2 my-int)))
(Example)
Program di atas menghasilkan keluaran sebagai berikut.
Keluaran
3
Impor Perintah
Kita juga dapat menggunakan perintah import untuk memasukkan pustaka Java ke dalam namespace sehingga kelas dan metode dapat diakses dengan mudah.
Contoh berikut menunjukkan bagaimana kita dapat menggunakan perintah import. Dalam contoh ini kami menggunakan perintah import untuk mengimpor kelas darijava.util.stackPerpustakaan. Kami kemudian dapat menggunakan metode push dan pop dari kelas stack sebagaimana adanya.
Contoh
(ns Project
(:gen-class))
(import java.util.Stack)
(defn Example []
(let [stack (Stack.)]
(.push stack "First Element")
(.push stack "Second Element")
(println (first stack))))
(Example)
Program di atas menghasilkan keluaran sebagai berikut.
Keluaran
First Element
Menjalankan Kode Menggunakan Perintah Java
Kode Clojure dapat dijalankan dengan menggunakan perintah Java. Berikut adalah sintaks bagaimana ini bisa dilakukan.
java -jar clojure-1.2.0.jar -i main.clj
Anda harus menyebutkan file jar Clojure, sehingga semua kelas berbasis Clojure akan dimuat di JVM. File 'main.clj' adalah file kode Clojure yang perlu dijalankan.
Fungsi Bawaan Java
Clojure dapat menggunakan banyak fungsi bawaan Java. Beberapa dari mereka adalah -
Math PI function- Clojure dapat menggunakan metode Matematika untuk nilai PI. Berikut adalah contoh kode.
Contoh
(ns Project
(:gen-class))
(defn Example []
(println (. Math PI)))
(Example)
Kode di atas menghasilkan keluaran sebagai berikut.
Keluaran
3.141592653589793
System Properties- Clojure juga dapat menanyakan properti sistem. Berikut adalah contoh kode.
Contoh
(ns Project
(:gen-class))
(defn Example []
(println (.. System getProperties (get "java.version"))))
(Example)
Bergantung pada versi Java di sistem, nilai yang sesuai akan ditampilkan. Berikut adalah contoh keluarannya.
Keluaran
1.8.0_45