[기술 면접 질문] Java -> Kotlin 전환 이유

0

기술 면접 준비

목록 보기
5/19
post-thumbnail

[기술 면접 질문] Java -> Kotlin 전환 이유

📝요약

코틀린으로 전환해야 하는 이유는, 코틀린은 간결함, 안정성, 호환성을 제공하기 때문입니다.
첫번째로, 코틀린은 data class, object 키워드 등으로 보일러 플레이트 코드를 없애는 간결성을 제공합니다.
두번째로, 코틀린은 Null Safety, 스마트 캐스트, 불변 등의 기능을 문법적으로 제공하여 안정성을 제공합니다.
마지막으로, 코틀린은 JVM과 호환되어 JAVA 라이브러리 및 프레임워크와의 호환성을 제공합니다.

📌참고자료

  • 코틀린을 써야하는 이유?
    • 간결함(Concise)
    • 안정성(Safety)
    • 호환성(Interoperable)

간결함(Concise)

  • 코틀린으로 Boilerplate 코드를 줄일 수 있음
  • Boilerplate 코드란?
    • 최소한의 변경으로 여러 곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드
  • Boilerplate 코드를 제거할 수 있는 방법
    • 어노테이션 프로세서 사용하기
    • 안드로이드 스튜디오 플로그인 사용하기 (ex. Parcelable, LiveTemplate, Lombok 등)
    • 라이브러리 사용하기 (ex. Dagger, Glide, Retrofit, Databinding 등)
    • Kotlin 사용하기
  • 코틀린을 사용하여 Boilerplate코드를 제거하는 예: data class, object

data class

  • Java code
    public class DataExample {
      private final String name;
      private int age;
      private double score;
      private String[] tags;
      public DataExample(String name) {
        this.name = name;
      }
      public String getName() {
        return this.name;
      }
      void setAge(int age) {
        this.age = age;
      }
      //...
      public String[] getTags() {
        return this.tags;
      }
      public void setTags(String[] tags) {
        this.tags = tags;
      }
      @Override public String toString() {
        return "DataExample(" + this.getName() + ", "
          + this.getAge() + ", " + this.getScore() + ", "
          + Arrays.deepToString(this.getTags()) + ")";
      }
      protected boolean canEqual(Object other) {
        return other instanceof DataExample;
      }
      @Override public boolean equals(Object o) {
        //...
        return true;
      }
      @Override public int hashCode() {
       //...
      }
  • Java code with lombok
    @Data 
    public class DataExample {
      private final String name;
      @Setter(AccessLevel.PACKAGE) private int age;
      private double score;
      private String[] tags;
  • Kotlin code
    data class DataExample(
      val name: String, var score: String?,
      var tags: Array<String>?
    )

object

  • Java code
    public class Something {
        private Something() {}
        private static class LazyHolder {
            static final Something INSTANCE = new Something();
        }
        public static Something getInstance() {
            return LazyHolder.INSTANCE;
        }
    }
  • Kotlin code
    object DataProviderManager {
        fun registerDataProvider(provider: DataProvider) {
            // ...
        }
        val allDataProviders: Collection<DataProvider>
            get() = // ...
    }

안정성(Safety)

  • 널 안정성(Null Safety), 스마트 캐스트, 불변(Immutable) 등 편리한 기능 문법적으로 제공

호환성(InterOperable)

  • Kotlin은 JVM과 호환되어, Java의 풍부한 라이브러리와 견고한 프레임워크를 사용할 수 있음
profile
Be able to be vulnerable, in search of truth

0개의 댓글