Panduan Pantas untuk Bahasa JVM

1. Pengenalan

Selain Java, bahasa lain dapat berjalan di Java Virtual Machine seperti Scala, Kotlin, Groovy, Clojure.

Pada bahagian berikut, kita akan melihat bahasa JVM yang paling popular.

Sudah tentu, kita akan mulakan dengan pendahulu bahasa JVM - Java.

2. Jawa

2.1. Gambaran keseluruhan

Java adalah bahasa pengaturcaraan tujuan umum yang merangkumi Paradigma Berorientasikan Objek.

Ciri utama bahasa adalah portabiliti lintas platform , yang bermaksud bahawa program yang ditulis pada satu platform dapat dilaksanakan pada kombinasi perisian dan perkakasan apa pun dengan sokongan jangka masa yang mencukupi. Ini dicapai dengan menyusun kod menjadi kod bytec terlebih dahulu, bukannya terus ke kod mesin khusus platform.

Arahan bytecode Java serupa dengan kod mesin, tetapi ditafsirkan oleh Java Virtual Machine (JVM) khusus untuk sistem operasi host dan kombinasi perkakasan.

Walaupun pada asalnya bahasa berorientasi objek, Java telah mulai mengadopsi konsep dari paradigma pengaturcaraan lain seperti pengaturcaraan fungsional.

Mari kita lihat beberapa ciri utama Java:

  • Berorientasikan objek
  • Ditaip dengan kuat secara statik
  • Bebas platform
  • Kutipan sampah
  • Multithreaded

2.2. Contoh

Mari lihat bagaimana "Hello, World!" contoh kelihatan seperti:

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }

Dalam contoh ini, kami telah membuat kelas bernama HelloWorld dan menentukan kaedah utama yang mencetak mesej di konsol.

Seterusnya, kami akan menggunakan perintah javac untuk menghasilkan bytecode yang dapat dijalankan pada JVM:

javac HelloWorld.java

Akhir sekali, yang java arahan melaksanakan bytecode yang dihasilkan pada JVM:

java HelloWorld

Untuk lebih banyak contoh Java, lihat senarai tutorial kami.

3. Scala

3.1. Gambaran keseluruhan

Scala bermaksud "bahasa berskala". Scala adalah bahasa yang ditaip secara statik yang menggabungkan dua paradigma pengaturcaraan penting, iaitu pengaturcaraan berorientasikan objek dan berfungsi.

Bahasa ini berasal pada tahun 2004 tetapi menjadi lebih popular dalam beberapa tahun kebelakangan.

Scala adalah bahasa Berorientasikan Objek murni kerana tidak menyokong primitif . Scala menyediakan kemampuan untuk menentukan kelas, objek, kaedah bersama dengan fungsi pengaturcaraan fungsional seperti sifat, jenis data algebra, atau kelas jenis.

Beberapa ciri penting Scala adalah:

  • Berfungsi, Berorientasikan Objek
  • Ditaip dengan kuat secara statik
  • Jenis Data Algebra
  • Padankan Corak
  • Sokongan Ketidaktentuan yang dipertingkatkan
  • Pengiraan Malas
  • Multithreaded

3.2. Contoh

Pertama, mari kita lihat "Hello, World!" Yang sama contoh seperti sebelumnya, kali ini di Scala:

object HelloWorld { def main(args: Array[String]): Unit = println("Hello, world!") }

Dalam contoh ini, kami telah membuat objek tunggal bernama HelloWorld dan kaedah utama .

Seterusnya, untuk menyusunnya, kita dapat menggunakan scalac :

scalac HelloWorld.scala

The scala arahan melaksanakan bytecode yang dihasilkan pada JVM:

scala HelloWorld

4. Kotlin

4.1. Gambaran keseluruhan

Kotlin adalah bahasa sumber terbuka yang ditaip secara statik, tujuan umum, yang dikembangkan oleh pasukan JetBrains , yang menyatukan paradigma berorientasi Objek dan berfungsi.

Fokus utama semasa mengembangkan Kotlin adalah interoperabilitas Java, keselamatan (pengendalian pengecualian), ringkas dan sokongan perkakas yang lebih baik.

Sejak dilancarkan Android Studio 3.0, Kotlin adalah bahasa pengaturcaraan yang disokong sepenuhnya oleh Google di Platform Android. Ini juga termasuk dalam pakej IDE Android Studio sebagai alternatif untuk penyusun Java standard.

Beberapa ciri Kotlin yang penting:

  • Berorientasikan objek + Berfungsi
  • Ditaip dengan kuat secara statik
  • Ringkas
  • Boleh beroperasi dengan Java

Pengenalan kami ke Kotlin juga mengandungi lebih banyak spesifik mengenai ciri-ciri tersebut.

4.2. Contoh

Mari lihat "Hello, World!" contoh di Kotlin:

fun main(args: Array) { println("Hello, World!") }

Kita boleh menulis kod di atas dalam fail baru yang dipanggil helloWorld.kt.

Kemudian, kami akan menggunakan perintah kotlinc untuk menyusunnya dan menghasilkan bytecode yang dapat dijalankan pada JVM:

kotlinc helloWorld.kt -include-runtime -d helloWorld.jar

Pilihan -d digunakan untuk menunjukkan fail output untuk fail kelas atau nama fail .jar . Pilihan -include-runtime menjadikan fail .jar yang dihasilkan dapat dilengkapkan sendiri dan dapat dijalankan dengan memasukkan perpustakaan runtime Kotlin di dalamnya.

Kemudian, arahan java melaksanakan bytecode yang dihasilkan di JVM:

java -jar helloWorld.jar

Mari kita lihat juga contoh mencetak senarai item menggunakan gelung untuk :

fun main(args: Array) { val items = listOf(1, 2, 3, 4) for (i in items) println(i) }

5. Groovy

5.1. Gambaran keseluruhan

Groovy adalah bahasa khusus domain dinamik (DSL) yang berorientasikan objek, ditaip secara opsional , dengan sokongan untuk keupayaan menaip statik dan penyusun statik. Ini bertujuan untuk meningkatkan produktiviti pembangun, dengan sintaks yang mudah dipelajari.

Groovy berintegrasi dengan mudah dengan mana-mana program Java dan segera menambahkan ciri-ciri hebat, seperti kemampuan skrip, run-time dan kompilasi-meta-program dan ciri-ciri pengaturcaraan fungsional.

Mari serlahkan beberapa ciri penting:

  • Berorientasikan objek dengan ciri-ciri fungsi seperti fungsi pesanan tinggi, karipap, penutup
  • Menaip - Dinamik, Statik, Kuat, Itik
  • Bahasa Khusus Domain
  • Kerentanan dengan Java
  • Produktiviti dengan ringkas
  • Pengendalian berlebihan

5.2. Contoh

Pertama, mari kita lihat "Hello, World!" contoh di Groovy:

println("Hello world")

Kami menulis kod di atas dalam fail baru bernama HelloWorld.groovy . Sekarang kita boleh menjalankan kod ini dengan dua cara: dengan menyusun kemudian melaksanakan atau dengan hanya menjalankan kod yang tidak dikompilasi.

Kita boleh menyusun fail .groovy menggunakan arahan groovyc seperti berikut:

groovyc HelloWorld.groovy

Kemudian, kami akan menggunakan arahan java untuk melaksanakan kod groovy:

java -cp \embeddable\groovy-all-.jar;. HelloWorld

Contohnya, arahan di atas boleh kelihatan seperti:

java -cp C:\utils\groovy-1.8.1\embeddable\groovy-all-1.8.1.jar;. HelloWorld

Mari kita lihat juga bagaimana kita dapat menggunakan perintah groovy untuk melaksanakan fail .groovy tanpa menyusun:

groovy HelloWorld.groovy

Akhirnya, inilah satu lagi contoh mencetak senarai item dengan indeks:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9] list.eachWithIndex { it, i -> println "$i: $it"}

Lihat lebih banyak contoh Groovy dalam artikel pengenalan kami.

6. Clojure

6.1. Gambaran keseluruhan

Clojure adalah bahasa pengaturcaraan fungsi umum. Bahasa itu berjalan di JVM dan juga Runtime Bahasa Umum Microsoft. Clojure adalah bahasa yang dikumpulkan, ia tetap dinamik, kerana ciri-cirinya disokong pada waktu runtime.

Pereka Clojure ingin merancang Lisp moden yang boleh berjalan di JVM. Itulah sebabnya ia juga dikenali sebagai dialek bahasa pengaturcaraan Lisp. Mirip dengan Lisps, Clojure memperlakukan kod sebagai data dan juga mempunyai sistem makro.

Beberapa ciri Clojure yang penting:

  • Berfungsi
  • Menaip - Dinamik, Kuat, baru-baru ini mula menyokong menaip secara berperingkat
  • Direka untuk serentak
  • Polimorfisme jangka masa

6.2. Contoh

Tidak seperti bahasa JVM lain, tidak mudah untuk membuat "Hello, World!" Yang mudah program di Clojure.

Kami akan menggunakan alat Leiningen untuk menjalankan contoh kami.

Pertama, kami akan membuat projek mudah dengan templat lalai menggunakan arahan berikut:

lein new hello-world

Projek ini akan dibuat dengan struktur fail berikut:

./project.clj ./src ./src/hello-world ./src/hello-world/core.clj

Sekarang kita perlu mengemas kini fail ./project.ctj dengan kandungan berikut untuk menetapkan fail sumber utama:

(defproject hello-world "0.1.0-SNAPSHOT" :main hello-world.core :dependencies [[org.clojure/clojure "1.5.1"]])

Sekarang kita akan memperbaharui kod kita untuk mencetak "Hello, World!" dalam ./src/hello-world/core. fail clj:

(ns hello-world.core) (defn -main [& args] (println "Hello, World!"))

Akhirnya, kami akan menggunakan perintah lein untuk melaksanakan kod di atas, setelah berpindah ke direktori root projek:

cd hello-world lein run

7. Bahasa JVM lain

7.1. Jython

Jython adalah implementasi platform Java Python yang berjalan di JVM.

Bahasa ini pada mulanya dirancang untuk membolehkan menulis aplikasi berprestasi tinggi tanpa mengorbankan interaktiviti. Jython berorientasi objek, berulir banyak dan menggunakan pengumpul sampah Java untuk membersihkan memori dengan cekap.

Jython merangkumi sebahagian besar modul yang merupakan sebahagian daripada bahasa Python. Ia juga dapat mengimport dan menggunakan kelas apa pun dari perpustakaan Java.

Mari lihat "Hello, World!" contoh:

print "Hello, world!"

7.2. JRuby

JRuby adalah pelaksanaan bahasa pengaturcaraan Ruby untuk dijalankan di Java Virtual Machine.

Bahasa JRuby berprestasi tinggi dan multi-utas, dengan pelbagai jenis perpustakaan yang tersedia dari Java dan Ruby. Ia juga menggabungkan ciri dari kedua-dua bahasa seperti pengaturcaraan berorientasi objek dan menaip bebek.

Mari cetak "Hello, World!" di JRuby:

require "java" stringHello= "Hello World" puts "#{stringHello.to_s}"

8. Kesimpulannya

Dalam artikel ini, kami telah mempelajari banyak bahasa JVM yang popular bersama dengan contoh kod asas. Bahasa-bahasa ini menerapkan pelbagai paradigma pengaturcaraan seperti berorientasikan objek, menaip fungsional, statik, menaip dinamik.

Sejauh ini menunjukkan bahawa walaupun dengan JVM sejak tahun 1995, ia masih berfungsi sebagai platform yang sangat relevan dan menarik untuk bahasa pengaturcaraan moden.