Szkolenie: Programowanie w języku Kotlin
Szkolenie Programowanie w języku Kotlin to praktyczny i ambitny kurs dla programistów, który uczy nowoczesnych technik, idiomów i wzorców Kotlin - od podstaw składni i programowania obiektowego, przez programowanie funkcyjne, asynchroniczność z korutynami i Flow, projektowanie własnych DSL, aż po testowanie i utrzymanie jakości kodu - przygotowując do tworzenia wydajnych, bezpiecznych i czytelnych aplikacji na JVM, Androida i inne platformy
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:3 dni (24h)
Kod kursu:KOTLIN/PROG
Programowanie w języku Kotlin
Cele szkolenia
Szkolenie przygotowuje do samodzielnego projektowania i implementowania aplikacji w języku Kotlin z wykorzystaniem nowoczesnych wzorców programistycznych
Szkolenie uczy stosowania idiomatycznych rozwiązań Kotlin, w tym obsługi null safety, rozszerzeń, programowania funkcyjnego oraz integracji z innymi technologiami
Szkolenie przygotowuje do tworzenia kodu współbieżnego i asynchronicznego z użyciem coroutines, structured concurrency oraz reaktywnych strumieni Flow
Szkolenie pokazuje, jak budować czytelne, type-safe DSL oraz świadomie wykorzystywać zaawansowane elementy systemu typów Kotlin
Szkolenie uczy testowania kodu (w tym asynchronicznego) i utrzymania jego jakości z użyciem narzędzi statycznej analizy oraz pomiaru pokrycia testami
Szkolenie rozwija umiejętność analizy i refaktoryzacji kodu w celu zwiększenia jego czytelności, bezpieczeństwa i testowalności
Dla kogo?
Programiści Java z podstawowym doświadczeniem, chcący rozszerzyć kompetencje o nowoczesny język Kotlin
Programiści aplikacji mobilnych, szczególnie na platformę Android, zainteresowani efektywnym i bezpiecznym kodowaniem
Osoby posiadające podstawową znajomość programowania obiektowego, chcące poznać praktyczne zastosowania Kotlin
Efekty kształcenia
Uczestnik projektuje aplikacje wykorzystujące idiomy i wzorce Kotlin
Uczestnik analizuje i wdraża mechanizmy null safety oraz rozszerzenia funkcjonalności
Uczestnik implementuje logikę biznesową z użyciem programowania obiektowego i funkcyjnego
Uczestnik tworzy aplikacje współbieżne i asynchroniczne z użyciem korutyn, Flow oraz structured concurrency
Uczestnik projektuje czytelne, type-safe DSL wykorzystujące lambda with receiver i type-safe builders
Uczestnik integruje kod Kotlin z istniejącymi rozwiązaniami Java
Uczestnik pisze testy jednostkowe, właściwościowe oraz integracyjne (Kotest, MockK, Testcontainers), w tym dla kodu asynchronicznego
Uczestnik testuje i refaktoryzuje kod zgodnie z najlepszymi praktykami
Uczestnik konfiguruje środowisko pracy dla projektów Kotlin
Wymagania
Podstawowa umiejętność programowania w dowolnym języku obiektowym
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Wprowadzenie do języka Kotlin
Charakterystyka, możliwości i zastosowanie języka Kotlin
Środowisko pracy dewelopera i jego konfiguracja
REPL, scratch files, Kotlin Playground
Typy danych i konwersje
Zmienne, stałe, lateinit
Operatory
Instrukcje sterujące
Pętle i zakresy
Funkcje top-level, lokalne, infix, vararg, parametry domyślne i nazwane
Pakiety, importy, type aliases
String templates i raw strings
Istotne idiomy programistyczne
Programowanie obiektowe i system typów
Omówienie/przypomnienie najważniejszych pojęć z OOP
Klasy, konstruktory główne i pomocnicze, bloki init
Interfejsy
Specjalne typy klas (Data, Sealed, Nested, Inner, Enum, Value/Inline)
Hermetyzacja i kontrola dostępu - modyfikatory widoczności
Delegacja na poziomie klas i właściwości
Rozszerzenia typów - funkcje i właściwości rozszerzające, scope functions
Typy generyczne, wariancja (in/out), reified types
Objects, Companion Objects, idiomatyczne wzorce singleton i factory
Weryfikacja i rzutowanie typów - smart casts, is/as
Porównywanie obiektów - equals/hashCode, równość strukturalna vs referencyjna
Null safety i platform types przy współpracy z Javą
Biblioteka standardowa i interoperacyjność
Najważniejsze elementy SDK
Praca z kolekcjami - immutable vs mutable, operacje (map, filter, fold, groupBy, partition)
Sequences vs Collections - leniwa ewaluacja i wydajność
Obsługa wyjątków - try/catch jako wyrażenie, typ Result
Typy opcjonalne i bezpieczna praca z null
Adnotacje i ich wykorzystanie
Refleksja - KClass, KProperty, KFunction
Przeciążanie operatorów i konwencja invoke
Praca z datą/czasem
Interoperacyjność z Javą
Asynchroniczność i współbieżność z coroutines
Wątki vs coroutines - po co i kiedy
suspend functions i mechanizm Continuation
CoroutineScope, CoroutineContext, Dispatchers
Structured concurrency - launch, async, await, runBlocking
Job, Deferred, zarządzanie cyklem życia
Anulowanie coroutines i obsługa wyjątków
Channels - komunikacja między coroutines, producer/actor pattern
Flow - reaktywne strumienie cold
Operatory Flow (map, filter, transform, flatMapConcat/Merge/Latest, zip, combine, debounce)
StateFlow i SharedFlow - hot streams, replay, conflation
Cold vs hot streams - kiedy czego używać
Testowanie kodu z coroutines
Tworzenie DSL i zaawansowane elementy systemu typów
Inline functions, noinline, crossinline, reified
Value classes - lekkie typy domenowe i wydajność
Lambda with receiver i type-safe builders
Operator overloading w służbie DSL
Adnotacja @DslMarker - kontrola zasięgu DSL
Praktyczne przykłady - HTML builder, konfiguracja w stylu Gradle, kotlinx.html
Projektowanie własnego DSL na bazie domeny biznesowej
Context receivers / context parameters - context-oriented programming (opcjonalnie)
Testowanie i jakość kodu
JUnit z Kotlinem - konfiguracja i idiomy
Kotest - style testów (FunSpec, BehaviorSpec), assertions, data-driven testing
Property-based testing z Kotest
MockK - mocki dla finalnych klas, relaxed mocks, coEvery dla suspend
Statyczna analiza kodu - ktlint i detekt
Code coverage z Kover
Wybrane opinie
Przeczytaj pozytywne opinie pochodzące z ankiet satysfakcji z naszych szkoleń wypełnianych wyłącznie przez ich uczestników po realizacji usługi
