ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 카카오톡의 서버사이드 코틀린 - 유용하
    세미나, 영상 요약정리 2022. 9. 24. 00:01

    https://tv.kakao.com/channel/3150758/cliplink/391419295

     

    카카오톡의 서버사이드 코틀린 - 유용하님의 영상을 요약한 내용입니다.

     

    개요

    개발 언어로 코틀린을 도입하여 카카오톡 서버 구조 개선을 하고자 했습니다.

     

    코틀린/JVM 선택의 배경

    성능/안정성, 개발/운영의 편의성

    다양한 서버 환경에 검증된 자바의 생태계를 이용

    생산성이 좋은 새로운 언어

    적정 수준의 러닝 커브

     

    개발 환경은 쓸 만 할까?

    API 하위 호환성이 잘 이루어지고 버전 업데이트 시 변화가 크지 않습니다.

     

    gradle, maven에 간단한 설정만 추가하면 바로 코틀린을 사용할 수 있습니다.

     

     

    코틀린의 컴파일 과정

    1. *.kt 파일 kotlinc 컴파일러에 의해 *.class 파일로 변환

    2. 자바 파일이 혼재하는 경우 .java 파일로 변환 후 다시 javac 컴파일러에 의해 *.class 파일로 변환

     

    인텔리제이, 이클립스에서 잘 지원되고 인텔리제이에서는 자바 -> 코틀린 코드 변환까지 지원됩니다.

     

    코틀린과 자바의 호환성

    100% 자바와 호환됩니다.

    자바 파일에서 코틀린 파일을 부를 수 있고 코틀린 파일에서 자바 파일을 부를 수 있습니다.

     

     

    생산성과 안정성의 향상

    자바에서 getter, setter, 생성자, equals, hashcode, toString 등 보일러 플레이트 코드가 반복됩니다.

    Lombok 어노테이션을 사용하면 조금 편해질 순 있지만 코틀린에서는 data 키워드로 편리하게 사용할 수 있습니다.

     

    코틀린은 NPE가 발생할 수 있는 여지를 컴파일 타임에 오류를 방지하며 안정성을 향상합니다.

    정적 타입과 Nullable 타입을 문법으로 구분합니다.

    자바의 Optional이 기본 문법으로 제공된다고 이해하면 좋습니다.

     

    불변 컬렉션을 제공해서 불변성 강화

    자바도 불변 컬렉션을 제공하지만 런타임 시 에러가 발생하고 코틀린은 컴파일 타임에 에러가 발생

     

    불변 변수인 final이 권장되며 상속 제한이 디폴트입니다.

     

    확장 함수 제공

    확장 함수를 통해 Utility, Helper 클래스를 대체할 수 있습니다.

     

    스마트 캐스트

     

    이외에도 다양한 문법들을 통해 간결함을 지원합니다

    코루틴

    가독성이 높은 절차적인 코드로 작성되며 성능이 좋음

     

    자바와 코틀린의 비교

     

    잘 돌아가나요?

    성능은 거의 동일하게 나온다.

     

    마이그레이션 주의사항

    자바 코드/ 클래스 연동 시 타입 주의(Nullable 등)

    Lombok 적용된 자바 코드와는 같은 모듈에 사용하기 힘듦(delombok 사용)

    spring에서는 특정 클래스/함수 open 해줘야 함(kotlin-spring 플러그인 사용)

    immutable 데이터로 리팩터링 하는 것은 생각보다 큰 일

     

    새로운 프로젝트 : 처음부터 코틀린

    수정이 앞으로도 많은 프로젝트 : 모델, 유틸리티부터 리팩토링

    그 외 잘 돌아가는 자바 프로젝트 : 잘 돌아가게 두기

     

     

     

     

    댓글

Designed by Tistory.