Lekce 1 - Úvod do jazyka Kotlin, platformy a IntelliJ
Vítejte v první lekci populárního kurzu programování v jazyce Kotlin. Postupně se spolu prokousáme těmi nejzákladnějšími konzolovými programy až ke grafickým aplikacím pro platformu Android. V dnešním Kotlin tutoriálu si řekneme něco o historii jazyka, nainstalujeme jej a naprogramujeme svou první Kotlin aplikaci!
Historie jazyka Kotlin
Kotlin by se dal stručně představit jako modernější Java. V roce 2011 JetBrains, firma vyvíjející několik velmi populárních IDE, oznámila nový programovací jazyk pro JVM, běhové prostředí Javy. Aplikace v něm vytvořené tedy fungují všude, kde je nainstalována populární Java, což je jeden z důvodů, proč má smysl investovat do učení se Kotlinu svůj čas. Jeden z členů vývojářského týmu nového jazyka zdůvodnil svůj výtvor tím, že tehdejší náhrada za Javu, Scala, trpěla pomalou kompilací, tedy pomalým převodem Scaly do kódu pro Java prostředí, a mizernou podporou pro vývoj Android aplikací. Přestože Kotlin má jinou syntaxi, tak zkompilovaný kód je plně kompatibilní s Javou, proto se v jazyce Kotlin dají i používat Java knihovny. Od roku 2017 Kotlin je oficiální jazyk pro vývoj pro Android a vsadilo na něj hned několik velkých firem včetně Google. Protože se jedná o relativně nový jazyk, tak si s sebou z minulosti nenese nejrůznější problémy a nabízí řadu moderních přístupů.
Vlastnosti jazyka Kotlin
Po stránce návrhu se jedná o objektový, kompilovaný jazyk s typovou kontrolou. Poměrně blízko tak má k jazykům jako jsou Swift, Scala a jim podobným. Kotlin je od úplného začátku, kdy firma JetBrains oznámila jeho vývoj, open source a proto aplikace v něm napsané jdou spustit téměř na všech operačních systémech. Kotlin je zpětně kompatibilní.
V Kotlinu si můžete napsat cokoliv co byste napsali v jazyce Java. Chcete si napsat Android aplikaci? Použijete Kotlin. Chcete si napsat okenní aplikaci v JavaFX/Swing? Použijete Kotlin. Chcete si napsat grafickou hru? Použijete opět Kotlin.
Kotlin lze použít i na tvorbu webových aplikací. Existuje řada knihoven, které podporují Kotlin jako například Spring, Vert.x a nebo oficiální knihovna od JetBrains, Ktor. Pro psaní frontendu můžeme použít Kotlinx.html.
Jak již bývá zvykem u modernějších jazyků, jako např. u Dartu, Kotlin umožňuje své vlastní zdrojové kódy zkompilovat do jazyka JavaScript. Ať již z jakéhokoliv důvodu potřebujete vyvíjet v JavaScriptu, můžete psát v Kotlinu, který se vám poté do JavaScriptu zkompiluje. Tato možnost je v současné době ještě experimentální.
Instalace
Protože Kotlin běží na JVM, je zapotřebí mít nainstalovaný Java SDK (Klikneme na Accept License Agreement a zvolíme verzi podle našeho OS, nejčastěji asi "Windows x64"). Po instalaci Java SDK stačí pouze nainstalovat IDE, Intellij. Intellij má dvě verze, Ultimate Edition a Community Edition. Ultimate edition je placená a nabízí více možností pro vývojáře. Nám bohatě postačí Community Edition, které je zdarma.
Poté, co si stáhneme IntelliJ a spustíme instalační program, stačí jen klikat na tlačítko "Další". Po instalaci IntelliJ spusťte. Mělo by na nás vyskočit následující okno ohledně importování nastavení (např. klávesových zkratek) z jiného IDE. Import můžeme zamítnout.
Klikneme na "Ok" a dále vybereme vzhled našeho IDE.
Vyberte si jaký vzhled vám vyhovuje a poté klikněte na "Next". S klikáním na "Next" pokračujeme dokud se nám nezobrazí následující okno:
Kliknutím na "Create New Project" založíme nový projekt. Mělo by se nám zobrazit nové okno, kde po levé straně uvidíme Kotlin. Vybereme jej a klikneme na tlačítko "Next".
Jako jméno projektu vyplníme HelloWorld
a klikneme na
"Finish".
Dále je zapotřebí vytvořit Kotlin soubor, kam budeme psát náš kód.
Klikneme pravým tlačítkem myši na složku src/
po levé straně
a zvolíme 'New' -> 'Kotlin File/Class'.
V dalším kroku souboru přiřadíme název Main.kt
a
potvrdíme "Ok".
Hello world
Je zarytým zvykem, že prvním programem v nějakém novém jazyce bývá tzv. Hello world. Jedná se o program, který jakýmkoli způsobem uživateli zobrazí hlášku "Hello world", případně nějaký podobný text.
Otevřeme náš Main.kt
soubor a připíšeme do něj
následující kus kódu:
fun main(args: Array<String>) {
println("Hello, World!")
}
Kód definuje funkci main()
, to je hlavní funkce, která se
vždy spustí se startem programu. Asi tušíte, že fun
označuje
funkci. Část s args
a Array
zatím nemusíme
řešit, je zde pro případ, kdybychom chtěli programu předat nějaké
argumenty z příkazové řádky. Důležité jsou složené závorky
{
a }
. Mezi ně (do funkce main()
),
budete v základních lekcích psát vždy svůj kód.
Kód v main()
funkci vypisuje známý pozdrav do speciálního
okna, které najdete pod editorem. Právě sem budete později také psát i
vstup z klávesnice, na který budou programy z dalších lekcí reagovat.
println()
je funkce, která vypíše text do konzole. Funkce mohou
obsahovat nějaké vstupní parametry, které se zadávají do závorky a jsou
oddělené čárkou. V případě funkce println()
je parametrem
text k vypsání. Textu budeme říkat textový řetězec nebo jen řetězec
(anglicky String
) a budeme ho psát do uvozovek, aby tomu Kotlin
rozuměl a nezaměňoval ho s jinými příkazy. Můžete si text zkusit upravit
a vypsat tak nějakou svou hlášku. Pro tvorbu jiných programů samozřejmě
řádek s výpisem tohoto textu odstraníme. main()
funkci naopak u
všech svých dalších programů ponecháme.
Svůj první program spustíme zeleným tlačítkem "Play" v horní liště. V konzoli níže se objeví vypsaný text.
Kotlin vs. Java
Tímto dnes skončíme. Již jste se skamarádili s IntelliJ a víte, jak snadno spustit Kotlin kód. Pro ty z vás, kteří přecházejí z Javy nebo mají hlubší povědomí o tom jak funguje, uvedu ještě rozdíly oproti Kotlin. Vy ostatní tuto pasáž ignorujte, zbytečně by vás zmátla a vše si vysvětlíme během kurzu.
Kotlin oproti Javě NEobsahuje
Následující funkcionality jazyka Java se časem ukázaly jako problematické a proto je Kotlin NEimplementoval:
- Checked Exceptions
- Primitivní typy (které nejsou třídy)
- Statika
- Ternární operátor
Kotlin oproti Javě obsahuje navíc
Následující funkcionality naopak autoři Javy stále nepřidali, jsou to:
- Jednodušší lambda výrazy a inline funkce
- Extension funkce
- Null-safety (konec NullPointerException )
- Smart casts
- Řetězcové šablony
- Vlastnosti (gettery/settery co se implementují samy)
- Primární konstruktory
- First-class delegation
- Automatické odvozování datových typů
- Singletony
- Declaration-site variances a Type projections (generika)
- Range expressions (rozsahy)
- Přetěžování operátorů
- Companion objects
- Datové třídy
- Oddělená rozhraní pro read-only a mutable kolekce
- Coroutines
V příští lekci, Proměnné, typový systém a parsování v Kotlin, se naučíme se pracovat s proměnnými a získávat vstup od uživatele.