Workshops
Courses
Books
Articles
Advanced Kotlin
Our special learning place
Part 1: Advanced Kotlin features
Generic variance modifiers
Exercise: Usage of generic types
The Covariant Nothing Object
Variance modifier limitations
Exercise: Generic Response
Exercise: Generic Consumer
Interface delegation
Exercise: ApplicationScope
Property delegation
Exercise: Lateinit delegate
The lazy delegate
Exercise: Blog Post Properties
The observable delegate
A map as a delegate
Exercise: Mutable lazy delegate
Kotlin Contracts
Exercise: Coroutine time measurement
Part 2: Kotlin on different platforms
Java interoperability
Annotation targets
JvmName
Unit
Exercise: Adjust Kotlin for Java usage
Using Kotlin Multiplatform
Multiplatform libraries
A multiplatform mobile application
Exercise: Multiplatform LocalDateTime
JavaScript interoperability
Exercise: Migrating a Kotlin/JVM project to KMP
Part 3: Metaprogramming
Reflection
Class reference
Referencing types
Exercise: Function caller
Exercise: Object serialization to JSON
Exercise: Object serialization to XML
Exercise: DSL-based dependency injection library
Exercise: Mocking library
Annotation processing
Exercise: Annotation Processing execution measurement wrapper
Kotlin Symbol Processing
Exercise: KSP execution measurement wrapper
Kotlin Compiler Plugins
Static Code Analysers