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 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 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.