Flutter s Kotlin Multiplatform můžeme porovnat v několika různých směrech. Kotlin Multiplatform tolik neznám, ale zde je několik důvodů proč používám právě Flutter:
- Programovací jazyk Dart => velice jednoduchý, snadno se s ním člověk naučí pokud má již zkušenosti s podobným programovacím jazykem (např.: Kotlinem, Javou, C#, Pythonem nebo JavaScriptem).
- Popularita Flutteru => Flutter je spolu s ReactNativem nejpopulárnějším řešením pro tvobu multiplatformních mobilních aplikací.
(https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/)
- Rychlost růstu => Komunita kolem Flutteru roste 2x rychleji než u ReactNativu. (viz. graf úplně dole na konci článku: https://dev.to/mjablecnik/flutter-vs-react-native-community-in-2022-2do6)
- Dostatečně velký ekosystém => Díky velké komunitě a rychlému růstu popularity existuje velké množství pluginů a rozšíření, díky kterým
nepotřebujete žádnou znalost nativního programování pro Android nebo iOS a nemáte potřebu ani žádné vlastní pluginy tvořit..
Osobně nemám žádné znalosti nativního programování jak v Androidu tak ani v iOS a vůbec mi to za ty 2 roky co dělám s Flutterem nevadí.
- Developer experience => Díky Dartu a Flutteru je programování mobilních aplikací opravdu skvělé a podle StackOverflow survey je i mnoho vývojářů, kteří Flutter opravdu milují a Google dělá opravdu hodně pro to, aby komunita byla spokojená. (https://insights.stackoverflow.com/survey/2021#section-most-loved-dreaded-and-wanted-other-frameworks-and-libraries)
- Rychlost vývoje => Díky Flutteru je tvorba aplikace pro Android i iOS velice rychlá díky sdílenému kodu. Stejně tak to platí i pro ReactNative a Kotlin Multiplatform, takže toto je spíše výhoda mezi Multiplatformím vs Nativním programováním..
- Pracovní pozice => Pokud jste vývojář, tak vás možná i potěší, že se v česku dá již teď najít mnoho firem shánějící Flutter vývojáře. Kolik pracovních pozic je zde otevřeno také i pro Kotlin Multiplatform?
https://www.startupjobs.cz/nabidky/vyvoj/mobilni-vyvoj/flutter
https://www.startupjobs.cz/nabidky?superinput=kotlin%20multiplatform
Z výše uvedeného vyplývá, že Flutter vede hlavně díky velikosti komunity.
Kotlin Multiplatform nemá až takovou komunitu jako Flutter.
Kotlin vývojáři používají hlavně pro nativní vývoj ale ne multiplatformní.
A docela jsem zvědavej, jestli Kotlin Multiplatform zažije v následujících letech stejně tak rychlý růst jako Flutter..
A v čem jako konkrétně spočívá ta nevýhoda?
Myslel jsem, že se tady konkrétně bavíme o mobilním vývoji.
Anebo myslíte si snad, že mobilní vývojář bude také vytvářet hry pro Xbox, embedded systémy do IoT zařízení, backend na straně serveru, CLI scripty pro linuxový terminál anebo frontend webových stránek?
Každá z těchto oblastí má své technologie (jazyky, knihovny, frameworky) kde si našli své uplatnění:
C#/.NET
Java/Spring
Kotlin/Android SDK
C/C++
JavaScript/TypeScript
Python
Go
atd..
Názor jako že: "Dart se nepoužívá nikde jinde než s Flutterem."
je úplně ten samý jako: "C/C++ se nepoužívá nikde jinde než pro low-level/embedded systémy"
nebo "Go se nepoužívá nikde jinde než pro backendové microservices."
anebo "JavaScript/TypeScript se nepoužívá nikde jinde než pro tvorbu webových stránek."
anebo "C#/.NET se nepoužívá nikde jinde než na windowsech."
anebo "Debian se nepoužívá nikde jinde než na serverech."
Ano samozřejmě můžeme používat také JavaScript na straně serveru, C#/.NET Core na linuxu anebo Go pro CLI programy.
Ovšem stejně tak můžeme Dart používat i pro Tvorbu CLI scriptů, webový frontend anebo počitačové hry.
Také ovšem můžeme Go použít pro tvorbu webového frontendu, JavaScript pro tvorbu počitačové hry, C# pro tvorbu mobilní aplikace anebo Python pro tvorbu window manageru.
Všechno toto je možné, ale reálně se to moc nepoužívá, a to z nejrůznějších důvodů, které tu teď asi nebudu rozepisovat.. :)
Ovšem mohu říct, že Dart je v dnešní době stejně tak multiplatformní asi tak jako Kotlin.
Podporuje nejenom všechny desktopové nebo mobilní platformy at už skrze JIT nebo nativní kompilaci, ale i browser diky dartjs anebo volat Céčkovské knihovny díky dart:ffi.
To samé dokáže i Kotlin Multiplatform, C# a další jazyky, pokud vím..
Takže vše z výše zmíněného můžete dělat i s Dartem, pokud chcete.
Tím pádem to, že se Dart nepoužívá nikde jinde nevnímám ani jako nevýhodu, protože to, že se sice mainstreamově nepoužívá v jiných oblastech, ještě neznamená, že to taky nejde..
A úplně to samé platí i pro ostatní jazyky.
Ovšem pokud jste třeba Frontend web developer, tak asi samozřejmě pro vás bude 1000x lepší pracovat s JavaScriptem/TypeScriptem, anebo pokud jste backend developer tak zvolíte (C#, Python, Javu, Go, apod.. podle potřeby) anebo pokud jste herní vývojář tak s ničím jiným než se C# a nějakým tím herním Enginem asi ani pracovat nebudete.., že? ;-)
Ano, to je jistě pravda. Každý jazyk má nějakou oblast kde se uchytil, jinak by snad ani neexistoval a poté co získal na popularitě se potom začal používat i v jiných oblastech programování, díky velkému množství programátorů, kteří si jej oblíbili :)
Kdyby neexistovaly webové stránky, tak by se také nikdy neuchytil JavaScript a nevznikl by TypeScript. Kdyby nebyly windowsy, nikdy by nevzniknul ani C#, Javu si snad ani bez JVM neumím představit.. a Ruby bez Railsu jako by nebyl..
Anebo používá se snad Kotlin někde jinde než na Androidu? Popřípadě na serveru se Springem? Anebo Go na jiné věci než microservices?
Pořád jste mi ale neřekl, jaký má toto jako význam. Není přece důležitý aby jeden jazyk byl totálně všude (což snad ani není možné), ale aby vám dal vše potřebné pro vývoj toho, co potřebujete. (což vám Dart dává.., viz. můj předchozí komentář).
A podle toho co chcete vytvářet si i vyberete tu nějakou danou technologii která vám nejvíce vyhovuje.
A osobně si myslím, že je velice dobře, že Dart našel uplatnění s Flutterem, protože to je opravdu dobrá kombinace a Dart je opravdu pěkný jazyk, kterého by byla škoda, kdyby nezískal na větší popularitě.
Teď díky komunitě, která je každým dnem větší a větší se může ekosystém okolo Dartu zase více rozvíjet..
Ovšem v tuto chvíli pokud nejste mobilní vývojář a ani se jím stát nechcete, tak asi Dart pro vás zatím zjevně není, ale za 5-10 let může být situace klidně zase jiná.. ;-)
5. 6. 2022, 17:19 editováno autorem komentáře
To jste ale neodpověděl na mojí jednoduchou otázku: kde jinde se používá Dart kromě kombinace s Flutter?
Dart je tady +-10 let a nebýt toho, že to tlačí Google s Flutter tak u je dávno mrtví.
Anebo používá se snad Kotlin někde jinde než na Androidu? Popřípadě na serveru se Springem?
To vám přijde málo?
Mimochodem v Go je napsaný Docker a spousta utilit.
Ne opravdu za 5-10 let nebude situace s Dart jiná, protože Google se rozhodne opět (jako už po několikáté) pro něco jiného a tím Dart skončí.
Ano máte pravdu. Kotlin je jen jazyk a Kotlin Multiplatform Mobile (KMM) je SDK pro tvorbu mobilní aplikace pro iOS a Android => https://kotlinlang.org/lp/mobile/
Stejně tak Dart je jazyk se kterým se programuje ve Flutteru.
Věřím, že Calculon porovnával právě Flutter vs KMM (o kterém je i tento článek) a ne Flutter s Kotlinem jako s jazykem.. ;-)