May 21
9:00 – 17:00
The workshops will take place on May 21. Please note that the workshops will run simultaneously (from 9:00 am to 5:00 pm), so you should only pick one workshop to attend.
In this workshop, you’ll learn everything you need to know about how to be productive with coroutines in Kotlin. We’ll start with the basics of asynchronous programming, its differences from blocking code, and the concepts of suspending functions and coroutines. We’ll explore coroutine contexts, concurrent decomposition of work via deferreds, and structured concurrency with coroutine scopes.
The second part of the workshop will be devoted to Kotlin Flows. We’ll study how Kotlin Flows are designed on a basic level, learn the difference between hot and cold flows, discuss their typical usage patterns, and explore how they incorporate ideas from reactive streams. To deepen our understanding, we’ll also take a peek at some of the implementations behind flows and collectors. Throughout, we’ll see how they help you in writing safe and reliable concurrent systems, and how modern applications can use them to work with asynchronous streams of data, manage system states, and broadcast events.
Through this workshop, you’ll enhance your coroutines-related vocabulary, understand how to spot and avoid common problems, and be able to effectively and confidently use coroutines and flows in your own projects.
In this workshop, you’ll learn everything you need to know about how to be productive with coroutines in Kotlin. We’ll start with the basics of asynchronous programming, its differences from blocking code, and the concepts of suspending functions and coroutines. We’ll explore coroutine contexts, concurrent decomposition of work via deferreds, and structured concurrency with coroutine scopes.
The second part of the workshop will be devoted to Kotlin Flows. We’ll study how Kotlin Flows are designed on a basic level, learn the difference between hot and cold flows, discuss their typical usage patterns, and explore how they incorporate ideas from reactive streams. To deepen our understanding, we’ll also take a peek at some of the implementations behind flows and collectors. Throughout, we’ll see how they help you in writing safe and reliable concurrent systems, and how modern applications can use them to work with asynchronous streams of data, manage system states, and broadcast events.
Through this workshop, you’ll enhance your coroutines-related vocabulary, understand how to spot and avoid common problems, and be able to effectively and confidently use coroutines and flows in your own projects.
Sebastian Aigner,
JetBrains
Vsevolod Tolstopyatov,
JetBrains
An all-day hands-on session,
May 21, 9:00 – 17:00
€715.00
incl. VAT €893.75
This is an intermediate/advanced workshop for experienced Kotlin Multiplatform developers. It is aimed at developers who have built projects with Kotlin Multiplatform and Jetpack Compose / Compose Multiplatform and now want to progress onto more advanced topics.
The workshop aims to equip attendees with the skills to write high-quality code and apps using Kotlin Multiplatform. The workshop will address the following topics:
You will need to bring a MacBook along with you to participate in all the practical exercises. Installation instructions will be provided one week prior to the workshop.
This is an intermediate/advanced workshop for experienced Kotlin Multiplatform developers. It is aimed at developers who have built projects with Kotlin Multiplatform and Jetpack Compose / Compose Multiplatform and now want to progress onto more advanced topics.
The workshop aims to equip attendees with the skills to write high-quality code and apps using Kotlin Multiplatform. The workshop will address the following topics:
You will need to bring a MacBook along with you to participate in all the practical exercises. Installation instructions will be provided one week prior to the workshop.
Pamela Hill,
JetBrains
Konstantin Tskhovrebov,
JetBrains
An all-day hands-on session,
May 21, 9:00 – 17:00
€715.00
incl. VAT €893.75
Ktor is a lightweight and flexible toolkit for building HTTP applications. This workshop will use the Kotlin programming language, the Ktor framework, the Exposed database access library, and several other Kotlin and Java libraries to build a feature-complete web application.
We’ll start with the basics by exploring the Ktor framework and learning how to build a simple web application using essential functions. We’ll cover topics like handling HTTP requests, working with WebSockets, database access, authentication, logging, and deployment.
For testing, we will look into the APIs that Ktor provides but also use the Testcontainers library for integration testing. Finally, we will explore the API for writing plugins and use it to create a simple plugin for our web application.
By the end of the workshop, you’ll be able to:
This will be a fast-paced workshop where attendees will spend most of their time coding. You will walk away armed with a cookbook of various Ktor recipes for building web applications.
Ktor is a lightweight and flexible toolkit for building HTTP applications. This workshop will use the Kotlin programming language, the Ktor framework, the Exposed database access library, and several other Kotlin and Java libraries to build a feature-complete web application.
We’ll start with the basics by exploring the Ktor framework and learning how to build a simple web application using essential functions. We’ll cover topics like handling HTTP requests, working with WebSockets, database access, authentication, logging, and deployment.
For testing, we will look into the APIs that Ktor provides but also use the Testcontainers library for integration testing. Finally, we will explore the API for writing plugins and use it to create a simple plugin for our web application.
By the end of the workshop, you’ll be able to:
This will be a fast-paced workshop where attendees will spend most of their time coding. You will walk away armed with a cookbook of various Ktor recipes for building web applications.
Anton Arhipov,
JetBrains
Leonid Stashevskii,
JetBrains
An all-day hands-on session,
May 21, 9:00 – 17:00
€715.00
incl. VAT €893.75
Kotlin supports both Object-oriented and functional styles of programming, but what should we do when we have OO code that should be functional? Refactor, of course!
In this workshop, Nat and Duncan, the authors of Java to Kotlin: A Refactoring Guidebook, take a web application and introduce techniques to gradually and safely migrate the code to the functional style better suited to today’s architectures. Topics include:
Kotlin supports both Object-oriented and functional styles of programming, but what should we do when we have OO code that should be functional? Refactor, of course!
In this workshop, Nat and Duncan, the authors of Java to Kotlin: A Refactoring Guidebook, take a web application and introduce techniques to gradually and safely migrate the code to the functional style better suited to today’s architectures. Topics include:
Duncan McGregor
Consulting Developer
Nat Pryce
Consulting Developer
An all-day hands-on session,
May 21, 9:00 – 17:00
€715.00
incl. VAT €893.75
If you want to get the most out of Spring Boot in terms of low latency, high-throughput, and resource efficiency, there is no way around virtual threads and/or reactive libraries like Webflux.
However, both won’t get you far: Virtual threads are limited to non-blocking operations, and WebFlux — even though offering all reactive qualities, like non-blocking, parallelism, streaming, etc. — will give you a lot of headaches due to its complexity, bad readability, and maintainability.
In this workshop, you’ll learn how Spring Boot’s coroutine support will wipe out all the downsides of the ‘raw’ WebFlux approach or the limitations of virtual threads and provide you with the best of both worlds: non-blocking reactive characteristics without the complexity.
During the workshop, we will explore Kotlin’s reactive building blocks, such as coroutines and flows, and apply them in Spring Boot. By building a non-blocking API in Spring Boot from scratch, you’ll learn how to:
In addition, we will explore virtual threads in-depth and see how they can leverage the power of coroutines even more.
At the end of the workshop, you’ll know all the ins and outs of programming in Spring Boot with coroutines while having experienced the tremendous benefits they offer over raw virtual threads or WebFlux.
With the knowledge you gain, you can enlighten your Spring Boot project with coroutines the very next day.
If you want to get the most out of Spring Boot in terms of low latency, high-throughput, and resource efficiency, there is no way around virtual threads and/or reactive libraries like Webflux.
However, both won’t get you far: Virtual threads are limited to non-blocking operations, and WebFlux — even though offering all reactive qualities, like non-blocking, parallelism, streaming, etc. — will give you a lot of headaches due to its complexity, bad readability, and maintainability.
In this workshop, you’ll learn how Spring Boot’s coroutine support will wipe out all the downsides of the ‘raw’ WebFlux approach or the limitations of virtual threads and provide you with the best of both worlds: non-blocking reactive characteristics without the complexity.
During the workshop, we will explore Kotlin’s reactive building blocks, such as coroutines and flows, and apply them in Spring Boot. By building a non-blocking API in Spring Boot from scratch, you’ll learn how to:
In addition, we will explore virtual threads in-depth and see how they can leverage the power of coroutines even more.
At the end of the workshop, you’ll know all the ins and outs of programming in Spring Boot with coroutines while having experienced the tremendous benefits they offer over raw virtual threads or WebFlux.
With the knowledge you gain, you can enlighten your Spring Boot project with coroutines the very next day.
Urs Peter
Xebia
An all-day hands-on session,
May 21, 9:00 – 17:00
€715.00
incl. VAT €893.75
This workshop is designed for all Kotlin developers who need simple and convenient tools within their native ecosystem to assist them when working with data, understanding its nature, performing any necessary processing, and presenting the results to their team or stakeholders as a report or chart.
In this workshop, you’ll learn how to build data processing pipelines in your applications. We’ll explore the best practices for extracting data from various sources, aggregating and transforming it, and then exporting it as a collection of data classes, displaying it as tables, or visualizing it with insightful charts.
By the end of the workshop, you’ll be able to:
This workshop is designed for all Kotlin developers who need simple and convenient tools within their native ecosystem to assist them when working with data, understanding its nature, performing any necessary processing, and presenting the results to their team or stakeholders as a report or chart.
In this workshop, you’ll learn how to build data processing pipelines in your applications. We’ll explore the best practices for extracting data from various sources, aggregating and transforming it, and then exporting it as a collection of data classes, displaying it as tables, or visualizing it with insightful charts.
By the end of the workshop, you’ll be able to:
Aleksei Zinovev
JetBrains
Jolan Rensen
JetBrains
An all-day hands-on session,
May 21, 9:00 – 17:00
€715.00
incl. VAT €893.75