ETC/Daily

[일기] 서버 진영의 언어 선택, 자바 vs 코틀린

sky Jeong 2021. 10. 24. 14:37

고인 물이 썩은 물이 되기 싶다고 생각해 가급적 추가 공부를 하려 했다. [ JAVA 11 x Spring Boot 5 ]를 하려 했는데, 코틀린 포지션이 늘어나는 것이 굉장히 많아 좀 고민스럽다..

 

자바 수준이 중급 수준이라 하기는 조금 부족한 실력이긴 하나, 코틀린의 매력도도 꽤 높아서.. 자바를 어느정도 할 줄 아니, 이에 코틀린까지 겸하면 좋지 않을까? 하는 생각이 잠깐 들었다. 처음엔 대세라는 생각에 혹했지만 막상 알고보니 코틀린 꽤 매력적이드라.

 

코틀린의 가장 매력적이라 느꼈던 포인트는

 

  1. 간결한 구문 
    무슨 말이냐 코드로 보여주자면.

    <자바>
    switch(day) {
     case MONDAY:
     system.out.println("월요일");
     break;
     case TUESDAY:
     system.out.println("화요일");
     break;
    defaullt:
    }

    <코틀린>
    when(day) {
     MONDAY -> println("월요일");
    }

    - 함수형 프로그래밍 언어이면서, 객체지향 프로그래밍 언어이다보니 구문이 훨씬 간결해졌다는 것.
    - getter, setter가 당연하게 다른 작업없이 지원된다는 것.

  2. Null 안전성
  3. JAVA와 상호 운용성
    우리나라는 자바 공화국이라는 말이 있을 정도로 백엔드로 자바를 선택하는 경우가 굉장히 많다. 그렇다보니, 만약 시스템의 개발 스펙을 모두 변경하게 된다면? 굉장히 큰 비용이 들어, 신규 시스템이 아닌 이상 아무리 좋은 언어가 나타난다고 해도 다른 언어를 선택하기는 절대~로! 쉽지 않을 것이다.

    그런데 여기서 코틀린이 백엔드 언어로 각광받을 수 있었던 이유는, 자바와의 상호 운용성이 가능하기 때문이다. 쉽게 이야기 하자면
    [ 코틀린 -> 자바 ] [ 자바 -> 코틀린 ]이 가능하다는 이야기이다.

    코틀린은 자바의 라이브러리, 애노테이션을 사용할 수 있다.

  4. 무료 라이센스
    이거 생각보다 굉장히 중요한 문제이다. 무료 라이센스라는 점은, 상업적 교육적 목적 등 이용에 제한이 없다는 뜻과 같으며, 이로 커뮤니티의 발전 또한 기대할 수 있기에 나중에 트러블슈팅을 해야하는 일이 발생한다면 문제 없이 가능할 것이다.

 

 

이 외에 장점들도 존재하지만 개인적으로 와닿았던 장점만 나열해보았다.

아직 개발자로써 업무를 한지 몇개월 안 된 주니어 중에 주니어 개발자이지만, 나의 지금부터 기술 스택을 코틀린으로 갈아탈 것이냐. 하는 스스로의 물음에 대한 대답은.

 

"아직은 아니다."

 

먼저 간결하다는 것에 대한 매력 포인트를 느낀다는 것은.. 이미 자바에 대해 숙련된 상태에서 느낄 수 있는 것. 한 마디로, 기존에 자바를 깊게 다루었을 경우 이에 대한 높은 생산성이 더 와닿을 수 있다는 것으로 보였다. 바꿔서 이야기를 하자면, 자바를 깊게 팔수록 코틀린에 대한 러닝 커브가 높지 않을 것으로 판단되었기에, 나만의 FM대로 접근하기로 했다.

 

1. 처음 계획했던 대로, 개인 프로젝트를 진행하며 트러블슈팅을 해보자. 그 안에서의 배움이 더 크게 파생되어, 코틀린으로 전환하여도 큰 무리 없이, 깊이 있게 접근할 수 있을 것이라 생각된다.

 

2. 상호 운용성이 코틀린의 장점이라 했다. 어차피 자바에서 코틀린으로 변경할 때에 자동으로 코드가 추천된다고는 하오나, 운용되고 있는 프로젝트를 직접 자바에서 코틀린으로 변경해본다면? 더 큰 배움이 있지 않을까?

 

 

그렇다. 일을 벌려서 배움을 얻어보자. 다른 사람들이 닦은 길을 백날 보아도, 내 성격은 직접 해보면서 깨닫고 이해하는 걸 좋아하기에 ..ㅎ 좀 귀찮지만 일을 벌려서 배움을 얻어보기로 결정했다. 좀 피곤하게 사는 스타일이지만, 한 번 해보자.