SW/앱플랫폼

앱플랫폼 : 코틀린의 장점과 자바의 단점

얇은생각 2019. 8. 27. 07:30
반응형

앱플랫폼 : 코틀린의 장점과 자바의 단점


자바는 오류가 발생하기 쉽다

Java의 가장 큰 결함 중 하나는 "널 (null)"을 처리하는 방식이며, NPE (NulPointerException) (일반적으로 The Billion Dollar Mistake)로 이어집니다.


그것을 10 억 달러의 실수라고 부릅니다. 이것은 1965 년에 null 참조의 발명이었습니다. 이로 인해 수많은 오류, 취약점 및 시스템 충돌이 발생하여 지난 40 년 동안 수십억 달러의 고통과 피해를 초래했을 것입니다. — 찰스 안토니 리차드 호 아어


오늘날 NPE는 Android 앱에서 가장 일반적인 충돌 원인 중 하나입니다. 사실, 하나의 NullPointerException 없이 프로덕션에 앱을 만드는 것은 거의 불가능합니다.


그리고 "무효성"은 Android에서 훨씬 더 큰 문제입니다. Null은 값이 없음을 나타내는 매우 효율적이고 간단한 방법이며, Android는 이를 프레임워크 및 API에서 사용합니다. Java를 사용해 개발자가 처리하기가 더 어려워지는 것은 좋지 않습니다.


세 번째 문제는 프로그래머가 Java가 정적이 아닌 내부 클래스와 익명의 내부 클래스를 구현하는 방식을 종종 무시한다는 사실과 관련이 있으며, 이는 항상 외부 클래스에 대한 암시적 참조를 유지합니다. 그렇게하면 결국 앱이 메모리 누수에 취약해집니다.


여기에 포스팅 하지 않은 Java의 디자인 결함에 대한 내용이 있지만 Java에 대한 가장 큰 그 내용에 대해서는 기회가 되면 나중에 더 조사해보겠습니다.




다변성과 ceremony

개발자는 깨끗하고 간결한 코드를 좋아합니다. 적은 코드는 작성하는 데 걸리는 시간과 읽는 데 걸리는 시간이 짧으며 버그에 덜 취약합니다. 그러나 Java를 사용하면 가장 간단한 작업을 수행하기 위해 많은 코드를 작성해야합니다. 안드로이드 개발자라면 아마 이미 이것을 경험했을 것입니다.


Java API에는 "ceremony"가 상당히 많으며, Android는 개발자가 특정 순서로 여러 단계를 거쳐 데이터베이스 액세스, 조각 트랜잭션 처리 등과 같은 작업을 수행하도록함으로써 상황을 더욱 악화시킵니다.


이러한 프로세스를 많이 단순화 할 수 있다면 Android 개발자로서의 경험과 생산성이 상당히 향상 될 것입니다.




구조에 코틀린

Java가 Android 앱을 빌드하는 데 사용할 수있는 유일한 언어는 아닙니다. Java 이외의 Android 에코 시스템에서 가장 강력하게 지원되는 JVM 언어는 JetBrains이 개발한 공개 소스 정적 유형 언어인 Kotlin입니다.


JetBrains는 가장 널리 사용되는 IDE 중 하나인 IntelliJ IDEA와 Android Studio를 만들었으며 Google은 Android 개발을 위한 표준 IDE로 선정되었습니다. 개발자가 일상적인 개발 워크 플로에서 직면하는 고통을 이해했으며 Kotlin은 이러한 문제를 해결하려고 시도했습니다. JetBrains는 프로덕션에서 Kotlin을 사용하여 자체 제품을 개발하므로 언어가 갑자기 버려질 것 같지 않습니다.


Kotlin은 Gradle 및 Maven과 같은 오픈 소스 도구가 이미 이를 잘 처리하므로 자체 빌드 시스템 또는 패키지 관리자와 같은 기능을 포함하지 않아 실용적인 접근 방식을 취합니다. 자체 빌드 시스템이 있으면 Gradle 및 Maven을 이미 사용하는 프로젝트가 중단되었을 수 있습니다.


Kotlin에 대한 또 다른 실용적인 접근 방식은 전체 Java 컬렉션 프레임 워크를 다시 구현하지 않는 것입니다. 쉽지 않았지만 제작자는 Kotlin이 기존 프로젝트 구현을 중단하지 않고 JDK 컬렉션 인터페이스와 호환되기를 원했습니다.


Kotlin의 또 다른 큰 이점은 대부분의 언어 디자인 결정이 많은 Java 및 Android 프로젝트와의 호환성을 유지하는 데 중점을 둔다는 것입니다. 예를 들어 Kotlin은 여전히 ​​절반 이상의 Android 장치에서 실행되므로 Java 6 바이트 코드를 지원합니다.




포스팅을 마치며

최근 코틀린을 공부하면서 조금씩 정리를 하고 있습니다. 코틀린과 자바에 대한 차이점과 장점에 대해, 조금 더 많은 내용을 원하신다면, 이전 포스팅과 이후 포스팅을 참조해주세요. 감사합니다.

반응형