티스토리 뷰
구글에서 코틀린을 공식 언어로 추가하면서 Java로 열심히 개발했던 안드로이드 개발자에게는 새로운 언어를 배워야하는 환경이 조정되고 있습니다.
이미 많은 개발자분들은 자바 소스로 구성된 프로젝트를 코틀린 소스로 변경하고 운영중일 것입니다.
'굳이 코틀린으로 변경할 필요 있겠어?' 라는 생각으로 자바 소스를 계속 유지하고 계신 분들도 있을 것입니다.
코틀린 vs Java
코틀린과 Java을 비교하는 방법 중 Java의 단점을 코틀린이 보완 할 수 있는지 확인하는 것도 방법이라 생각합니다.
이번 포스트는 Java와 다른 코틀린의 장점인 크게 2가지로 Null 안정성과 코드 간소화의 주제로 진행합니다.
Null 안정성
Java 개발 하다보면 가장 많인 접하는 Exception은 Null Point Exception 으로 생각됩니다.
Java는 NullPointException을 방지하기 위해서 안드로이드 서포트 라이버러리의 @Nullable, @NonNull 어노테이션을 사용하여 객체의 널 허용 여부를 표시하였습니다. 하지만 정적 분석 도구에서만 지원하므로, 컴파일 단계에서는 여전히 널 포인터 예외가 발생할 소지가 있습니다.
컴파일 단계에서 발생할 수 있는 NullPointException을 사전에 방지할 수 있도록 옵셔널(?) 을 제공하고 있습니다.
[Java]
[Kotlin]
NullPointException 을 유발할 수있게 구성되어 있는 Java 소스코드와 Kotlin의 안전한 호출(?.) 연산자로 변경 후 안정성이 보장된 Kotlin소스을 예시로 확인 할 수 있습니다.
Kotlin Null 처리에 대한 자세한 것은 Kotlin 맛보기 - Chapter1. 널 안정성 을 참고해주세요.
코드 간소화
프로그래머의 코드 스타일에 따라서 코드의 양 또는 Depth 가 커지는 경우가 있습니다.
Kotlin 예제 소스을 통하여 코드의 가독성을 높이는 방법을 공유하겠습니다.
간소화 할 수 있는 방법 중 하나는 람다 사용입니다. 이미 안드로이드에서는 Java8 사용할 수 있으며 프로젝트에서 Java8을 사용하고 있다면 무슨 차이가 있는지 의문을 갖을 것입니다. 하지만 코틀린을 도입 시 람다의 사용과 활용은 보다 자유로워집니다.
[Java]
[Kotlin]
버튼을 클릭 시 "Ready" 라는 Toast 메세지를 호출하는 로직을 Java와 Kotlin 으로 표현하였습니다. 소스에서 볼 수 있듯이 Java 는 콜백을 위해서 interface 생성 및 활용을 해야합니다. Java는 변수를 사용하려면 정확한 자료형을 표시 해야 합니다.
하지만 Kotlin은 별도의 interface을 만들지 않고 Fuction의 파라미터로 람다식을 선언하여 사용할 수 있습니다. Kotlin는 자동 형변환 가능한 자료형인 var(또는 val)을 사용하여 코드작성의 편의성을 제공하고 있습니다.
마무리
Kotlin을 사용하면 Null 안정성과 코드의 가독성을 높여 협업의 능률증가의 효과를 얻을 수 있습니다.
언급한 두 가지 외에도 코투틴 등 코틀린에서 제공하는 기능으로 통한 업무 능률 성장의 장점이 있습니다.
아직 Java을 사용하신다면 Kotlin 도입을 고민해 필요가 있어 보입니다.
'프로그래밍 > Android' 카테고리의 다른 글
MacBookPro M1 환경에서 Android Studio 사용하기 (0) | 2021.07.17 |
---|---|
[이슈] sing WebView from more than one process at once with the same data directory... (2) | 2021.04.09 |
Corner Round View 만드는 방법 (0) | 2021.02.15 |
접근성(Voice Assistant) (0) | 2021.01.03 |
kapt 증분 빌드 에러 (0) | 2020.12.08 |
- 안드로이드
- Kotlin
- 선교
- 탁구
- IT
- RXjava
- 패턴
- missioon
- 스코어헬퍼
- MCC
- 코틀린
- swift
- 점수판
- issue
- 고시문
- Android Studio
- 알고리즘
- push
- 디자인패턴
- DI
- 미션차이나센터
- 임용고시
- missionchina
- java
- IOS
- 고시문헬퍼
- flutter
- view
- Android
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |