Software development on the JVM has changed beyond recognition over the past few years. Until recently the Java language and JEE platform remained the base off which a vibrant ecosystem of open source frameworks was built. But this foundation proved unable to cope with challenges such as cloud computing, multi-core hardware, microservices, machine learning, reactive design and the proliferation of client devices.
Modern JVM developers favour languages like Kotlin, build services on non-blocking servers like Netty, transfer data via event streams and rely on cloud providers to help manage scalability and fault tolerance. This has driven the growth of a new generation of reactive frameworks such as Ktor, HTTP4K, Kafka and Redis. Agile processes remain, but incorporate new ideas (like Property Based Testing) and now encompass the full software lifecycle (via tools like Docker and Kubernetes).
What you will learn
By the end of the course delegates will be able to
- Program using all the features of the Kotlin language
- Write build files using the new Kotlin DSL in Gradle V5
- Create your own Kotlin DSL’s for custom configuration
- Use Arrow to enhance Kotlin’s support for Functional Types
- Apply TDD, BDD and Property Based Testing in Kotlin
- Write RESTful Microservices using Ktor and HTTP4K
- Link Microservices via messaging and event streams in Kafka
- Deploy sets of services via both Docker and Kubernetes
- Access NoSQL data stores from services via reactive APIs
As with all our trainings, the course will be a mix of theory and practical, hands-on exercises.
The course is divided up into three components:
Part 1 – The Kotlin Language and Key Libraries
Initially delegates will complete an accelerated introduction to the Kotlin language and ecosystem. This will cover all the OO and FP components of the language, plus advanced topics such as creating DSL’s and ensuring interoperability with legacy Java code. They will also gain experience of popular libraries such as KotlinTest, Gradle 5, Arrow and TornadoFX.
Part 2 – Creating Microservices in Kotlin
During the second part of the course delegates will use the Ktor and HTTP4K frameworks to create RESTful services. All aspects of creating robust endpoints will be covered, with particular emphasis on Unit Testing. Once the services have been created delegates will learn how they can be integrated into a coherent system via the Kafka event broker and NoSQL databases such as Redis.
Part 3 – Sample Project
The final part of the course will consist of a case study, where delegates will be led though creating and deploying a set of services to implement a sample system. As part of the deployment process they will be introduced to the basics of Docker and Kubernetes. Examples of deploying to cloud providers like AWS will also be given.
Delegates must have at least five years experience of software development in industry using either Java or C#. They should be familiar with the basics of distributed system design and REST, ideally by working on projects using frameworks like Spring Boot and the .NET Web API.