Looking back after three years of Kotlin in production, this is a report about the adoption of the language in our Java codebases.

When we first tried Kotlin back in 2013, it seemed just a fancy new exotic language. Two years later v1.0 was close, so we adopted Kotlin for our test automation suite. Still unsure if Kotlin would stand the test of time. Yet not knowing if the tooling around the language would come anywhere close to what we had with Java. IDE support was weak, interop was questionable, and new releases came flying every month or two. Fast forward to 2019, the Kotlin ecosystem has become more stable and mature. Kotlin coexists with Java in almost every codebase we have.

Contents:

  • Mixing Kotlin within a Java codebase: benefits and challenges

  • Java vs Kotlin in terms of refactoring and TDD

  • Top language features that are not related to syntax

  • Caveats and dangers for Java developers

  • Strategies for adoption: inside-out, outside-in, random and wild, test-only

  • Tooling: IDEs, test frameworks

  • Build systems, static code analysis, CI/CD integration

  • Learning curve: paradigm shift or just a better Java?

  • Human factors during the adoption of Kotlin

  • Conclusion: code quality, bug rate, developer hapiness

The language provides a concise and safe way of coding, currently intermixed with 500 KLOC of Java. In this talk, we introduce our strategy and our experience with Kotlin so far. We want to tell some good, some bad and some funny stories along our journey with Kotlin.

Rusi Filipov Lindenbaum GmbH

Rusi Filipov is a software engineer with a background in extreme programming, domain-driven design, legacy codebases and clean code. He likes test-driven development, working in pairs, challenging refactorings and simple designs. Some of his heros are Kent Beck, Robert C. Martin, Martin Fowler und Michael Feathers. Besides coding, he likes philosophy and has a passion for jiu-jitsu and wrestling.

Igor Khvostenkov Lindenbaum

Igor Khvostenkov is a engineer at Lindenbaum GmbH and Oracle certified Java developer. As a programmer I write mostly in Kotlin and Java, but also in Go and Erlang. I am a strong believer in open source software and agile methodologies. During my spare time I travel to remote corners of the world.