이름의 유래: Kotlin 이름은 개발 당시 JetBrains의 R&D 센터가 위치했던 상트페테르부르크 근처의 코틀린(Ко́тлин) 섬에서 따왔습니다.
출시: Kotlin은 IntelliJ IDEA의 개발사 JetBrains 에서 2011년에 공개한 오픈 소스 프로그래밍 언어입니다.
JVM 기반: Kotlin은 JVM(Java Virtual Machine)에서 실행되며, Java와 유사한 문법을 가지고 있지만, 더 간결하고 다양한 기능을 제공합니다.
안드로이드 공식 언어: 2017년에 구글이 Kotlin을 안드로이드의 공식 언어로 추가했습니다. 2019년 1월부터 구글 내부의 안드로이드 프로젝트에서도 Kotlin을 사용하기 시작하면서, 안드로이드 공식 문서의 샘플 코드도 주로 Kotlin으로 제공됩니다.
간결한 문법: Kotlin은 간결한 문법을 제공하여 코드의 가독성을 높이면서도 런타임 오버헤드가 거의 없습니다.
널 안정성: Kotlin은 널 안정성을 제공하여, 변수는 Nullable과 NotNull로 구분됩니다. 변수 선언 시 '?'를 붙여 Nullable로 만들 수 있습니다.
var nullableString: String? = "Hello" var nonNullableString: String = "World"
예외처리 강제 없음: Kotlin은 예외처리를 강제하지 않습니다. 예를 들어, JSON 객체를 만들 때 try-catch 블록을 필수로 사용하지 않아도 됩니다.
모든 함수가 리턴값을 가짐: Kotlin의 모든 함수는 리턴값을 가집니다. Unit(Java의 void와 유사)을 리턴하는 함수도 있습니다.
fun sayHello(): Unit { println("Hello") }
Primitive 타입은 객체로 취급: Kotlin에서는 모든 primitive 타입이 객체로 취급됩니다. 예를 들어, Int 타입의 변수는 객체 메서드를 호출할 수 있습니다.
val number: Int = 10 println(number.toString()) // "10"
확장 함수와 연산자 오버로딩: Kotlin은 확장 함수와 연산자 오버로딩을 지원합니다.
fun Int.power(x: Int): Int { return this.toDouble().pow(x).toInt() } val result = 3.power(4) // 81
==, != 연산자는 내용물 비교: Kotlin의 ==와 != 연산자는 객체의 내용물을 비교합니다. Java의 equals() 메서드와 동일한 동작을 합니다.
val string1 = "Hello" val string2 = "Hello" println(string1 == string2) // true println(string1 === string2) // false, if different references
정적 메서드 없음: Kotlin에서는 정적 메서드가 없으며, 대신 companion object를 사용하여 정적 멤버를 정의합니다.
class MyClass { companion object { fun myMethod() = "Hello" } } println(MyClass.myMethod()) // "Hello"
Java와의 100% 상호 운용성: Kotlin은 Java와 완전히 상호 운용됩니다. Java 코드를 Kotlin에서 사용할 수 있고, 그 반대도 가능합니다.
// Java 코드 public class JavaClass { public static String greet() { return "Hello from Java"; } } // Kotlin 코드 fun main() { println(JavaClass.greet()) // "Hello from Java" }
open 키워드로 클래스 상속: Kotlin에서는 기본적으로 클래스가 final로 선언됩니다. 클래스 상속을 허용하려면 open 키워드를 사용해야 합니다.
open class Parent class Child : Parent()
참고자료
나무위키: https://namu.wiki/w/Kotlin