What is the difference between java and kotlin ?
Answer
Overview
Java is a general-purpose OOP language. Kotlin is a modern JVM language developed by JetBrains that compiles to the same bytecode as Java — making them 100% interoperable while offering major improvements.
Quick Comparison
| Feature | Java | Kotlin |
|---|---|---|
| Year introduced | 1995 | 2016 |
| Creator | Sun Microsystems (Oracle) | JetBrains |
| Null safety | ❌ Runtime NPE | ✅ Compile-time |
| Type inference | ❌ Must declare types | ✅ text |
| Data classes | Manual POJO | text |
| Functional | Limited | ✅ First-class |
| Coroutines | ❌ | ✅ |
| Extension funcs | ❌ | ✅ |
| Sealed classes | Limited | ✅ Full support |
| JVM target | ✅ | ✅ (same bytecode) |
Conciseness Comparison
java// Java — 15 lines for a simple model public class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Person(" + name + ", " + age + ")"; } }
kotlin// Kotlin — 1 line data class Person(val name: String, val age: Int)
Type Inference
java// Java — explicit types ArrayList<String> list = new ArrayList<String>();
kotlin// Kotlin — type inferred val list = mutableListOf<String>() val name = "Alice" // Kotlin knows it's a String
Functional Programming
kotlin// Kotlin — clean lambdas and higher-order functions val numbers = listOf(1, 2, 3, 4, 5) val evens = numbers.filter { it % 2 == 0 } // [2, 4] val doubled = evens.map { it * 2 } // [4, 8] val sum = doubled.sum() // 12
Sealed Classes (Pattern Matching)
kotlinsealed class Result<out T> { data class Success<T>(val data: T) : Result<T>() data class Error(val message: String) : Result<Nothing>() object Loading : Result<Nothing>() } fun handleResult(result: Result<User>) = when (result) { is Result.Success -> showUser(result.data) is Result.Error -> showError(result.message) Result.Loading -> showSpinner() }
Java-Kotlin Interoperability
kotlin// Kotlin can call Java code directly val list = java.util.ArrayList<String>() list.add("Hello") // Java can call Kotlin code with @JvmStatic, @JvmField class Utils { companion object { @JvmStatic fun greet(name: String) = "Hello, $name" } } // From Java: Utils.greet("Alice")
Summary: Kotlin is a better Java — it compiles to the same JVM bytecode, works with all Java libraries, but eliminates NullPointerExceptions, requires far less code, and adds modern features like coroutines, extension functions, and sealed classes.