Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

예제로 살펴보는 안드로이드 개발에서 Java와 Kotlin의 차이점

안드로이드 개발에서 Java와 Kotlin의 차이점

코틀린(Kotlin)은 자바(Java) 대비 다양한 개선점을 갖추고 있어 안드로이드 공식 개발 언어로 채택되었습니다. 대표적인 장점은 다음과 같습니다.

1. 더 적은 코드량으로 간결한 개발 가능

동일한 기능을 구현할 때 자바보다 훨씬 적은 코드 줄 수로 작성할 수 있어 개발 생산성이 크게 향상됩니다. 특히 뷰(View)를 다룰 때 그 차이가 두드러집니다.

Java:
TextView displayText = (TextView) findViewById(R.id.textView);
displayText.setText("Hello World");

Kotlin:
textView.setText("Hello World")

2. 악명 높은 NullPointerException의 컴파일 타임 방지

자바 개발자를 괴롭히던 널 포인터 예외(NullPointerException)를 코틀린은 컴파일 시점에 사전에 차단합니다. 널 허용 여부를 타입 시스템에서 명확하게 구분하기 때문입니다.

var value: String = "abc"

// 컴파일 오류 발생
value = null

3. POJO 대신 데이터 클래스(Data Class) 제공

자바에서는 데이터를 담는 POJO 클래스를 만들 때 getter, setter, equals(), hashCode(), toString() 등을 일일이 작성해야 하지만, 코틀린은 단 한 줄로 데이터 클래스를 정의할 수 있습니다.

data class User(val name: String, val age: Int)

Java와 Kotlin의 주요 차이점 비교

다음 표는 자바와 코틀린의 핵심적인 문법 및 설계 철학 차이를 정리한 것입니다.

번호구분JavaKotlin
1예외 처리Checked Exception을 사용해 예외를 처리합니다.Checked Exception이 없으며, 컴파일 타임 오류로 처리합니다.
2널(Null) 처리널 검사가 강제되지 않아 널 처리를 하지 않으면 NullPointerException이 발생합니다.컴파일 시점에 널 검사를 강제합니다.
3Non-Private 필드클래스 멤버로 non-private 필드를 가질 수 있습니다.non-private 필드를 허용하지 않습니다.
4배열배열은 공변(covariant)입니다.배열은 불변(invariant)입니다.
5삼항 연산자삼항 연산자(?:)를 지원합니다.삼항 연산자를 지원하지 않습니다.

참고로 코틀린에서 삼항 연산자가 없는 대신 if가 하나의 식(expression)으로 동작하기 때문에, val result = if (condition) a else b 형태로 동일한 기능을 더 읽기 쉽게 구현할 수 있습니다. 이처럼 코틀린은 자바의 장점을 유지하면서도 안전성과 간결성을 크게 개선한 언어라고 할 수 있습니다.