530
자바에서 코틀린으로
23.1
결
프로그래밍 언어마다 결이 있어서 그 언어를 사용해 작성하는 프로그램의 설계에 영향을 끼친
다는 비유가 떠올랐다. 결에 따라 어떤 설계 스타일을 더 쉽게 적용할 수 있고 다른 설계 스타
일을 적용하기는 몹시 어렵거나 위험할 수가 있다.
코틀린의 결은 자바의 결과 다르다. 자바의 결은 가변 객체와 리플렉션을 선호하며 합성성과
타입 안전성을 (가변성과 리플렉션에 대한 ) 대가로 지불한다. 자바와 비교해서, 코틀린의 결
은 불변 값을 변환하는 것과 독립적인 함수를 선호하며, 비침투적이고 도움이 많이 되는 타입
시스템을 제공한다. 인텔리
J
를 사용하면 자바를 코틀린으로 쉽게 변환할 수 있지만 우리 사고
방식을 바꾸지 않고 단순 변환한 코드는 코틀린이라는 새 언어가 제공하는 장점을 제대로 살리
지 못하는, 코틀린 문법으로 작성한 자바 코드가 된다.
자바와 코틀린은 한 코드 기반에 공존할 수 있고, 두 언어를 상호 운용하는 경계에서는 거의 이
음매가 느껴지지 않는다. 하지만 코틀린이 제공하는 엄격하게 타입이 지정된 세계에서 좀 더
느슨하게 타입이 정해진 자바의 세계로 정보를 전달할 때는 약간의 위험이 발생한다. 주의를
기울이면서 자동화한 리팩터링 도구를 사용해 작고 안전한 단계로 코드를 변환하면서 코드 텍
스트를 직접 변경하는 것을 최후의 수단으로 삼으면 전형적인 자바 코드를 전형적인 코틀린 코
드로 변환할 수 있다는 사실을 알았다. 그리고 코틀린에 의존하는 자바 코드를 점차 코틀린으
로 변환하는 동시에 (자바와 코틀린 ...