Java VS Kotlin

hyihyi·2024년 7월 7일

Kotlin을 쓴지 1년이 넘었지만 Kotlin을 써야 하는 이유를 다시 정리해봤다.

CodeLab
Google은 Google I/O 2019에서 코틀린을 공식적으로 안드로이드 개발을 위한 메인 언어로 지정했다.

📖 Android 개발이 Kotlin 우선인 이유

1) 표현력이 높고 간결함

적은 노력으로 많은 작업을 할 수 있다.

2) 더 안전한 코드

Kotlin에는 null 포인터 예외와 같은 일반적인 프로그래밍 실수를 방지하는 데 도움이 되는 여러 언어 기능이 있다. Kotlin 코드가 포함된 Android 앱은 다운될 가능성이 20% 낮다.

3) 상호 운용 가능

Kotlin은 자바와 100% 상호 운용된다.

4) 구조화된 동시 실행

Kotlin 코루틴을 사용하면 비동기 코드를 차단 코드처럼 쉽게 사용할 수 있다.

📖 자바 코드를 Kotlin으로 변환할 때 Kotlin 언어 규칙

1. Nullability Handling (널 처리):

(Java)어노테이션, 라이브러리 -> (Kotlin)?, !!
코틀린은 타입 시스템 수준에서 null 가능성을 처리하지만 자바는 지원하지 않는다.

2. Singleton (싱글톤):

(Java)정적 변수, 직접 구현 -> (Kotlin)object

3. Data class (데이터 클래스):

(Java)equals, hashCode, toString 등의 메서드들을 수동 구현 -> (Kotlin)data class 키워드 사용

4. Handling Strings (문자열 처리):

(Java)+ 연산자, stringBuilder -> (Kotlin)문자열 템플릿($), 다중 라인 문자열(""")

5. Elvis Operator (엘비스 연산자):

(Java) -> (Kotlin)

6. Destructuring (디스트럭처링):

(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
}

7. Properties and Backing Properties (속성과 백킹 속성):

(Java)게터와 세터 메서드를 수동 작성 -> (Kotlin)클래스의 속성을 선언할 때 기본으로 게터, 세터 자동 생성. 필요에 따라 백킹 속성 사용 가능

8. Default Arguments and Named Parameters (기본 인자 및 명명된 매개변수):

(Java)오버로딩/매개변수의 순서를 반드시 지켜야 함 -> (Kotlin)매개변수 기본 값 지정 가능/매개변수 이름 명시 가능

9. Working with Collections (컬렉션 다루기):

(Java)stream API 사용 -> (Kotlin)listOf/arrayOf, fliter, map, sorted 메서드 사용

10. Extension Functions (확장 함수):

(Java)유틸리티 클래스 사용 -> (Kotlin)확장 함수 사용

11. Top-level Functions and Parameters (최상위 함수 및 매개변수):

(Java)모든 함수는 클래스 내부에 정의해야 함 -> (Kotlin)최상위 함수 정의 가능
함수를 직접 파일 수준에서 정의할 수 없다.
*최상위 함수 : 클래스나 객체 내부가 아닌 파일 수준에서 정의된 함수. 특정 클래스나 객체에 속하지 않으며, 패키지에 직접 속함

12. let, apply, with, run Keywords:

(Java)람다 표현식, 메서드 참조, Optional, 빌더 패턴 -> (Kotlin)키워드 사용

profile
내가 이해하기 쉽게 쓰는 블로그

0개의 댓글