Kotlin is a statically typed language from JetBrains, the Czech-founded company behind IntelliJ IDEA. It was unveiled in July 2011 at the JVM Language Summit, and the question most people asked at the time is the same one this article answers: why JetBrains built Kotlin instead of using Scala, which already offered a more expressive alternative to Java on the same virtual machine. The short version is that JetBrains wanted something pragmatic, fast to compile and easy for Java teams to adopt, and nothing on the JVM ticked all three boxes.

Why JetBrains built Kotlin instead of using Scala

By 2010 JetBrains had millions of lines of Java code in its IDEs and was tired of Java's verbosity and slow evolution. The team, led by Andrey Breslav, looked at the existing JVM languages. Groovy was dynamic, which hurt tooling and performance. Scala had most of the features they wanted, but JetBrains engineers publicly cited its slow compilation and the difficulty of building great IDE support for such a complex type system. Since JetBrains sells IDEs, a language whose tooling could be first class was part of the business case: more people writing Kotlin meant more people wanting IntelliJ.

The name comes from Kotlin Island near St. Petersburg, where much of the original team worked, echoing how Java was named after an island. The compiler was open-sourced under the Apache 2 license in February 2012, and Kotlin 1.0 shipped in February 2016 with a promise of backward compatibility.

Design and key features

Kotlin's main goal was full, two-way interoperability with Java. You can call Java libraries from Kotlin and Kotlin code from Java in the same project, which let teams migrate one file at a time instead of rewriting everything. On top of that foundation Kotlin added the features Java developers had been asking for:

  • Null safety: types are non-nullable by default, and String? must be handled explicitly with ?., ?: or smart casts.
  • Data classes that generate equals, hashCode, toString and copy.
  • Extension functions, type inference, lambdas and expression-bodied functions.
  • Coroutines, stable since Kotlin 1.3 in 2018, for structured asynchronous code.
  • Multiple compilation targets: the JVM, JavaScript, WebAssembly and native binaries via LLVM.

A short Kotlin example

This snippet uses a data class, a nullable property, collection operations and the Elvis operator:

data class Language(val name: String, val year: Int, val creator: String? = null)

fun main() {
    val langs = listOf(
        Language("Kotlin", 2011, "JetBrains"),
        Language("Scala", 2004),
        Language("Java", 1995, "Sun Microsystems")
    )

    langs.filter { it.year > 2000 }
        .sortedBy { it.year }
        .forEach { println("${it.name} (${it.year}) by ${it.creator ?: "unknown"}") }
}

Where Kotlin is used

The turning point came at Google I/O 2017, when Google announced official Kotlin support for Android. In 2019 Google went further and declared Android development "Kotlin-first", and Jetpack Compose, Android's modern UI toolkit, is Kotlin-only. Today Kotlin is the default language for new Android apps.

It is far from an Android-only language, though. Spring Framework added official Kotlin support in version 5, JetBrains builds the Ktor server framework, and the Gradle Kotlin DSL became the default for new Gradle builds. Kotlin Multiplatform, declared stable in November 2023, lets teams share business logic between Android, iOS, desktop and web while keeping native UIs, and Compose Multiplatform extends that to shared interfaces.

Key milestones

YearMilestone
2011Project Kotlin announced by JetBrains
2012Compiler open-sourced under Apache 2
2016Kotlin 1.0 released
2017Official Android support announced at Google I/O
2018Kotlin Foundation formed by JetBrains and Google; coroutines stable
2019Android development becomes Kotlin-first
2023Kotlin Multiplatform declared stable
2024Kotlin 2.0 ships the new K2 compiler

Limitations

Kotlin is not perfect. Build times on large projects, especially with annotation processing, were a long-standing complaint; the K2 compiler improved them, but big Gradle builds can still be slow. Kotlin/Native and iOS interop have improved a lot, yet sharing code with Swift still involves friction. And because Java itself has picked up records, pattern matching and virtual threads, the gap Kotlin originally filled on the server is narrower than it was in 2016.

Should you learn Kotlin?

If you build Android apps, yes, without much debate. For JVM back ends it is a comfortable step up from Java with excellent IDE support, and Kotlin Multiplatform is a reasonable bet for teams that want to share code with iOS. Understanding why JetBrains built Kotlin instead of using Scala also tells you what to expect: a practical language that favors readability, tooling and gradual adoption over academic purity.

Frequently asked questions

Is Kotlin replacing Java?

On Android it largely has for new code, since Google recommends Kotlin first. On the server, Java remains enormous and keeps improving, so the two usually coexist, often in the same codebase thanks to Kotlin's interoperability.

Who owns Kotlin?

JetBrains created Kotlin and still leads its development. The Kotlin Foundation, set up by JetBrains and Google in 2018, protects the trademark and oversees the language's evolution, and the compiler is open source under the Apache 2 license.

Is Kotlin hard to learn for Java developers?

Most Java developers become productive in Kotlin within a few weeks. The syntax is more concise, but the concepts, libraries and tools are familiar, and IntelliJ IDEA can even convert Java files to Kotlin automatically as a starting point.