자바를 더욱 더 쓰고있는 학생인데 코틀린의 장점은 무엇인가요?

안드로이드 중에 자바를 많이 쓰고 있는 학생입니다.

따른 얘들이랑 합작하거나 그러면 얘들 중 몇명 애들이 코틀린을 더욱 더 선호해 무리가 좀 갈때가 있습니다.

코틀린을 한 번 배워보려고하는데 자바랑 다른 점이 무엇이고 어떤 점이 좋은지 말해주세요

    3개의 답변이 있어요!

    • 코틀린이 자바에 비해서 함수형 언어를 지향하고 있습니다.

      저는 개발환경이 자바 1.6, 1.7이다보니 1.8에 추가된 람다나 스트림 api 같은 문법을 쓰기 어렵다보니 코틀린을 좀더 선호했던것 같습니다.

      자바에 비해 좋았던 점은 Null 관련 부분이 좋았습니다.

      코틀린으로 넘어가고부터는 Null Point로 죽는 경우가 많이 줄어 들었습니다.

      자바에 비해 장점은 많은 것같습니다

      같이 일하시는 분들이랑 이야기하면 다시 자바로 돌아가고 싶지 않다고 합니다.

      저도 안드로이드 및 스프링 부트를 하게되면 당연히 코틀린으로 설정하고 합니다.

    • 물론 아직도 Java를 많이 사용하고 있지만 구글에서도 Kotlin을 제 1언어로 채택하고 앞으로의 컴포넌트나 라이브러리들도 Kotlin으로 개발된다고 하니 안드로이드 개발자들은 Kotlin을 안 할 이유가 없어보입니다.

      Java를 주로 사용하시던 분들이라면 오히려 불편하다고 생각하실 수도 있지만 Kotlin을 써보고 익숙해지면 Java와는 비교할 수 없을 정도로 편하게 사용할 수 있을 것입니다.

      변수/상수, view 사용, Null 안정성, 객체 초기화, Data Class 에서 더 두드러지게 차이점이 나타나고 더 편하고 안정성이 있습니다

    • 자바와 코틀린의 차이점이라고 한다면 개발언어적 문법의 차이라고 보시면 됩니다.

      즉, 코틀린은 자바에서 좀 더 편리하고 실용적으로 만든 언어입니다.

      안드로이드 개발시 자바보다 코틀린을 더 많이 사용하며 웹 개발에도 코틀린을 활용하는 사례가 많아지고 있습니다.

      저같은 경우에도 코틀린으로 프로젝트를 진행하고 코틀린의 매력에 빠져버렸습니다.

      안드로이드 개발자가 되실거라면 java도 알아야 겠지만 kotlin 을 접하는것을 추천드립니다.

      코틀린의 특징으로

      1. 데이터 타입을 추론한다.

      private String name; // java val name // kotlin name에 문자를 넣으면 String, 숫자를 넣으면 int

      2. 안전한 코드 생성
      @Nullable 및 @NonNull이 Kotlin 유형 시스템에 통합되어 비용이 드는 NullPointerException을 방지

      java의 경우 null 에 대한 에러 방지를 위해 if문을 통해 계속 체크해야줘 합니다.

      만약 list 안의 데이터를 처리하기 위해선 list가 null인지 체크 후 그 안의 데이터 필드가 null인지 체크하는 if문이 들어가는데 kotlin의 경우 이를 깔끔하게 처리가 가능합니다.

      // java @Nullable String strNullable = null; @NonNull String strNonNull = ""; private String strNullOrNotNull; if(strNullOrNotNull == null) { ... } // kotlin var strNullable: String? = null var strNonNull: String = ""

      3. data class

      java 의 경우 setter, getter, toString 등 만들기 위해 lombok을 활용하여 많은 메소드 생성을 대신합니닫.

      하지만 kotlin 은 data class에 대해 필드만 선언하면 그에 필요한 메소드를 자동으로 생성되어 사용할 수 있습니다.

      // java @Data public class JavaData { private String s; private int i; private boolean b; } // kotlin data class KotlinData(var s: String?, var i: Int, var b: Boolean)

      그 이외에는 문법적 차이입니다.

      기본적인 문법은 링크를 참조하시기 바랍니다.

      https://junghun0.github.io/2019/07/20/kotlin-android/