Rövid útmutató a JVM nyelvekhez
1. Bemutatkozás
A Java mellett más nyelvek is futhatnak a Java virtuális gépen, például Scala, Kotlin, Groovy, Clojure.
A következő szakaszokban magas szintű pillantást vetünk a legnépszerűbb JVM nyelvekre.
Természetesen a JVM nyelvek - Java - elődjével kezdjük.
2. Java
2.1. Áttekintés
A Java egy általános célú programnyelv, amely magában foglalja az objektumorientált paradigmát.
A nyelv alapvető jellemzője a platformok közötti hordozhatóság, ami azt jelenti, hogy egy platformra írt programok futtathatóak a szoftver és a hardver bármely kombinációján, megfelelő futásidejű támogatással. Ez úgy érhető el, hogy először a kódot bytecode-ba fordítja, nem pedig közvetlenül a platform-specifikus gépi kódra.
A Java bájtkód utasításai analógak a gép kódjával, de azokat a Java virtuális gép (JVM) értelmezi, amely a gazdagép operációs rendszerére és a hardver kombinációjára jellemző.
Noha eredetileg objektum-orientált nyelv, a Java elkezdett más programozási paradigmákból, például a funkcionális programozásból származó fogalmakat átvenni.
Vessünk egy gyors pillantást a Java néhány főbb jellemzőjére:
- Objektum orientált
- Erősen statikusan gépelt
- Platformfüggetlen
- Szemétgyűjtés
- Többszálas
2.2. Példák
Lássuk, milyen egyszerű egy „Hello, Világ!” példa a következőképpen néz ki:
public class HelloWorld {public static void main (String [] args) {System.out.println ("Hello, Világ!"); }}
Ebben a példában létrehoztunk egy nevű osztályt Helló Világ és meghatározta a fő módszert, amely üzenetet nyomtat a konzolra.
Következő, használjuk a javac parancs a bájtkód előállításához amely végrehajtható egy JVM-en:
javac HelloWorld.java
Végül, a Jáva parancs végrehajtja a létrehozott bytecode-ot a JVM-en:
java HelloWorld
További Java példákért tekintse meg az oktatóanyagok listáját.
3. Scala
3.1. Áttekintés
A Scala jelentése „méretezhető nyelv”. A Scala egy statikusan tipizált nyelv, amely két fontos programozási paradigmát ötvöz, nevezetesen az objektum-orientált és a funkcionális programozást.
A nyelv 2004-ben keletkezett, de az utóbbi években egyre népszerűbb lett.
A Scala egy tiszta objektum-orientált nyelv nem támogatja a primitíveket. A Scala lehetővé teszi osztályok, objektumok, módszerek meghatározását a funkcionális programozási funkciókkal együtt, mint például tulajdonságok, algebrai adattípusok vagy típusosztályok.
A Scala néhány fontos jellemzője:
- Funkcionális, objektum-orientált
- Erősen statikusan gépelt
- Algebrai adattípusok
- Mintaillesztés
- Továbbfejlesztett változtathatósági támogatás
- Lusta számítás
- Többszálas
3.2. Példák
Először vessünk egy pillantást ugyanarra a „Hello, Világ!” példa, mint korábban, ezúttal Scalában:
objektum HelloWorld {def main (args: Array [String]): Unit = println ("Hello, world!")}
Ebben a példában létrehoztunk egy szingulett objektumot Helló Világ és a fő- módszer.
Ezt követően ennek összeállításához használhatjuk skalac:
scalac HelloWorld.scala
A scala parancs végrehajtja a létrehozott bytecode-ot a JVM-en:
scala HelloWorld
4. Kotlin
4.1. Áttekintés
A Kotlin egy statikusan tipizált, általános célú, nyílt forráskódú nyelv, amelyet a JetBrains csapata fejlesztett ki, amely összefogja az Objektumorientált és funkcionális paradigmákat.
A Kotlin fejlesztése során a fő hangsúly a Java interoperabilitására, a biztonságra (kivételkezelésre), tömörségre és a szerszámok jobb támogatására irányult.
Az Android Studio 3.0 megjelenése óta a Kotlin a Google által teljes mértékben támogatott programozási nyelv az Android platformon. Ez az Android Studio IDE csomagban is szerepel, a standard Java fordító alternatívájaként.
Néhány fontos Kotlin jellemző:
- Objektumorientált + Funkcionális
- Erősen statikusan gépelt
- Tömör
- Kompatibilis a Java-val
A Kotlin bemutatkozása további részleteket tartalmaz a funkciókról.
4.2. Példák
Lássuk a „Hello, Világ!” példa Kotlinban:
fun main (args: Array) {println ("Helló, világ!")}
A fenti kódot egy új fájlba írhatjuk helloWorld.kt.
Azután, használjuk a kotlinc parancsot ennek összeállításához és generál egy bájtkódot, amely végrehajtható egy JVM-en:
kotlinc helloWorld.kt -include-futásidejű -d helloWorld.jar
A -d opcióval jelzi a kimeneti fájlt osztály fájlok vagy a .befőttes üveg fájl név. A - futásidőt is tartalmaz opció teszi az eredményt .befőttes üveg a fájl önálló és futtatható a Kotlin futásidejű könyvtár beillesztésével.
Aztán a Jáva parancs végrehajtja a létrehozott bytecode-ot a JVM-en:
java -jar helloWorld.jar
Lássunk még egy példát az elemek listájának a a használatával történő kinyomtatására mert hurok:
fun main (args: Array) {val items = listOf (1, 2, 3, 4) for (i in items) println (i)}
5. Groovy
5.1. Áttekintés
Groovy egy objektumorientált, opcionálisan tipizált, dinamikus tartományspecifikus nyelv (DSL), a statikus gépelés és a statikus fordítás képességeinek támogatásával. Célja a fejlesztői termelékenység javítása, könnyen megtanulható szintaxissal.
A Groovy könnyen integrálható bármilyen Java programba és azonnal hozzáad olyan hatékony szolgáltatásokat, mint a szkriptelési képességek, a futásidejű és a fordítási idejű meta-programozás és a funkcionális programozási szolgáltatások.
Emeljünk ki néhány fontos tulajdonságot:
- Objektumorientált funkcionális funkciókkal, mint például magasabb rendű funkciók, curry, zárások
- Gépelés - dinamikus, statikus, erős, kacsa
- Tartományspecifikus nyelv
- Interoperabilitás a Java-val
- Termelékenység tömörséggel
- A kezelő túlterhelése
5.2. Példák
Először nézzük meg a "Hello, World!" példa a Groovy-ban:
println ("Hello world")
A fenti kódot egy új fájlba írtuk HelloWorld.groovy. Most kétféleképpen futtathatjuk ezt a kódot: fordítással, majd végrehajtással vagy csak lefordítatlan kód futtatásával.
Összeállíthatjuk a .groovy fájl segítségével groovyc parancsot az alábbiak szerint:
groovyc HelloWorld.groovy
Akkor használjuk a Jáva parancs a groovy kód végrehajtására:
java -cp \ embeddable \ groovy-all-.jar ;. Helló Világ
Például a fenti parancs a következőképpen nézhet ki:
java -cp C: \ utils \ groovy-1.8.1 \ embeddable \ groovy-all-1.8.1.jar ;. Helló Világ
Lássuk azt is, hogyan használhatjuk a groovy parancsot a .groovy fájl fordítás nélkül:
groovy HelloWorld.groovy
Végül, itt van egy másik példa az indexes elemek listájának kinyomtatására:
list = [1, 2, 3, 4, 5, 6, 7, 8, 9] list.eachWithIndex {it, i -> println "$ i: $ it"}
Vessen egy pillantást a Groovy további példáira bevezető cikkünkben.
6. Clojure
6.1. Áttekintés
Clojure egy általános célú funkcionális programozási nyelv. A nyelv a JVM-en, valamint a Microsoft Common Language Runtime-en fut. A Clojure még mindig lefordított nyelv, dinamikus marad, mivel a szolgáltatásait futás közben támogatják.
A Clojure tervezői modern Lisp-t akartak megtervezni, amely a JVM-en futtatható. Ezért is ismert a Lisp programozási nyelv dialektusaként. A Lisps-hez hasonlóan a Clojure is kódként kezeli a kódot, és rendelkezik makrórendszerrel is.
Néhány fontos Clojure funkció:
- Funkcionális
- Gépelés - Dinamikus, Erős, a közelmúltban kezdte el támogatni a fokozatos gépelést
- Párhuzamosságra tervezték
- Futásidejű polimorfizmus
6.2. Példák
A JVM többi nyelvétől eltérően nem egyszerű a „Hello, Világ!” Egyszerű létrehozása. program Clojure-ban.
A példánk futtatásához a Leiningen eszközt fogjuk használni.
Először létrehozunk egy egyszerű projektet alapértelmezett sablonnal a következő paranccsal:
lein új hello-world
A projekt a következő fájlstruktúrával készül:
./project.clj ./src ./src/hello-world ./src/hello-world/core.clj
Most frissítenünk kell a ./project.ctj fájl a következő tartalommal a fő forrás fájl beállításához:
(defproject hello-world "0.1.0-SNAPSHOT": main hello-world.core: dependencies [[org.klojure / clojure "1.5.1"]])
Most arra készülünk, hogy frissítsük kódunkat, hogy kinyomtassuk a „Hello, Világ!” ban,-ben ./src/hello-world/core.clj fájl:
(ns hello-world.core) (defn -main [& args] (println "Helló, világ!"))
Végül használjuk a lein parancs a fenti kód végrehajtására, miután áthelyezte a projekt gyökérkönyvtárába:
cd hello-world lein run
7. Egyéb JVM nyelvek
7.1. Jython
Jython a Python Java platform implementációja amely a JVM-en fut.
Ezt a nyelvet eredetileg arra tervezték, hogy lehetővé tegye a nagy teljesítményű alkalmazások írását az interaktivitás feláldozása nélkül. A Jython objektumorientált, többszálú, és a Java szemétgyűjtőjét használja a memória hatékony tisztításához.
A Jython tartalmazza a Python nyelv részét képező modulok nagy részét. Ezenkívül bármilyen osztályt importálhat és használhat a Java könyvtárakból.
Lássunk egy gyors „Hello, Világ!” példa:
print "Hello, világ!"
7.2. JRuby
A JRuby a Ruby programozási nyelv implementációja, amely a Java virtuális gépen futtatható.
A JRuby nyelv nagy teljesítményű és többszálú, a Java és a Ruby könyvtárak széles választékával rendelkezik. Ezenkívül ötvözi mindkét nyelv jellemzőit, például az objektum-orientált programozást és a kacsa-gépelést.
Nyomtassuk ki a „Hello, Világ!” a JRuby-ban:
"java" stringHello = "Hello World" igényel "# {stringHello.to_s}"
8. Következtetés
Ebben a cikkben számos népszerű JVM nyelvet tanulmányoztunk az alapvető kód példákkal együtt. Ezek a nyelvek különböző programozási paradigmákat valósítanak meg, például objektum-orientált, funkcionális, statikus és dinamikus gépelést.
Eddig azt mutatja, hogy még a JVM 1995-ig nyúlik vissza, még mindig rendkívül releváns és vonzó platform a mai programozási nyelvek számára.