Kotlin Development

Kotlin is an object-oriented language that runs on the Java Virtual Machine. Kotlin is also a functional language, and combines the features and benefits of OO and functional programming. This course provides a fast-paced introduction to the language for developers with experience Java or similar languages (e.g. C# or C++), and then delves deeper into idiomatic uses of Kotlin in practice.

Duration

4 days

 

Prerequisites

  • Experience using Java or a similar contemporary object-oriented language

What you'll learn

  • Writing and running Kotlin programs
  • Object orientation in Kotlin
  • Functional programming in Kotlin
  • Implementing Domain-Specific Languages
  • Using concurrency
  • Best practices and advanced techniques

Course details

Introduction to Kotlin

  • Overview of Kotlin
  • Kotlin tools
  • Writing a simple Kotlin program
  • Using the interactive shell
  • Using the online playground

Core Kotlin Syntax

  • Types and variables
  • Literals
  • Decision making and looping
  • Exceptions
  • Enumerations
  • Regular expressions

Functions

  • Class-level and top-level functions
  • Local functions
  • Extension functions and properties
  • Variable-argument functions

Object-Oriented Programming in Kotlin

  • Classes and objects
  • Properties, getters and setters
  • Open, final, and abstract modifiers
  • Construction techniques
  • Data classes
  • Class delegation and the “by” keyword
  • Singleton objects

A Closer Look at Kotlin Types

  • Nullability
  • Primitive types
  • Nullable primitives
  • Collections
  • Arrays

Kotlin Techniques

  • Loops and iterators
  • Destructuring
  • Delegated properties
  • Operator overloading

Functional Programming

  • Overview of functional programming
  • Lambdas and member references
  • Functional APIs and collections
  • Lazy collection operations

Going Further with Functional Programming

  • Higher-order functions
  • Inlining
  • Control flow

Domain-Specific Languages

  • Overview of DSLs
  • Using lambdas and receivers in DSLs
  • Best practices

The Kotlin Type System

  • Generics
  • Constraints
  • Covariance and contravariance
  • Defining and using annotations
  • Reflection

Concurrency

  • Creating and synchronizing threads
  • Callbacks
  • Futures
  • Coroutines and channels