프로젝트에 Kotlin 도입 전 신중하게 고려해야 할 이유 3가지
Kotlin 도입
Kotlin은 Java와 마찬가지로 class파일로 바이트코드로 빌드가 가능하기 때문에
일반적인 경우에 결과물은 Java와 100% 호환된다고 할 수 있습니다.
특히나 Android 진영에서는 다음 Kotlin은 필수처럼 여겨집니다.
- 2017년 : Kotlin Android 공식 언어로 채택 (Google I/O)
- 2019년 : Kotlin-First (코틀린 우선) 정책 발표
모두들 코틀린이 좋은 이유는 구구절절 설명해주지만
코틀린을 왜 적용하지 말아야 하는지는 아무도 얘기해 주지 않아서
지금부터 아무도 얘기해주지 않는 코틀린 도입을 미뤄야 할 3가지 이유를 소개해보고자 합니다.
1. 소스 코드 레벨의 솔루션
Kotlin과 Java는 결과물이 호환이지, 소스코드가 호환인 것은 아닙니다.🙅♂️
즉 빌드한 다음에야 Kotlin으로 만든 class를 Java에서도 참조할 수 있지만,
Java파일에 Kotlin 코드를 붙여넣는다고 동작하지는 않습니다.
(물론 갓텔리제이가 변환해주기는 합니다… 갓브레인즈 충성충성 ^^7)
만약 당신의 프로젝트에 소스코드 취약점 분석
과 같은 소스코드 레벨의 정적분석 툴을 사용하고 있다면,
그리고 그 해당 솔루션이 아직 Kotlin을 지원하지 않는다면 아직은 고민해 볼 필요가 있습니다.
실제로 올해초에 소스코드 취약점 분석 툴을 검토했었는데
그 당시엔 Kotlin 미지원으로 인해 조금 난감했던 기억이 있습니다.🤦♂️
2. 학습 비용 대비 성능
사실 Kotlin을 쓴다고 해서 당신의 어플리케이션이 더 빨라지지는 않습니다.
그런데 굳이 성능이 좋아지지 않는데 힘들게 새로운 언어를 배우는 일은 가성비가 떨어지는 일입니다.
개발자에게 새로운 프로그래밍 언어를 배운다는 사실은 굉장히 부담스러운 일이니까요. 그쵸?
3. 채용난이도
저도 실제로 경험해봤지만..
당신이 만약 영세한 기업을 다니고 있다면 코틀린을 할 줄 아는 개발자를 찾기란 참 어려울 수 있습니다.
코틀린 사용할 줄 아시는 분을 찾다가 인력충원이 늦어질 수도 있는 셈이죠.
현실적으로는 빨리 Java라도 할 줄 아는 분을 뽑아서 협업하는 편이 나을 수 있습니다.
결론 :
코틀린 쓰세요.. 그냥 쓰세요..
사실 이 포스팅은 당신에게 코틀린을 쓰지 말라고 권장하는 글이 아닙니다.
사실 제목은 페이크였고…
지금부터 다시 위 항목들을 조목조목 반박해보며
Kotlin을 도입을 미루는 핑계에 대한 반박 3가지
를 말씀드립니다.
1. 소스코드 레벨의 솔루션
사실 이미 정적 분석툴을 사용하고 있고 정말로 Kotlin을 지원하지 않는다면 곤란하긴 합니다.
하지만 적어도 국내 코드 취약점 분석 솔루션 제공업체들은 늦어도 올 하반기 Kotlin 지원 예정이었습니다.
만약 그대로 어렵다면 아래와 같이 오픈소스 분석 툴을 사용하는 것도 방법이 될 수 있습니다.
Detekt
Detekt는 오픈소스 Kotlin 정적 분석 툴로써
Kotlin 소스 코드의 코드 스멜과 잠재적 위협요소들을 분석해줍니다.
물론 보안상의 기준은 상용 솔루션에 비하면 낮은 편이지만 오픈소스인걸 고려하면 도입은 충분히 검토해볼만 합니다.
또한 Proguard, Allaotori 등 난독화 솔루션의 경우는 이미 대부분이 Kotlin을 지원하고 있는데
정말 중요한 솔루션이라면 대부분 이미 Kotlin을 지원하고 있다고 보셔도 무방합니다.
2. 학습 비용 대비 성능
Kotlin을 쓴다고 해서 당신의 어플리케이션이 더 빨라지지는 않습니다.
하지만 더욱 중요한 사실은
Kotlin을 사용한다고 해서 당신의 어플리케이션이 느려지지 않습니다.
if Kakao 2018 에서 발표한 내용을 참고하자면 실제로 성능이 거의 동일하다고 합니다.
즉, 코틀린 도입을 통해 성능을 유지하면서 생산성은 대폭 향상됩니다!!
아까 참조한 if Kakao 2018 에서 발표에서도 60% 이상 코드가 줄어드는 것을 확인하실 수 있다고 하는데
Kotlin을 사용하면 훨씬 더 간결하고 명확한 코딩이 가능합니다.
생산성과 관련해서는 다른 곳에서도 쉽게 찾을 수 있는 내용이니 나중에 기회가 된다면 설명하도록 하겠습니다.
그리고.. 설마 개발자면서 새로운 언어 배우는게 그렇게 힘들고 싫겠어요? 😉
3. 채용난이도
네. 아직까지도 Kotlin을 다룰 줄 모르시는 분들도 많고, Java로 프로젝트를 진행하는 회사도 많습니다.
그치만 Kotlin을 도입한다면 앞으로 Kotlin을 할 줄 알거나, 최소한 학습하려는 사람과 일하게 될 것입니다.
반대로 내가 Kotlin을 할 줄 모른다면, 나도 Kotlin을 다루는 회사로 갈 기회를 잃는 셈입니다.
재결론 :