Az új sziget

Az új sziget

January 7, 2019

Az informatikában is lezajlott egy orosz forradalom. Igaz, a Kotlin 2011-es megjelenésekor még senki nem számított arra, hogy a szentpétervári srácok új programozási nyelvét néhány évvel később a Google is felkarolja majd.

Kezdetben a gépek nehézkes nyelvén kellett programokat „fogalmazni”. Ezek csak egy adott hardvertípuson futottak, emberek számára nehezen volt érthető a sok apró lépésből álló kódjuk, így akkoriban könnyű volt hibázni programozás közben, a meglévő programok módosítása pedig elég sok rizikót hordozott magában.

Az ötvenes években aztán megjelentek az első magas szintű programozási nyelvek (Fortran, Lisp, Algol), melyek egyrészt eltávolodtak a hardvertől és közelebb hozták a programkódot az angol nyelvhez, másrészt absztrakcióik révén világosabban, érthetőbben, átláthatóbban lehetett a program logikáját megfogalmazni. A magas szintű nyelvekben írt programokat már különböző hardverek alacsony szintű nyelvére (gépi kódjára) is lehetett fordítani.

A hetvenes évek elején aztán megjelent a C, majd egy évtizeddel később a C++. Hamarosan ezek lettek a legnépszerűbb nyelvek.

A C-t Dennis Ritchie dolgozta ki, és ebben írta újra a Unix operációs rendszert. Az objektum orientált C++-t Bjarne Stroustrupnak köszönhetjük. Az objektum orientáltság (OOP) azt jelenti, hogy a valóságban létező dolgok, folyamatok, események egy adott alkalmazás számára releváns tulajdonságait és belső logikáját írjuk le az erre alkalmas nyelv „osztályaiban”. Az alkalmazás futása során pedig ezen osztályok példányai, az objektumok, kölcsönhatásba lépnek egymással, meglehetősen természetesen modellezve a valóság egy szeletének működését.

A C és C++ kód ugyanúgy különböző hardverekre és operációs rendszerekre fordítható volt és ezáltal futtatható is volt ezeken, de a fordításhoz mindig elő kellett venni a forráskódot, és sok esetben hozzá kellett igazítani a megcélzott futtatókörnyezethez.

Újabb évtized telt el, és a Sun Microsystems készített egy új nyelvet és egy réteget a nyelv és a hardver plusz operációs rendszer alkotta alap közé.

Ez az új köztes réteg lett a Java Virtual Machine (JVM), mely lehetővé tette, hogy bármilyen környezetben írt és fordított programot módosítás és újrafordítás nélkül bármilyen más környezetben futtathassunk. Az új, JVM-re forduló objektum orientált nyelv neve pedig Java lett.

A Sun leporolt egy régi ötletet, és új köntösben beépítette a JVM-be: ez a garbage collection, azaz „szemétgyűjtés”.

Mindez a következőt jelenti: a programok adatokkal dolgoznak, melyek számára memória darabokat foglalnak le. Használat után ezeket minden esetben fel kell szabadítanunk, ellenkező esetben egy idő után elfogy a szabad memória, és egy hibaüzenettel elszáll az alkalmazás. A már nem használt memóriadarabok felszabadítását azonban sok esetben elfelejtette a fejlesztő, így elég sűrűn jelentkező probléma volt a „memóriaszivárgás”. Egy szakma lélegzett így hát fel, amikor a Sun a JVM-mel elhozta az automatikus memória felszabadítást, azaz a garbage collection-t.

Ugyanakkor a Java egy jelentősen leegyszerűsített C++ benyomását keltette. Pillanatok alatt a világ legnépszerűbb programozási nyelvévé vált. Óriásira nőtt a Java ökoszisztéma, már szinte mindenre kínált kész megoldást.

De bármennyire is képesnek tűnt rá, a Java nem tudott minden létező platformot meghódítani. Leginkább csak a vállalati szerverek külvilágtól alaposan elzárt, és erőforrásokban (CPU, memória) gazdag világában lett népszerű, a böngésző biztonság tekintetében kényes terepét nem tudta meghódítani. Közben kifejlődtek globális rendszerek – Amazon, Google, Facebook – melyek annak ellenére, hogy rengeteg számítási kapacitást tudhattak magukénak, mégsem tudták volna Java alapokon nyugvó szoftverekkel kiszolgálni a világot. Az informatika utolsó nagyobb hullámaiban pedig megérkeztek az egyre okosabb telefonok, és jön az IoT – a dolgok internete. Ezek jellemzően nem nagy erőforrásokkal rendelkező eszközök, tehát ez a terep is inkább a gépi kódra forduló nyelvek számára lejtett kedvezően.

Szóval a Java fölött lassan eljárt az idő.

A 2010-es év derekán a szoftverfejlesztő eszközöket készítő JetBrains csapata megoldást keresett erre a helyzetre, saját Java alapú fejlesztéssel kapcsolatos nehézségeik orvoslására. Először más létező nyelveket vizsgáltak meg, de egyiket sem találták maradéktalanul kielégítőnek. A szentpéterváriak egy pragmatikus, egyértelmű, tömör kódot produkáló, banális programozási hibáktól megóvó nyelvet akartak. Összeszedték, mi mindent kell tudnia, elkezdték a fejlesztését, s az máig tart. Ez lett a Kotlin, amely mára a meglévő Java kóddal együtt fut a JVM-ben, de fut böngészőkben, és nemsokára kis beágyazott hardvereken is.

A világ csak lassan figyelt fel rá, de a szellem 2017 nyarán kiszabadult a palackból, amikor a Google bejelentette: Androidon a Java mellett 2017-től a Kotlin is támogatott nyelv lesz. Ez tehát annyit jelent, hogy a világ legnagyobb mobil platformján az új nyelv villámtempóban terjed majd. Az Internet of Things korában emellett képesek leszünk a Kotlin kódot pici beágyazott hardvereken is futtatni, sőt, a nyelv a böngészőt is szeretné meghódítani.

Miért jó mindez az ügyfeleknek?

Jelenleg egy „full stack” (frontend, backend, mobil) fejlesztőnek több nyelvet kell ismernie. Ez általában azt jelenti, hogy egyiket ismeri igazán. A Kotlinnal nemsokára minden rétegben (frontend, backend, mobil) gyorsabban és biztonságosabban lehet majd programozni. Ha pedig már adott egy Java-s projekt, nem kell az egészet egyben Kotlinra átírni, azt részenként is meg lehet tenni, illetve gond nélkül lehet új, Kotlinban íródott részeket hozzáilleszteni. A karbantarthatóság is egyszerűsödik: ha a fejlesztő létező kódot vesz át, azt könnyebben tudja értelmezni, biztonságosabban tudja módosítani, bővíteni.

Összességében úgy gondolom: gyorsabbá, biztonságosabbá válik a Kotlin alapú fejlesztés, a korábbinál hatékonyabban karbantarthatók és továbbfejleszthetők lesznek a Kotlin alapú rendszerek.

Ügyfeleink csak jól járhatnak vele.

Németh Laci
Cikket írta
Németh Laci
Szoftverfejlesztő Mérnök
Olvasási idő:
6 min read
Programozás
Megosztás