This episode traces Kotlin's history from its birth at JetBrains to becoming Android's official language, compares Kotlin with Java, Scala, and Swift, and breaks down the conciseness, null-safety, and interoperability advantages that make it widely adopted in the real world.

Episode 1 opens the history behind Kotlin: how a language born at JetBrains could become the official language for Android and the top choice for modern backend development. You'll also see an honest comparison with Java, Scala, and Swift, plus the advantages that make Kotlin worth learning.
The first question that often comes up: why not Java? The answer is productivity. Kotlin offers a more concise syntax, built-in null-safety, and full interoperability with Java — a combination that makes it both comfortable and safe to use in production.
By the end of this episode you'll have strong reasons to continue the series, and you'll know when to choose Kotlin over other JVM languages.
Kotlin was developed by JetBrains, the company behind IntelliJ IDEA, and work began in 2011. The name Kotlin comes from an island in Russia, following the tradition of naming programming languages after islands like Java and Groovy. After a long development period, Kotlin 1.0 was officially released in February 2016.
The big turning point came in 2017, when Google announced Kotlin as a first-class language for Android. Adoption exploded from that point on: the majority of Android developers switched to Kotlin within a few years of the announcement, and that number keeps growing today.
Kotlin 2.0, released in 2024, brought the K2 compiler as the default. K2 was rewritten from scratch, delivering faster compilation, more efficient memory usage, and a foundation for new language features. The compile command stays the same as before:
kotlinc -versionIf you run kotlinc -version and see a 2.x version, the K2 compiler is already active. This matters because episode 15 will cover how K2 changes build performance and what it means for your projects.
Kotlin is often called "a more modern Java". Both run on the JVM and are fully interoperable, but Kotlin's syntax is far more concise. Look at a simple data class example:
data class Pengguna(val nama: String, val umur: Int)That single line produces a class with getters, setters, equals, hashCode, and toString — in Java it takes dozens of lines of boilerplate. This is a concrete example of the conciseness advantage you'll feel in episode 4.
A more honest comparison shows up in real code. A Java class for storing simple data needs a constructor, getters, setters, equals, hashCode, and toString that can run to dozens of lines:
public class Pengguna {
private final String nama;
private final int umur;
public Pengguna(String nama, int umur) {
this.nama = nama;
this.umur = umur;
}
public String getNama() {
return nama;
}
public int getUmur() {
return umur;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Pengguna)) return false;
Pengguna p = (Pengguna) o;
return umur == p.umur && nama.equals(p.nama);
}
@Override
public int hashCode() {
return java.util.Objects.hash(nama, umur);
}
@Override
public String toString() {
return "Pengguna{" + "nama='" + nama + '\'' + ", umur=" + umur + '}';
}
}The Java code above produces the same behavior as a single-line data class in Kotlin. This isn't merely a matter of style preference — less boilerplate means fewer places for bugs to hide and faster code reviews, two things that matter enormously in large projects.
Scala also runs on the JVM with strong functional-style support, but it has a steep learning curve and compilation speed is often a source of complaints. Kotlin chooses the middle path: functional and OOP without sacrificing simplicity. For teams just migrating from Java, Kotlin is far easier to absorb and adopt.
Swift is the primary language for iOS development, and you'll see many similarities with Kotlin: both are modern, null-safe, and enjoyable to write. The difference lies in the ecosystem: Swift is tied to Apple platforms, while Kotlin is free to run on the JVM, Android, JavaScript, and Native through Kotlin Multiplatform — a topic covered in episode 12.
Kotlin trims boilerplate without removing expressiveness. String templates, type inference, and default arguments make code shorter and easier to read. Concise code means fewer places for bugs to hide and faster reviews.
Kotlin's type system distinguishes nullable and non-nullable types at compile time. The infamous Java NullPointerException can be prevented at the compilation level — a feature you'll explore in depth in episode 6. This is one of the main reasons teams migrate from Java.
Kotlin can call Java libraries and vice versa without adapters. You can migrate a Java project incrementally, file by file, as discussed in episode 17. This interoperability also means the entire Java library ecosystem is open to Kotlin projects.
Kotlin's footprint is very broad in the real world:
.kts files can be run directly with the kotlin script.kts command.With this map, your decision to learn Kotlin isn't just about one platform — it's an investment that applies across many areas of software development.
Episode 1 puts Kotlin in the right context: born at JetBrains, rising to become Android's official language, and continuing to evolve through the K2 compiler. You also now understand its position relative to Java, Scala, and Swift, plus the core advantages you'll feel throughout this series.
The key takeaways:
In episode 2 we'll discuss the core concepts and architecture of the Kotlin language — program structure, how Kotlin is compiled into bytecode and interacts with the JVM, the type system along with null-safety, and the concurrency model with coroutines. This is the technical foundation used throughout all the following episodes.