1. 자바의 한계점
우선 자바는 내 생각에 ‘좋은’ 언어이다. 우리나라에서 뿐만 아니라 전 세계에서 (현재까지) 그렇게 생각하는 듯 하다.
참고: StackOverflow 개발자 설문조사
그리고 뒤처지지 않기 위해 매 버전 출시될 때 마다 발전하고 트렌드를 쫓아가려고 한다.
이렇게 말해놓고도… 사실 ‘자바가 진짜 편한 언어일까?‘라는 의문은 뗄 수가 없다. 사용하는 사람으로써 풀어보자면,
-
장황한 문법
리스트 하나 필터링하는 데 람다 쓰려고 하면 막stream().filter().collect()가독성은 점점 산으로 가게된다. -
보일러플레이트
DTO 하나 만들자고getter/setter/toString/equals/hashCode한 세트를 매번 생성해야한다. (Lombok아 고마워!) -
Null 처리의 허술함
NPE는 자바의 전통이다. “이거 null일 수도 있잖아?” →if (obj != null)의 반복.
결국Optional,orElse같은 도구도 모두 NPE 방지를 위한 것들이다.
“그냥 더 간단하게 쓸 수는 없을까?” 하는 마음이 생기게 됐다.
2. 코틀린의 등장
이런 불편함을 체감한 많은 개발자들, 특히 안드로이드 개발자들 사이에서 자연스레 대안이 떠올랐다. 바로 코틀린(Kotlin) 이다.
JetBrains가 만들었고, 처음부터 자바와의 100% 호환성을 전제로 했다고 한다.
기존 자바 코드를 그대로 두고도, 더 생산성 높은 언어를 원했던 것이다.
당시 JetBrains 의 상황과 개발동기를 아래와 같이 말했다.
- JetBrains은 자바를 포함하여 JVM 베이스인 여러 언어의 IDE를 만드는 회사이며, 대부분의 소스 코드가 자바로 쓰여있다.
- 그러나 우리는 더 많은 생산성(more productivity)을 원했으며, 그렇다고 이미 쓰여진 자바를 포기할 수도 없었다.
- 그래서 우리는 자바와의 상호 호환성을 전제로 하는 언어인 코틀린을 개발하기 시작했다.
처음엔 그냥 “자바랑 호환 잘 되는 언어” 정도였는데, 실제로 개발자들의 불편을 상당히 개선시켰다.
이쯤 되면 관심이 쏠릴 수밖에 없었고,
구글이 안드로이드 공식 언어로 코틀린을 채택하면서
”자바 대체 가능성”이라는 말이 진지하게 오가기 시작했다.
“내가 자바로 만들던 거, 이걸로도 똑같이 되는데 더 편하네?”
코틀린은 그렇게,
자바의 단점은 덜고 장점은 그대로 가져온, 매력적인 대안으로 떠올랐다.
3. 코틀린의 철학
코틀린은 뭔가 ‘혁신적인 언어’라기보단, 실용적인 언어에 가깝다.
코틀린 개발자는 자바를 대체한다기보다 보완하는 느낌으로 다가갔다.
실용성
- 학문적 실험보다는, 다른 프로그래밍 언어에서 이미 검증된 해법과 기능을 채택
- 익숙한 자바 스타일로도 코딩 가능.
- 패러다임(함수형, 객체지향 등)을 강제하지 않음.
간결성
- 의미 없는 반복 코드 생략
data class,val/var,람다등 덕분에 코드량 감소- 코드를 읽고 쓰는 데 드는 비용 감소
안정성
- 타입 추론, Null 안정성, ClassCastException 방지까지.
- 컴파일 타임에 잡아주는 게 많아서 실수 가능성을 낮춤
- 스마트 캐스팅으로
if (x is Y)후 바로 캐스팅하여 사용 가능
상호 운용성
- 자바 라이브러리를 그대로 쓸 수 있고, 변환이나 호환 걱정이 거의 없음.
- IDE 지원도 완벽해서 자바 ←> 코틀린 코드 탐색, 리팩토링까지 문제없이 작동.
- 자바와 섞어서도 무리 없이 사용 가능.
즉, 코틀린은 자바 개발자를 위한 매력적인 언어라고 할 수 있다.
References
후기
자바의 한계를 비판하는 데서 멈추지 않고, 직접 새로운 언어를 만든 JetBrains의 실천력은 정말 인상 깊다. 이 선택은 개발자 경험뿐만 아니라 JetBrains의 브랜드와 매출 성장에도 영향을 줬을 것이다.
이미 전 세계 수많은 개발자들이 자바에 익숙한 상황에서 그 익숙함을 해치지 않으면서도 더 실용적이고, 더 생산적인 언어를 설계했다는 점에서 코틀린은 ‘매력적인’ 선택지를 제시해주고 있다.
복잡한 이론이나 트렌디한 패러다임에 집착하지 않고,
다른 언어에서 검증된 아이디어들을 정갈하게 녹여낸 실용주의.
그게 바로 코틀린의 매력이고, JetBrains의 문제해결 방식이자 철학이 아닐까 싶었다.
다음 글에서는 코틀린에 대해 알아보고, 사용해본 후기를 작성해볼 예정이다.
