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 si 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 jedním 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, a sice 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, zkompilovaný kód je plně kompatibilní s Javou, proto se v jazyce Kotlin dají používat i Java knihovny. Od roku 2017 je Kotlin oficiálním jazykem pro vývoj aplikací pro Android a vsadilo na něj hned několik velkých firem včetně Googlu. 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. Kotlin tak má poměrně blízko k jazykům, jako jsou Swift, Scala a jim podobné. Kotlin je od úplného začátku, kdy firma JetBrains oznámila jeho vývoj, open source, a proto aplikace v něm napsané lze spustit téměř na všech operačních systémech. Kotlin je zpětně kompatibilní.
V Kotlinu můžeme napsat cokoli, co bychom napsali v jazyce Java. Chcete si napsat Android aplikaci? Použijete Kotlin. Chcete si napsat okenní aplikaci v JavaFX/Swingu? Použijete Kotlin. Chcete si napsat grafickou hru? Použijete opět Kotlin.
Kotlin lze použít i ke tvorbě webových aplikací. Existuje řada knihoven, které Kotlin podporují, jako například Spring, Vert.x nebo oficiální knihovna od JetBrains, a sice Ktor. Pro psaní front-endu můžeme použít Kotlinx.html.
Jak již bývá u modernějších jazyků (jako např. u Dartu) zvykem, Kotlin umožňuje své vlastní zdrojové kódy zkompilovat do jazyka JavaScript. Pokud tedy z jakéhokoli důvodu potřebujeme vyvíjet v JavaScriptu, můžeme psát v Kotlinu, který se nám poté do JavaScriptu zkompiluje. Tato možnost je však 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, a sice 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 spustíme. 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.

Vybereme si, jaký vzhled nám vyhovuje, a poté klikneme 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 zažitý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 hlavní funkci main()
, která se vždy spustí se
startem programu. Asi tušíme, ž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()
) budeme v základních lekcích vždy
psát svůj kód.
Kód v main()
funkci vypisuje známý pozdrav do speciálního
okna, které najdeme pod editorem. Právě sem budeme později psát také 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 Java funguje, uvedeme ještě rozdíly oproti Kotlinu. Vy ostatní tuto pasáž ignorujte, zbytečně by vás má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 stále nepřidali autoři Javy, jsou to:
- jednodušší lambda výrazy a inline funkce,
- extension funkce,
- Null-safety (konec NullPointerException
),
- Smart casts,
- řetězcové šablony,
- vlastnosti (gettery/settery, jež 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 Kotlinu, se naučíme pracovat s proměnnými a získávat vstup od uživatele.