Kotlin을 쓴지 1년이 넘었지만 Kotlin을 써야 하는 이유를 다시 정리해봤다.
CodeLab
Google은 Google I/O 2019에서 코틀린을 공식적으로 안드로이드 개발을 위한 메인 언어로 지정했다.
적은 노력으로 많은 작업을 할 수 있다.
Kotlin에는 null 포인터 예외와 같은 일반적인 프로그래밍 실수를 방지하는 데 도움이 되는 여러 언어 기능이 있다. Kotlin 코드가 포함된 Android 앱은 다운될 가능성이 20% 낮다.
Kotlin은 자바와 100% 상호 운용된다.
Kotlin 코루틴을 사용하면 비동기 코드를 차단 코드처럼 쉽게 사용할 수 있다.
(Java)어노테이션, 라이브러리 -> (Kotlin)?, !!
코틀린은 타입 시스템 수준에서 null 가능성을 처리하지만 자바는 지원하지 않는다.
(Java)정적 변수, 직접 구현 -> (Kotlin)object
(Java)equals, hashCode, toString 등의 메서드들을 수동 구현 -> (Kotlin)data class 키워드 사용
(Java)+ 연산자, stringBuilder -> (Kotlin)문자열 템플릿($), 다중 라인 문자열(""")
(Java) -> (Kotlin)
(Java) -> (Kotlin)
데이터 클래스의 프로퍼티에 접근하기 쉽다.
아래는 파라미터로 전달된 값을 분해할 때의 예시
data class Person(val name: String, val age: Int)
fun printPersonInfo(person: Person) {
val (name, age) = person
println("Name: $name, Age: $age")
}
fun main() {
val person = Person("John", 25)
printPersonInfo(person)
// Output: Name: John, Age: 25
}
(Java)게터와 세터 메서드를 수동 작성 -> (Kotlin)클래스의 속성을 선언할 때 기본으로 게터, 세터 자동 생성. 필요에 따라 백킹 속성 사용 가능
(Java)오버로딩/매개변수의 순서를 반드시 지켜야 함 -> (Kotlin)매개변수 기본 값 지정 가능/매개변수 이름 명시 가능
(Java)stream API 사용 -> (Kotlin)listOf/arrayOf, fliter, map, sorted 메서드 사용
(Java)유틸리티 클래스 사용 -> (Kotlin)확장 함수 사용
(Java)모든 함수는 클래스 내부에 정의해야 함 -> (Kotlin)최상위 함수 정의 가능
함수를 직접 파일 수준에서 정의할 수 없다.
*최상위 함수 : 클래스나 객체 내부가 아닌 파일 수준에서 정의된 함수. 특정 클래스나 객체에 속하지 않으며, 패키지에 직접 속함
(Java)람다 표현식, 메서드 참조, Optional, 빌더 패턴 -> (Kotlin)키워드 사용