RestApi

Dáta sem, dáta tam.

Nástroje používateľa

Nástoje správy stránok


kotlin-multiplatform

KMP

Kotlin Multiplatform je cieľený pre tvorcov aplikácií, ktorí hľadajú jednoduchý a efektívny spôsob ich vytvárania pre viacero platforiem, pri výhode natívneho programovania. Vďaka širokospektrálnosti je to prevratná voľba ktorá je stabilná.

KMP je open-source od JetBrains a aktuálne tvorí kód pre: Android, iOS, desktop, web, server-side. UI sa tvorí frameworkom Compose Multiplatform a zdieľa API s Jetpack Compose (od Google pre Android).

Odporúča sa používať vývojové prostredie IntelliJ IDEA pre zameranie tvorby na iOS, backend, web. Pri vyššej orientácii na Android je vhodnejšie Android Studio, prípadne , alebo tie IDE, ktoré podporujú Kotlin (VSC, Eclipse, …).
Veľmi perspektívne IDE je IDE Fleet, z ktorého by molo vzniknúť KMP IDE, obsahujúce všetko v jednom (Kotlin, Swift). Vývoj aplikácii pre iOS je nutné použiť Mac, pretože Xcode a emulátory majú licenciu len pre macOS.

Popis Kotlin Multiplatform

Prečo produkovať v KMP

Stačí, ak svoju aplikáciu napíšete raz a funguje všade, teda na iPhone, Android, PC i Web.
Zdroje dát zabezpečuje základná vrstva, ktorá ich čerpá z rôznych zdrojov (SQL, nastavenia, Web služby)
Dátový model je prostredník medzi dátami a používateľským rozhraním (UI). Prenáša požiadavky na navigáciu v aplikácii a zaroveň uchováva stavy a spúšťa akcie.
Používateľské rozhranie zabezpečuje podľa operačného systému kontrakciu používateľa a aplikácie. Pre iOS je to Swift UI, pre Android je to Jetpack Compose, pre Web je to Compose for Web a pre Desktop zassa Compose for Desktop.

  • Kotlin je jednoduchší ako staršie jazyky. Pre produkciu na web nie je treba sa učiť JavaScript a jeho nádstavby.
  • Pre všetky platformy je použitý len jeden jazyk: Kotlin
  • Nie je treba špecifikovať rozdielne knižnice a pluginy pre distribúciu Android - iOS, teda stejne sa pracuje s dátami
  • Naďalej je možné využívať preferované IDE (AS, Xcode)
  • Vďaka kompilovaniu do výsledného strojového kódu je aplikácia rýchlejšia, ako v medzijazyku
  • Kotlin je open-source pod licenciou Apache 2, čo umožňuje šírenie výsledného kódu bez licenci a poplatkov
  • Výsledná aplikácia je skutočne natívna, takže splynie bez problémom s hardware

Čo je KMP

Pre výslednú univerzálnosť KMP je približne 85% kódu stejného pre všetky platformy a zbytok 15% je rozdielného, podľa platformy a jej UI. Napríklad pre 3 aplikácie na každú platformu zvlášť, je treba v KMP len tretina úsilia.

  • commonMain - centrum kde sa tvorí zdrojový kód v jazyku Kotlin. Je univerzální pre logiku aj dáta. Nie je závislý od platformy.
  • androidMain - kód produkovaný zo zdrojového kódu implementuje príkazy commonMain. Využíva rozhrania Android API ako sú: aktivity, služby a intenty. Kód je v jazyku Kotlin.
  • iosMain - obdobne implementuje príkazy z commonMain, avšak kompiluje sa do kódu kompatibilného s iOS. Pre interakciu využíva iOS API a integruje sa so Swift, či Objective-C.

Ako funguje KMP

Ak rozdelíme tvorbu projektu pod Kotlin Multiplatform, tak pozostáva z týchto bodov:

  • Vývoj - tvorba spoločného kódu pre všetky platformy
  • Kompilácia - najprv prebehne kontrola správnosti a kompatibility pre multiplatform s prípadným výsledným upozornením na úpravy
  • Tvorba - podľa platformy na ktorej beží IDE sa tvoria hotové buildy

Výsledne vytvorený kód nepotrebuje JVM, ale prekladá sa do natívneho jazyka pre platformu pomocou LLVM technológie (pre iOS, macOS, Windows a Linux ⇒ C, C++, Swift a Objective-C). Výhoda takéhoto prekladu je výsledná rýchlosť behu hotovej aplikácie.

Kotlin Multiplatform je určený pre vývojárov Androidu, ale aj pre aplikácie na web, JVM, Linux a ďalšie. V Android sa na tvorbu využíva Android Studio + Gradle a Jetpack Compose.
Kotlin Multiplatform dobre spolupracuje s knižnicami Java. To znamená, že na rýchle spustenie projektu môžete použiť množstvo existujúceho kódu a modulov.


Príklad firmy, ktorá používa pre kódovanie KMP: CodefyLabs,

linky

KMP&Compose vs. Flutter

Tento pohľad na oba produkty je vytvorený z všeobecných názorov viacerých kodérov. Každý však môže mať iný názor na toto hodnotenie a privítame názory, ktoré obohatia tento článok. Keďže KMP je relatívne nový, skúsenosti s ním pribúdajú každý deň a zatiaľ sa javí pozitívne.
Objektívne má Flutter menej strmú krivku učenia ako KMP a jeho dobrá výkonnosť a stabilita sú dnes prednosťami. Má k dispozícii veľké množstvo dobrých knižníc.
Naproti tomu KMP má do budúcnosti sľúbenú podporu od Google vrámci Comopse a Kotlin získava na kvalite vďaka jeho tvorcom z JetBrains.

Autor článku monetálne odporúča Kotlin riešenia, nakoľko pre nové projekty značne znižujú náklady na tvorbu a udržiavanie, zabezpečujú jednotný dizajn pre mobilné i desktopové platformy. Sú postavené na modernejšom jazyku so sofistikovanejšou logikou a možnosťami. Výhoda je i eliminácia redundantných rozhodnutí o zmenách v projekte pre viacero platforiem a náväzne veľkosti týmu pre vývoj a udržiavanie, teda čo sa týka Full-stack analýzy, riešení i opráv.

Kotlin Multi Platform

Kotlin Multi Platform (KMP) je základ pre vývoj aplikaci na viacero platforiem.
Kodér produkujúci v Java, dostáva vrámci Kotlin-u možnosť postúpiť k modernejšiemu jazyku, bez nutnosti zásadných zmien. Staré Java projekty je možné rozšíriť o Kotlin a súbežne tvoriť nové triedy a udržiavať pôvodné. Samozrejme je vhodné získať skúsenosti najprv so základmi Kotlin a následne si osvojiť prácu s Korutinami, ktoré sú základnými kameňmi. Kotlin je Googlom preferovaný jazyk pre vývoj aplikácií pre Android a ostatné.
KMP kompiluje zdieľaný kód Kotlinu do zadaného natívneho cieľa pre platformy Android, iOS, pre web KMP tvorí JavaScript.
KMP pre zdieľanie obchodnej logiky už používájú napríklad: McDonald’s, Netflix Studio, Philips, Autodesk, Forbes, Bolt, Google Workspace (Dokumenty, Tabuľky a Prezentácie), Todoist, apk Cash, 9gag, Baidu, TouchLab , Instabee a ďalšie .

Jetpack Compose

Vývoj zabezpečuje Google a primárne je určený pre Android. Je integrovaný s Android SDK. Je aplikovateľný na multiplatformové nasadenie.

Compose Multiplatform

Vývoj zabezpečuje JetBrains. Rozširuje pôvodný Compose platforiemy: Android, Desktop (Windows, macOS, Linux), Web, iOS. Veľká časť kódu je zdieľaná s Jetpack Compose, avšak knižnice sú pre multiplatform, teda nie je integrovaný s Android SDK (ale mp lib…).

Compose MP používa natívne UI, čo pri písaní kódu urýchľuje a sprehľadňuje projekt a zárovaň znižuje objem kódu. Zároveň sú k dispozícii aj zdieľané prvky každej platformy, čo skvalitní rozhranie.

  • Je vhodné pre novo budované aplikácie s cieľom identického multiplatformového vzhľadu
  • Umožňuje full-stack expertízy v jednom jazyku
  • Zabezpečí rýchle vybudovanie a nasadenie projektu
  • využiteľné skúsenosti z Jetpack Compose

Compose podporuje na desktopoch viacero okien a obsahuje ikony tretích strán, avšak gestá prevádza na emuláciu myši.

linky k odstavcu:

Flutter

Flutter je open-source framework na vytváranie natívnych multiplatformových aplikácií (Android, iOS, web, desktop (Windows, macOS, Linux), IoT).

Súčasť tvorby kódu pre Flutter je programovací jazyk Dart, ktorý sa stal osamoteným jazykom, pre jeho takmer výhradné využitie vo Flutter. Toto jeho špecializované využitie ho robí menej komplikovaným ako Kotlin, ktorý pre MP využíva rôzne náročnejšie doplnky. Všeobecne je teda zápis vo Flutter stručnejší a jednoduchší ako v Kotlin.

Možné platformy pre vývoj pod Flutter sú: Windows, macOS, Linux, ChromeOS. Každá platforma má špecifické použitie pre cieľový OS:

  • Windos - Android, Web, Desktop
  • macOS - iOS, Android, Web, Desktop
  • Linux - Android, Web, Desktop
  • ChromeOS - Android, Web

V prospech Flutter hovorí široká základňa vytvorených produktov, množstvo balíčkov, rýchlosť behu a spoľahlivosť.
Flutter aplikácie sa spúšťajú na zariadení vo virtuálnom stroji, teda prepojenie s API systému nie je priame, teda oprávnene vyvstáva otázka natívnosti aplikácie.
Flutter zatiaľ nepodporuje na desktopoch viacero okien, ale podporuje gestá. Vstavené Widgety majú vyššiu podporu.

Vývoj produktov Flutter-Dart podporuje VS Code a Android Studio & IntelliJ, DartPad a Firebase Studio.

Flutter využívajú spoločnosti: Xiaomi, Wolt, Universal Studios, Alibaba Group, ByteDance, Geico, eBay Motors, Google Pay, So Vegan a ďalšie.

linky k odstavcu:


Helper

Pre použitie najprv uprav konfiguračné súbory a potom v kóde importuj knižnice.

// build.gradle.kts:composeApp :
kotlin { sourceSets { commonMain.dependencies {
  implementation(libs.kotlinx.datetime) }}}
 
// libs.versions.toml :
[versions]
kotlinxDatetime = "0.7.1"
[libraries]
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinxDatetime" }
 
// code :
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime
import kotlin.time.Instant
import kotlin.time.Clock
import kotlin.time.ExperimentalTime
 
val currentMoment: Instant = Clock.System.now()
val datetimeInUtc: LocalDateTime = currentMoment.toLocalDateTime(TimeZone.UTC)
val datetimeInSystemZone: LocalDateTime =
        currentMoment.toLocalDateTime(TimeZone.currentSystemDefault())
 
Text("date/time: ${datetimeInSystemZone.date}/${datetimeInSystemZone.time.hour}:${datetimeInSystemZone.time.minute}")

Linky

Poznámky

Zručnosti full-stack inžiniera (základné) pre KMP:

  • Jetpack Compose - tvorba UI pre Android
  • SwiftUI - tvorba UI pre iOS
  • Ktor
  • MongoDB - multiplatformový NoSQL databázový program na báze JSON.
kotlin-multiplatform.txt · Posledná úprava: od attilajancik