Amarengo

Articles and news

Kotlin vs. Scala (vs. Java)

Kotlin érkezése és érettsége óta a JVM-alapú nyelvek meglehetősen nagy kihívással néznek szembe, különösen a Scala. Bizonyára már sokat hallottál Kotlinról, különösen a Java asztalra hozott juttatásokról és kezelésekről. De aztán ott van a Scala, egy erőteljes és tömör Java alternatíva. Scala kontra Kotlin? Melyik a jobb? Vagy talán Kotlin vs. Java vagy Java vs. Scala?

A Scala és a Kotlin célja, hogy a Java-t saját különböző módon fejlesszék.

azoknak, akik a Java-ról a Kotlinra vagy a Scala-ra kívánnak váltani (nem tudom elképzelni fordítva), festeni fogok egy “mi van” forgatókönyvet, hogy jobban eldönthesse magát.

nézzük először Kotlint.

Kotlin

Kotlin által kifejlesztett JetBrains és elérte a piacon Február. 2012 nyílt forráskódú nyelv. Eddig Kotlinnek két kiadott verziója volt, a Kotlin 1.2 a legstabilabb verzió, novemberben jelent meg. 28, 2017.

A nyelv népszerűsége nőtt az Androidon, mivel tökéletesen kompatibilis a Java 6-mal, amely elsősorban a Java jelenlegi verziója az Androidon. Nem csak, hogy a Kotlin olyan funkciókat kínál, amelyek csak a Java 8-ban vannak, így nem érhetők el az Android fejlesztők számára a Java 6-on.

az ‘All that is good about Kotlin’ – val teli szekrényben Kotlin két legkiemelkedőbb tulajdonsága a Java-val való zökkenőmentes és hibátlan interoperabilitás. Hívhat Java kódot Kotlinból és fordítva, csuklás vagy homlokát ráncolva, nem is beszélve a beépített null biztonsági funkcióról. Nem látja a NullPointerException minden Android programozó álma.

Android app fejlesztés teljesen átalakul egy boldog, nem NPE tapasztalat. Ha szeretne néhány részletet, hogy hogyan működik a null biztonsági, nézd meg itt.

ez is az egyik oka annak, hogy a Google hivatalosan támogatott nyelvként alkalmazza a Kotlint az Androidon.

ezen kívül vessen egy pillantást a Kotlin által kínált erősségekre.

erősségek

funkcionális programozási megközelítés + OOP Stílus

minden Java versenytársnak FP nyelvnek kell lennie. Kotlin hiányzik egy kicsit a magasabb rendű típusok és típusbiztonság, de ennek ellenére kínál minden jellemzője egy OOP stílusú nyelv egy FP megközelítés.

magasabb rendű funkciók

A magasabb rendű funkciók kényelme Kotlinben nagyon jól megőrzött. Abban az esetben, ha nem tudja, a magasabb rendű függvények olyan függvények, amelyek egy függvényt argumentumként és visszatérési típusként vesznek fel. A zár funkció az egyik legklasszikusabb magasabb rendű funkciópélda:

fun <T> lock(lock: Lock, body: () - > T): T { lock.lock() try { return body() } finally { lock.unlock() }}

tömör, tiszta és bőbeszédű szabad véleménynyilvánítás

ez a kedvenc részem. A Java nagyszerű, de a boilerplate kód, amit írsz, csak frusztráló és hibára hajlamos. A Kotlin kódolása nagyon rövid, tömör és lényegre törő. Végezze el a munkát kevesebb kódsorral, mint a Java-ban. Minél kevesebbet kell írni, annál ritkábban hibázik, és kiteszi magát a hibáknak. Ezt mindenki tudja, igaz?

A Kotlin egyik módja a kód mennyiségének csökkentése a findViewById használatának korlátozásával.

A Kotlin lehetővé teszi a nézetek elérését az elrendezés XML-ből, akárcsak a tulajdonságokat. A findViewById használata helyett minden alkalommal csak ezt a példát kell követnie.

Képzeld el, hogy van egy szöveges nézet definiálva az XML elrendezés, mint így:

<TextView android:id="@+id/welcomeMessage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Hello World!"/>

ahhoz, hogy hozzáférjen hozzá, csak annyit kell tennie, hogy a fő tevékenységéhez megy, és írjon:

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) welcomeMessage.text = "Hello Kotlin!"}

támogatja a JetBrains és a Google

bár a Kotlin fiatalabb nyelv, mint a Scala, két nagy cég támogatja: a félelmetes Google és a csodálatos JetBrains, akik sok más ideért felelősek, beleértve az IntelliJ IDE for Androidot is. Tehát nincs kétség a nagy szerszámozási támogatásról. Azoknak az embereknek, akik Kotlint valamiféle trendnek gondolták, nem is tévedhetnél jobban.

Kotlin már Androidon van, és határozottan itt van, hogy maradjon, növekedjen és fejlődjön.

gyengeségek

de az erővel együtt jár némi gyengeség is.

gyengébb mintaillesztés

a mintaillesztés Kotlinban nem erős. Nem támogatja teljes mértékben.

ha akart csinálni a dolgokat, mint…

person match { case Person("bobby", age) => case _ =>}

…ez nem lenne. De ez nem rosszalló. Még mindig elég finom mintaillesztési munkát végezhet a when záradék intelligens használatával. De mindannyian tudjuk, hogy az intelligencia egy kicsit több erőfeszítést és képességet igényel, mint az átlagos Joe.

Extra futásidejű méret

ha az alkalmazások már hosszúak, akkor a 800 KB extra futásidejű méret problémát jelenthet az Ön számára. Előfordulhat, hogy csökken a Letöltések száma az alkalmazás nagyobb mérete miatt.

a kód kezdeti olvashatósága

soha semmi sem jó. A Kotlin által kínált tömör megközelítéssel van egy kis probléma. Mivel oly sok minden történik ilyen kis kódban, eleinte kissé nehéz lesz olvasni és megérteni. Lehet, hogy még egy kezdőnek is elsöprőnek érzi magát.

hivatalos támogatás hiánya

bár a Google összefogott a JetBrains-szel, hogy támogatást nyújtson Kotlin számára, kulcsfontosságú tudni, hogy a Google nem támogatja. Még akkor is, ha Kotlin-t használ az Android-ban, az automatikus javítás lassabb, mint a Java esetében.

kisebb támogató közösség

mint már említettem, Kotlin fiatalabb, mint a Scala és mondanom sem kell, a Java.

mivel Kotlin fiatalabb, mint a Scala, kevesebb könyvtárat, blogbejegyzést és oktatóanyagot tartalmaz.

az online támogató közösség meglehetősen kicsi. A blogbejegyzések, oktatóanyagok és felhasználói dokumentáció hiánya problémát jelenthet az Ön számára, de a trendek szerint ez hamarosan feltöltődhet, amint egyre több ember és vállalat alkalmazza a Kotlint.

mielőtt döntenél, ugorjunk át a Scalába.

Scala

A Scala 2004-ben jelent meg a nagyközönség előtt. A Martin Odersky által kifejlesztett Scala általános célú programozási nyelvként jelent meg a Java platformon. A Scala név nem valami szeszélyes fogalom, hanem a “skálázható” rövidítése: olyan nyelv, amely a felhasználók igényei szerint skálázható.

A 2004-es megjelenés biztos előnyt jelentett a Scala számára, hogy idővel többet ér, és a Kotlin reflektorfényét veszi át.

a Scalának van néhány közös vonása Kotlinnel, mint a kód tömörsége, a magasabb rendű függvények, az OOP stílusú FP funkcionalitás és az interoperabilitás a Java-val (bár nem olyan jó, mint Kotlin). Más, mint, hogy itt van, amit Scala szól.

erősségek

teljes mértékben támogatja a mintaillesztést, a makrókat és a magasabb típusú típusokat

a mintaillesztés a Scala-ban nem vicc. A Scala erre a célra használja a match utasítást, amely a Java switch utasítás erőteljes változata. Ez lehetővé teszi, hogy megfeleljen bármilyen típusú adatnak, listáknak, sőt a saját típusainak is. Ha még nem próbálta ki, azt javaslom, hogy játsszon vele egy kicsit.

írjon egyszer, futtasson mindenhol

A Scala egy kicsit összetett, de nagyon rugalmas kódszintaxissal rendelkezik. A funkcionális programozási funkciók szakszerű használata a kódot a legjobb szintre bővíthetővé és hierarchikussá teszi.

nagyobb közösségi támogatás

A Scala több mint egy évtizede működik itt. Mivel ez egy erőteljes Java alternatíva, hatalmas támogató közösséggel rendelkezik. YouTube oktatóanyagokról, blogbejegyzésekről, fórumokról beszélünk, és ne felejtsük el a hivatalos támogatást és a felhasználói dokumentációt. Bármi találja magát küzd, akkor nagyjából megtalálja a választ rá.

operátor túlterhelése

A Scala nem korlátozza az operátorok túlterhelését. Játszhatsz operátor kinézetű funkciókkal, és korlátlanul definiálhatsz. De óvatosnak kell lennie ezzel a funkcióval. Ennek ellenére, ha ezt jól meg tudja csinálni, a kód olvashatósága növekedni fog. Ha nem, akkor a végén megnehezítheti a kód megértését.

gyengeségek

lassú Összeállítás

A kódolás világában minden a sebességről szól. A lassú program nagy kikapcsolás. Ami az ipari szintű projekteket illeti, a Scala fordítási ideje percekké válik Kotlinhez képest, amely megpróbál olyan gyorsan összeállítani, mint a Java, ami másodpercekben van.

a bináris Összeállítás kihívást jelent

A Scala nem bináris kompatibilis néhány verzióval. Tegyük fel, hogy összeállította a Scala 2.1-et. Ugyanez nem fordítja le a Scala 2.11-et.

ez lehet semmi, vagy lehet a legnagyobb rémálma, ha különböző verziókon kell dolgoznia és frissítenie őket. Különösen, ha termelési léptékű projektjei vannak.

kevésbé hatékony A Null biztonság kezelésében

A Scala jó kísérletet tesz a null biztonság kezelésére, de ez csak nem olyan hatékony. A null biztonság Scala megfelelője az opció kulcsszó. Ezzel jelentős esély van arra, hogy NPE-t kapjon a hátsó ajtónál.

az elvihető

Scala és Kotlin meglehetősen kötélhúzásban vannak. Scala bizonyos szempontból előnyt élvez Kotlin felett, de Kotlin másokban ugyanolyan félelmetes. A fő különbség — ahol a két nyelv egymástól elkülönül-az, hogy Kotlin inkább a Java jobb verziója, míg a Scala egy teljesen más fajta Java, hogy úgy mondjam.

míg a Scala rendelkezik egy kis tanulási görbével, páratlan támogatást nyújt a fejlett funkcionális programozáshoz. Kotlin, másrészről, szuper könnyű megtanulni és szórakoztató kódolni.

de ez azt jelenti, hogy valami nincs rendben a Java – val? Úgy értem, hogy miért változik a Java az első helyen?

megmondom, miért

Java régi. Nagyon öreg. Mint az öreg dédapám. És bár népszerű, népszerűsége valójában ellene dolgozik. A Java használata mindenhol megtalálható, ami lehetetlenné teszi a Java-t használó csapatok számára az alapok megváltoztatását, még akkor is, ha tudjuk, hogy a Java sok technikai kritikával is szembesül.

nem számít a nagyság, Java túl sok redundancia és hosszú boilerplate kódot. Kotlin és Scala csak jobb abban, amire a Java-t szánták.

következtetés

A nyelv kiválasztása elsősorban attól függ, hogy milyen felhasználásra van szüksége. A Scala jól illeszkedik olyan projektekhez, amelyek funkcionális és OOP stílusú programozási nyelvek keverékét igénylik. Olyan helyeken, ahol nagy mennyiségű adatot kell kezelnie, vagy a matematikára támaszkodó komplex modellezést, a Scala lenne a legjobb.

Ha azonban csak azt akarta, hogy a Java kevésbé frusztráló legyen — de mégis Java legyen -, akkor semmi sem jobb, mint Kotlin. Segítségével Kotlin Android app fejlesztés lesz a legjobb dolog, ami valaha történt veled. Kotlin olyan, mint egy Java unokatestvér, aki jobban néz ki, és aki nem beszél halandzsáról. Válassz tehát bölcsen, és a kóderő legyen veled.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.