Kotlin 1.2.60 Áttekintés

A Kotlin release-k elég gyakoriak mostanában és az utóbbi pár nem is volt annyira érdekes, de az 1.2.60 valamiért különleges. Ebben a cikkben áttekintjük, hogy miért.

Az összefoglaló

Ebben a release-ben kaptunk pár hasznos dolgot:

  • Mostantól lehet multiplatform projektet fordítani IDEA-ból
  • Kaptunk egy kapt modult, ami képes Gradle workereken futni
  • Pár új refaktorálási funkció IDEA-ban
  • Pár bugfix és optimalizáció

Ezek mind nagyon jók, de van egy különlegesen érdekes rész a jegyzetben:

Adds optional expected annotations to multiplatform projects

Kicsit bővebben:

This update introduces the @OptionalExpectation annotation that is suitable for marking expect annotation class declarations in common code whose actual counterparts may be omitted in the platform implementations.

Optional micsoda?

Szóval miért is jó ez? Végülis csak egy @OptionalExpectation annotációt kaptunk, amit csak expected annotációkra rakhatunk. A válasz az, hogy úgy tervezik, hogy rá fog kerülni olyan annotációkra, mint a @JvmStatic, vagy a @JvmOverloads.

Annyira nincs kiemelve ennek a hasznossága, de szerintem ez egy elég jó kezdeményezés. Aki dolgozott már multiplatform projekttel Kotlinban, avval előfordulhatott, hogy common osztályokhoz builder-t, vagy valami haszonlót kellett készíteni. Most, hogy majd meg lesz a lehetőségünk, hogy ezeket az osztályokat felannotáljuk például @JvmStatic-kel, lényegesen egyszerűbbé válik majd az életünk. Bemutatom egy példával:

A use case

Tegyük fel, hogy egy library-n dogozunk a projektünkhöz, ami pár olyan dolgot implementál, amit több platformon szeretnénk használni, például adatküldést HTTP-n keresztül. Ezeket a dolgokat nem akarjuk kétszer megírni, ezért amennyi kódot csak lehet, common projektbe teszünk:

Igen ám, de ha ezt a gyártófüggvényt Java-ból akarjuk használni, akkor az kicsit nehézkes:

Az egyetlen mód, hogy ezt a problémát megoldjuk jelenleg, az valamilyen segédosztály a JVM projektünkben:

Több és nehezebben karbantartható kód.

Végezetül

Ha megoldják, hogy használhassuk a fent említett annotációkat common kódból, akkor az nagyon sokat fog segíteni.

Ezen kívül úgy néz ki, hogy a JetBrains eléggé komolyan veszi a multiplatform projekteket és a programozók valódi problémáit oldják meg.

Van még egy érdekesség a dologban: úgy tűnik, hogy amiket mostanában készítettek a Kotlin fejlesztői, azok mind egy irányba mutatnak. Kaptunk platformfüggetlenül használhato coroutine-okat, egyre jobban bővülő stdlib-et és most hamarosan az opcionális expected annotációk is megérkeznek. Ha ez így halad, akkor a végén lehetséges, hogy lesz egy olyan Kotlinunk, amiben a platform, amin fut csupán csak egy implementációs részlet lesz, és a kódunk bárhol futhat. Ezt azért megnézném!

A cikk angol változata itt olvasható.