jsonobject.com
278
2019-11-07 22:16:47 작성 2019-11-07 22:41:14 수정됨
3
1413

Kotlin 개발 언어의 특징 및 전망


안녕하세요.

최근 제 블로그에 작성했던 글을 가져왔습니다. 출처만 남겨주시면 자유롭게 퍼가셔도 됩니다.

https://jsonobject.tistory.com/503  (지단로보트의 블로그)



Kotlin은 어떤 언어인가?

  • Kotlin은 세계 최고의 상용 개발 도구인 IntelliJ IDEA의 개발사로 유명한 JetBrains가 만든 개발 언어이다. Java 언어에 조예가 깊은 전문가 집단이 엔터프라이즈 레벨의 애플리케이션을 최소의 공수로 유지보수가 쉽도록 새롭게 만든 언어라고 말할 수 있다. 2011년 첫 공개 후 베타 기간을 거쳐 2016년 1.0이 정식 공개되었으며 2019년 현재 1.3.50이 공개된 상태이다. (참고로 JetBrains는 러시아와 동유럽권 개발자 중심으로 구성되어 있으며, Kotlin은 러시아에 위치한 섬의 이름이다.)

Kotlin의 미래는 밝다.

  • KotlinJetBrains가 처음 만들었고, 버전 업을 활발히 주도하고 있다. Java, Python, PHP 진영 통틀어 세계 최고의 개발 도구 제작업체가 이 언어를 책임 지고 있다는 것은 앞으로도 망할 가능성이 적다는 의미로 해석될 수 있다.
  • 더 흥미로운 사실은 2017년 구글이 안드로이드의 공식 언어로 Kotlin을 채택했다는 것이다. 2년이 지난 현재 시점에서 구글이 발행하는 모든 레퍼런스 문서에서 Kotlin을 최우선으로 언급하고 있는 것을 확인할 수 있다. (또한, 안드로이드의 공식 개발 도구인 Andorid Studio는 바로 JetBrains가 만들었다.)

Kotlin은 Java보다 간결하다.

  • 스크립트 기반의 타언어에서 Java로 넘어온 사람이 느끼는 가장 큰 당혹감은 장황함이다. 단순히 데이터를 담기 위한 목적인데, Getter, Setter, Equals, HashCode, ToString 등의 반복적인 행위를 매번 직접 구현해야 한다. Lombok이라는 외부 라이브러리를 사용해서 해결하기도 하지만, Java라는 언어 자체가 가진 낙후성과 비생산적인 느낌을 피하기는 힘들다. Kotlin은 언어 레벨에서 data 클래스 한방으로 위 문제를 깔끔하게 해결했다. Java 개발자가 Kotlin에 입문하면 다시는 못 돌아가는 이유이다.
  • KotlinJava의 최고 전문가들이 오랫동안 고민한 결과를 담아낸, 가장 진보된 언어 중 하나이다. 기본 문법과 기본 라이브러리 곳곳에서 이러한 간결한 설계 철학을 확인할 수 있다. Kotlin의 간결함이 주는 또다른 매력은 이 언어가 간결함을 위해 소스 코드의 가독성을 희생하지 않았다는 것이다. 작정하고 어렵게 짜지 않는 이상 코드 리딩이 어려운 경우는 거의 없다.

Kotlin은 배우기 쉽다.

  • 책에 나오는 예제가 아닌 운영 서비스 중인 Java의 애플리케이션 코드를 Java를 처음 배우는 사람에게 설명하기란 쉬운 일이 아니다. Kotlin은 언어 레벨에서 장황함을 제거하였다. 즉, 기본 문법에서 외울 부분을 최소화하고, 로직 구현에 필요한 소스 코드를 줄였기 때문에 처음 배우는 사람에게 전혀 부담 없는 언어라고 말할 수 있다.

Kotlin은 Type-Safe에 친화적이다.

  • Java가 전세계적으로 오랫동안 백엔드에서 왕좌의 자리에 있었던 것은, 바로 정적 타입 언어로서 Type-Safe를 권장하고 지향한다는 점 때문이다. Type-Safe가 잘 고려되어 설계된 엔터프라이즈 애플리케이션은, 오류가 개발 컴파일 단계에서 사전에 발견된다. Type-Safe에 대한 고려 없이 당장의 생산성만 생각하고 설계하면, 오류가 배포 후 특정 상황에서야 예기치 않게 발견된다. 금방 고쳐서 재배포하면 되는 간단한 애플리케이션이라면 상관 없지만, 돈을 다루는 중요 서비스에서는 용납이 되지 않는 상황이다. 가장 보수적인 금융권이 Java를 고집하는 이유이다.
  • 장점만 있는 것은 아니다. Java는 이러한 특징 때문에 타언어 대비 문법적인 장황함과 비생산성이 단점이다. 하지만, Kotlin의 등장으로 Type-Safe의 강점을 그대로 유지하면서 간결함과 생산성까지 모두 장점으로 가지게 되었다. 추가로, KotlinJava에는 없는 변수에 대한 Null 체크까지 지원한다. 따라서, KotlinType-Safe에 매우 친화적인 언어라고 말할 수 있다. (실제로 HTML, CSS 문법을 Kotlin을 통해 DSL로 해결하여 재사용성을 높이고 오류를 원천 봉쇄하려는 시도가 진지하게 진행되고 있다.)

Kotlin, Java는 혼용이 가능하다.

  • Kotlin의 장점을 인지했다고 쳐도 기존의 Java로 개발된 레거시 서비스를 모두 Kotlin으로 바꾼다는 것은 한숨이 나오는 일이다. 방법이 없을까? 사실 앞서 언급한대로 Java, Kotlin은 같은 JVM 생태계를 공유하는 형제 지간이므로 기존의 Java로 개발된 프로젝트에서 자유롭게 Kotlin을 혼용해서 사용할 수 있다. 새로운 기능만 Kotlin으로 작성하는 것도 가능하고, 기존의 개발된 클래스를 Kotlin에서 사용하는 것도 얼마든지 가능하다. 새 기능만 구현할지, 전체를 바꿀지는 전적으로 개발자의 몫이다.

Kotlin은 Java의 라이브러리, 프레임워크를 사용할 수 있다.

  • Java는 1995년 처음 공개된 매우 성숙한 언어이다. 그동안 전세계의 수많은 유능한 개발자들이 무료로 공개한 라이브러리와 프레임워크의 수가 어떤 언어보다 풍부하다고 말할 수 있다. 앞서 언급했듯이, KotlinJava와 혼용할 수 있기 때문의 라이브러리 및 프레임워크 또한 그대로 사용할 수 있다. 실제로 데이터베이스 관련 작업의 경우 Java 진영이 자랑하는 JPA, Hibernate, Spring Boot Data JPA, Querydsl 기술 조합에 Kotlin을 결합하면 상당한 생산성을 확보할 수 있다.

Kotlin, Java는 성능이 동일하다.

  • Java, Kotlin으로 작성된 소스 코드를 각각 컴파일하면 실제 운영 환경에서 실행 가능한 .class 확장자를 가진 바이트 코드로 변환되는데, 이는 두 언어의 최종 결과물이 결국 동일하다는 것을 의미한다. (동일한 결과물에 성능을 논할 수 없는 것은 당연하다.) 따라서, 기존의 JVM이 설치되어 있는 어떤 운영 환경에서도 해당 바이트 코드를 그대로 실행할 수 있다. 한 프로젝트 내에서 Java, Kotlin 언어의 혼용이 자유롭게 가능하고, Kotlin 소스 코드에서 Java 소스 코드 및 라이브러리를 전혀 문제 없이 사용할 수 있는 이유이기도 하다. (Kotlin의 모든 기능을 완전히 사용하려면 JVM 8 이상이 요구된다.)

Kotlin은 JVM 생태계 안에 있다.

  • Java 또는 Kotlin 언어로 작성된 소스 코드의 컴파일된 결과물을 실행하는 주체를 JVM(Java Virtual Machine)이라고 부른다. JVM의 개발은 오라클의 소유 하에 여러 세계적인 IT 업체들이 참여하고 있다. 무료 JVM의 대표주자로서 미국의 Azul Zulu이 있으며, 최근에는 Amazon 또한 자신들의 EC2 인스턴스에 최적화된 JVMAmazon Corretto를 공개하기도 했다. (JVM과 관련된 자세한 내용은 이 글을 참고한다.)
  • Kotlin으로 개발한다는 의미는 곧, 이러한 세계적으로 막강한 생태계의 고성능의 JVM 환경 하에 서비스를 운영할 수 있다는 것을 의미한다.

참고 글

6
0
  • 댓글 3

  • 로직X
    457
    2019-11-08 11:25:50

    자바쓰다 코틀린 써서 개발하면 신세계 열립니다~~ 
    게다가 컨버팅 해본결과 스위프트와 80프로 이상 문법이 똑같습니다.

    1타 쌍피!!응?..

    1
  • LichKing
    14k
    2019-11-08 17:52:42

    저도 요새 코틀린 사용하고있는데..

    꼰대가 된건가 좀 맘에 안드는부분이 꽤 있네요 ㅡ.ㅡ;

    0
  • sam1287
    229
    2019-11-08 20:19:35 작성 2019-11-08 20:19:57 수정됨

    개인적으로는 코틀린의 함수형 개발을 지원하는 많은 내장 메서드들이 자바와는 달리 컴파일시 인라인 되는것이 마음에 들었습니다. 런타임에 생성될 수 있는 수 많은 익명 객체에 대한 고민을 하지 않아도 되니까요.

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.