이전

리뷰 (13)

한줄평
평점 분포
  • 리뷰 총점10 77%
  • 리뷰 총점8 23%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 10.0
  • 30대 8.0
  • 40대 9.0
  • 50대 10.0

포토/동영상 (3)

리뷰 총점 종이책
IT
"IT" 내용보기
※ 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 장점 코틀린의 문법자체는 파이썬같이 간단하여 쉽게 이해할 수 있지만 코틀린만의 스타일을 배우기는 힘들다. 이 책은 자바 코드를 코틀린으로 리팩터링하는 과정에서 코틀린만의 언어 철학을 이해 및 스타일을 배울 수 있다. 리펙터링 과정에서 각 함수 및 클래스가 가지는 특징 및 설계 방식과
"IT" 내용보기

한빛미디어나는 리뷰어다활동을 위해서 책을 제공받아 작성된 서평입니다.

장점

  1. 코틀린의 문법자체는 파이썬같이 간단하여 쉽게 이해할 있지만 코틀린만의 스타일을 배우기는 힘들다. 책은 자바 코드를 코틀린으로 리팩터링하는 과정에서 코틀린만의 언어 철학을 이해 스타일을 배울 있다.
  2. 리펙터링 과정에서 함수 클래스가 가지는 특징 설계 방식과 자바에서 보았던 고질적인 문제들(NullPointerException ) 코틀린에서는 어떻게 보완하였는지를 이해할 있다.

단점

  1. 없음

후기

  1. 대한민국은 자바 공화국이라고 말할 정도로 자바언어를 굉장히 많이 쓰고 있지만 최근 안드로이드 개발 쪽에서는 코틀린으로 전환하는 추세라고 하여 코틀린에 흥미를 느끼고 있었다. 특히 코틀린은 문법적으로 파이썬과 같이 사용자 중심적인 언어라 문법을 이해하는데 크게 어려움은 없었지만 기존에는 코틀린만의 스타일로는 어떻게 개발하는지에 대해서는 집중적으로 설명해주는 레퍼런스가 없었다. 책의 경우 기존의 자바 코드를 어떻게 하면 코틀린만의 스타일로 최적화하는지에 대해서 설명해주며 추후 자바로 프로젝트하기 보다 코틀린으로 좀더 효율적이며 가독성있게 프로그래밍을 해볼 있을 같다.


 

t*****4 2023.02.28. 신고 공감 0 댓글 0
리뷰 총점 종이책
자바에서 코틀린으로 리뷰
"자바에서 코틀린으로 리뷰" 내용보기
안녕하세요, 다람쥐입니다. 한빛미디어 나는리뷰어다 2023년 도서 서평단으로 '자바에서 코틀린으로 : 코틀린으로 리팩터링하기' 도서를 신청했습니다. 자바와 코틀린 프로그래밍 언어에 관심이 생겼고 자바 프로젝트를 코틀린 언어로 리팩터링하는 과정을 기록한 글이 코틀린 프로그래밍 언어를 배우는 것보다 더 재밌어 보여서 신청을 하게 됐습니다.   초반에는 자바 데이
"자바에서 코틀린으로 리뷰" 내용보기

 

안녕하세요, 다람쥐입니다.

한빛미디어 나는리뷰어다 2023년 도서 서평단으로

'자바에서 코틀린으로 : 코틀린으로 리팩터링하기' 도서를 신청했습니다.

자바와 코틀린 프로그래밍 언어에 관심이 생겼고

자바 프로젝트를 코틀린 언어로 리팩터링하는 과정을 기록한 글이

코틀린 프로그래밍 언어를 배우는 것보다 더 재밌어 보여서 신청을 하게 됐습니다.

 

초반에는 자바 데이터 클래스를 위주로 코틀린 클래스로 변환하는 작업을 합니다.

그 과정에서 자바 클래스 코드와 코틀린 클래스 코드의 차이점을 알려주는데요.

직접 예제와 같이 알려줘서 코틀린 언어를 잘 몰라도 부담 없이 읽을 수 있었어요.

 

코틀린에만 있는 기능 중에 하나로 옵셔널이 있습니다.

코틀린의 옵셔널에 대해서 알아보고 자바 프로젝트에서 어떤 걸 옵셔널로 선정하여 변환할 지 자세히 알려줍니다.

테스트 코드와 함께 리팩터링을 진행하고 변경한 게 잘 돌아가는지 확인할 수 있어서 실습하기 편했습니다.

또한 코틀린에 컬렉션 기능이 있는데, 자바의 이를 코틀린의 컬렉션으로 리팩터링하는 작업도 있습니다.

자바 컬렉션을 사용하는 코드에선 컬렉션 내부 상태 변경을 제거해야 코틀린 컬렉션에서 안정적으로 사용할 수 있습니다.

 

코틀린의 함수는 일급 함수입니다.

자바의 여러 메서드를 코틀린의 함수로 변환하는 작업이 주로 알려줍니다.

정적 메서드에서 최상위 함수로 변환하는 방법과 함수에서 연산자로, 인터페이스에서 함수로 변환하는 방법을 알려줍니다.

코틀린에서 자주 쓰이는 함수 사용법을 알려주고 이를 리팩터링 하는 과정이 자세했습니다.

 

전반적인 코틀린 언어에 대해서 설명해주고 자바 프로그래밍과 호환이 어떻게 되는지도 알려줘서 유익했습니다.

자바 프로젝트에서 코틀린 프로젝트로 변환하는 작업을 해야할 때 강추 드립니다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

 

r*****2 2023.02.27. 신고 공감 0 댓글 0
리뷰 총점 종이책
당신의 Kotlin은 정말로 Kotlin스러운가요?
"당신의 Kotlin은 정말로 Kotlin스러운가요?" 내용보기
나는 왜 Java에서 Kotlin으로 넘어갔을까? 나는 안드로이드 개발자다. 그리고 Kotlin은 Goolge I/O 2017에서 Android의 공식 언어로 지정됐다. 여러가지 배경이 있겠지만 Android에서 지원하는 Java 버전은 Java7 또는 8(사실 이것도 옛말이고 Android14 preview에서 OpenJDK17을 지원한다.)이 기본이었기 때문에 최신 트렌드에 맞는 개발이 어려웠다. 그런 와중에 Kotlin은 그동안의
"당신의 Kotlin은 정말로 Kotlin스러운가요?" 내용보기

나는 왜 Java에서 Kotlin으로 넘어갔을까?

thumb

나는 안드로이드 개발자다. 그리고 Kotlin은 Goolge I/O 2017에서 Android의 공식 언어로 지정됐다. 여러가지 배경이 있겠지만 Android에서 지원하는 Java 버전은 Java7 또는 8(사실 이것도 옛말이고 Android14 preview에서 OpenJDK17을 지원한다.)이 기본이었기 때문에 최신 트렌드에 맞는 개발이 어려웠다. 그런 와중에 Kotlin은 그동안의 밀린 트렌드를 한번에 해결해 줄 수 있었다. Google 입장에서는 10년에 걸친 Oracle과의 소송전에서 마침내 이기긴 했지만 그동안에 Java로 부터 어느정도 독립하고 싶은 마음이 있었을 것이라 본다. 어쨌든 안드로이드 개발자 입장에서는 Java의 대안으로 Kotlin을 거부할 이유가 없었다.

Kotlin은 정말 매력적인 언어이다.

Kotlin은 개발자라면 한번 쯤 꿈꿔볼 깔끔하고 세련된 코딩을 가능하게 한다. Java처럼 장황하지도 않고 제법 세련되었는데 이는 Kotlin이 함수형 프로그래밍을 지원하는 멀티패러다임 언어이기 때문에 가능하다. 그리고 이로 인해 Java에서는 생각지도 못한 문법으로 깔끔하고 세련되게 코딩할 수 있다는 점은 나의 개발 힙스터부심을 자극하기에 충분했다. Kotlin에서는 “혹시 이렇게도 되지 않을까?”하면 “역시나!” 하고 되는 것이 나뿐만 아니라 여러 Java개발자 들의 가려움을 정확하게 해소해주지 않았나 싶다.

단순히 세련된 것 뿐만 아니라 제법 다양한 기능을 제공하고 있다. Extension, sealed class, scope function, coroutine, operator overriding 등 굉장히 편리하고 멋진 기능들을 제공해주고 있다. 물론 최신 Java에서 Kotlin을 많이 따라잡아서 이 편의 기능 중 상당 부분을 제공하고 있다. (애초에 선발주자였던 Java가 Kotlin을 따라잡는 이 상황 자체가 Kotlin과 Java의 관계를 단적으로 설명한다고 볼 수 있겠다. 그럼에도 불구하고 최신 Java를 세팅할 노력이 차라리 Kotlin 도입하는 것에 비해 큰 메리트가 없다. 적어도 Kotlin이 최신 Java보다 뒤떨어 질만한 점이 딱히 없다는 것도 한몫 한다.


굳이 이렇게 장황하게 Kotlin의 장점에 침이 마르게 칭찬한 이유는 지금 부터 소개할 이 책에서는 굳이 Kotlin을 집중하여 소개하는 내용이 없기 때문이다.


 

Java에서 Kotlin으로

book

한빛 미디어 서평단 활동의 일환으로 책을 제공 받고 작성된 리뷰입니다.

이 책은 Koltin에 관한 책이 아니라 Kotlin으로 리팩터링 하는 방법에 관한 책이다. 그래서 오히려 “Kotlin의 결”을 느낄 수 있다. 바꿔말하자면 어떤 코드가 Kotlin스러운 건지를 배울 수 있는 책이다.

단순히 Java코드를 Kotlin으로 컨버팅 하는 것이 아닌 Java스럽게 상상한 코드를 Kotlin스럽게 표현하는 방법을 배울 수 있다. 코딩 스타일의 차이를 넘어 함수형 프로그래밍으로 개발하는 법, Kotlin의 빌드 특성에 따른 더 나은 성능으로 개발하는 법 등 이미 Kotlin을 학습한 사람이더라도 충분히 배울 점들이 많이 있다.


 

나의 Kotlin 리팩터링 경험담

01

Kotlin을 학습하는데에도 노력이 필요하다. 당연한 이야기 같겠지만 막상 Kotlin 문법을 처음 공부할 땐 생각보다 오래 걸리지 않았다. 그러나 막상 그 이후에 코딩을 해보면 Kotlin을 Java처럼 짜고 있는 스스로를 발견했다. 이는 마치 C언어로 개발을 시작한 내가 Java와 같은 OOP 언어를 처음 접했을 때와 비슷한 양상이었다. Kotlin을 제법 Kotlin스럽게 짜는데 까지는 생각보다 오랜 시간과 경험이 필요했다.

또한 Null Safe Zone의 현실에 부딪히곤 했다. 분명 Kotlin은 Null-Safe 하다고 하는데 막상 처음 Kotlin을 기존 Java 코드와 상호운용해보면 오히려 NullPointerException이 더 자주 발생했다. 이 역시 Java와 Kotlin의 상호 운용에서 흔히 겪는 실수들이다. 순수 Kotlin으로 짠다면 비교적 Null-Safe하게 짤 수 있지만 Java와 상호운용이라면 조심해야 하는 지점들이 있다.

이 책에서는 내가 겪은 이 두가지 문제에 대한 해답이 모두 들어있었다.


 

Kotlin 리팩터링 전략

Kotlin으로 리팩터링 하는 과정에서 흔히 겪는 케이스들을 정리하여 소개하고 있다. 예를 들면 Optional 에서 Nullable 타입으로 바꾸는 방법, Beans(POJO)에서 value로, Kotlin collection을 활용하는 방법 등 그리고 이 방법들 지레짐작으로, 혹은 개인의 선호도를 기준으로 하는 것이 아니라 ‘왜 Kotlin은 이렇게 리팩터링 해야하는지’를 아주 명확한 근거를 가지고 소개한다. 그래서 이 점에서도 많은 공부가 된다. 특히 업무상 코드 리뷰를 하는 개발자라면 많은 도움이 될 것이다.

개인적으로는 아래 챕터에서 그동안 내가 갖고있던 오해와 궁금증을 많이 해결할 수 있어서 이 부분은 꼭 읽어보시길 추천드린다. 아래 챕터들을 읽으면서 아직 나에게도 Java 개발자스러운 부분이 일부 남아있었다는 점을 깨달을 수 있었기 때문이다. 물론 나머지 챕터들도 굉장히 알찬 내용들이지만 아래 챕터는 Kotlin 개발자들 모두에게 꼭 추천하고 싶은 내용들이라 강조 드린다.

  • 챕터 6 자바에서 코틀린 컬렉션으로
  • 챕터 13 스트림에서 이터러블이나 시퀀스로
  • 챕터 16 인터페이스에서 함수로
  • 챕터 19 예외 던지기에서 값 반환으로


 

이런 분들에게 추천 드립니다.

02

Java로 시작해서 Kotlin을 학습하고 계신 분들에게 꼭 추천드린다. Kotlin의 몇 안되는 단점은 ‘여전히 Java처럼’ 짤 수 있다는 것이다. 그래서 처음 Kotlin을 접할 때 Java스러움에서 벗어나지 못하는 경우가 흔히 있다. 이 책을 통해 ‘같은 JVM이지만 왜 Kotlin에서는 이렇게 짜야하는지’를 파악할 수 있기 때문에 추천드린다.

또한 Kotlin을 이미 알고 있더라도 내가 Kotlin을 제대로 사용하고 있는지를 다시 한번 돌아볼 수 있다는 점에서 오히려 Kotlin을 잘 사용하고 계신 분에게 더 도움이 많이 될 수도 있을 것 같다. 내 Kotlin 코드가 정말로 최적화 되어 있는지, Kotlin의 장점을 100% 살리고 있는지를 파악하실 수 있을 것이다.

마지막으로 Kotlin을 공부하느라 애쓰고 있던 2018년의 나에게도 꼭 추천해주고 싶다. 이 책이 있었다면 나도 조금은 덜 힘들지 않았을까? 하는 생각이 든다.

h**********5 2023.02.26. 신고 공감 0 댓글 0
리뷰 총점 종이책
[도서] 자바에서 코틀린으로
"[도서] 자바에서 코틀린으로" 내용보기
리팩터링의 뜻을 알고 계신가요? 코딩에서 리펙터링은 기능은 유지하면서 다른 영역에서 개선을 시도하는 것을 말하는데요. 자바에서 코틀린으로 리팩터링이라는 책은 자바로 개발된 프로그램을 어떻게 하면 코틀린으로 전환할 수 있는지 효율적인 방법에 대해 소개하고 있어요.     Part 1:   리팩터링의 뜻   리팩터링은 동작을 변경
"[도서] 자바에서 코틀린으로" 내용보기

리팩터링의 뜻을 알고 계신가요? 코딩에서 리펙터링은 기능은 유지하면서 다른 영역에서 개선을 시도하는 것을 말하는데요. 자바에서 코틀린으로 리팩터링이라는 책은 자바로 개발된 프로그램을 어떻게 하면 코틀린으로 전환할 수 있는지 효율적인 방법에 대해 소개하고 있어요.

 

 

Part 1:

 

리팩터링의 뜻

 

리팩터링은 동작을 변경하지 않고 기존 코드의 디자인과 구조를 개선하는 프로세스예요. 원래 기능을 유지하면서 더 효율적이고 유지 관리 가능하며 이해하기 쉽게 코드베이스를 수정하는 작업이 되는데요. 자바에서 코틀린도 이런 기본적인 리팩터링의 개념을 가지고 자바 코드를 코틀린 코드로 변화시키는 과정을 설명하고 있어요.

Part 2:

 

예제 코드를 통한 코틀린 공부하기

 

자바에서 코틀린으로는 코틀린 코딩이나 문법을 설명하는 목적이 아니에요. 오히려 최적화된 코딩 스킬과 조언이 담겨있는 프로그래머를 위한 자기계발서라는 느낌이 들었어요. 코드 형식과 예제 코드를 통해 잘된 코드의 예시, 코드를 수정하는 목적 등에 대한 부분을 익힐 수 있어요.

 

리팩터링의 목표는 중복되거나 비효율적인 코드를 제거하여 코드 품질을 개선하는 것이니까요. 코드베이스를 변경 및 업데이트 하는데 있어 관련된 시간과 비용을 줄이고 전반적인 안정성과 성능을 개선하는 데 도움이 되는 팁들을 살펴볼 수 있어요.

Part 3:

 

테마별로 정리된 코틀린 코드 마이그레이션

 

 

자바에서 코틀린으로는 개발자들이 리팩터링 과정에서 참고할 수 있도록 테마별로 잘 정리되어 있어요. 자바에서 자주 쓰는 기능을 코틀린의 코드로 전환하고, 자바를 단순히 대체하는게 아니라 코틀린 기반의 코틀린다운 코드로 리팩터링이 이루어질 수 있게 단계별로 방법을 제시하고 있어요.

 

자바에서 코틀린으로는 기본적으로 자바에 대한 완벽한 이해와 활용을 전제하기 때문에 중급자 이상의 개발자에게 추천드리는 책이에요. 자바와 코틀린의 코드 구조와 기능을 동시에 다루기 때문에 입문자 혹은 초보자분들은 읽기 조금 힘드실 것 같아요.

 

?? "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

리뷰 총점 종이책
자바에서 코틀린으로
"자바에서 코틀린으로" 내용보기
코틀린을 알려주는 책은 아니지만 자바로 만들어진 코드들을 자바 문법과 코틀린 문법을 비교하며 코틀린으로 변경하는 방법을 알려준다.   자바를 개발하던 개발자들은 코틀린 다운(?!) 코드는 어떤 것인가를 알지 못하면 코틀린 문법으로 작성한 자바 코드를 만날테니...     코틀린으로의 전환을 자바의 요소요소들에서 코틀린의 장점을 살리면서도 더 안전하고, 유지 보수하기
"자바에서 코틀린으로" 내용보기

코틀린을 알려주는 책은 아니지만
자바로 만들어진 코드들을
자바 문법과 코틀린 문법을 비교하며
코틀린으로 변경하는 방법을 알려준다.

 

자바를 개발하던 개발자들은
코틀린 다운(?!) 코드는 어떤 것인가를 알지 못하면
코틀린 문법으로 작성한 자바 코드를 만날테니...

 

 

코틀린으로의 전환을 자바의 요소요소들에서
코틀린의 장점을 살리면서도
더 안전하고, 유지 보수하기 쉽고 더 간결하게
더불어 동일한 코드를 git을 통해 여러 branch에서
여러 버전으로 만들어 보여주며
리팩토링의 측면까지 짚어주고

 

자바와 코틀린을 혼용하면서 점진적으로 전환할 수 있도록
자바에서 자주 쓰이는 기능들을
어떤 코틀린 기능으로 전환할 수 있는지
차근 차근 설명해준다.

 

쉽게 뚝딱하고 전환되는 것도 아니고
코틀린 언어로 최선의 결과를 얻으려면
시스템을 다른 방식으로 설계할 필요도 있다지만
저자들이 고민하며 얻은 노하우들을 통해
전환과정에서 겪을 수 있는 시행착오를
최대한 줄이는데 많은 도움이 될 것 같다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


 

l******e 2023.02.26. 신고 공감 0 댓글 0
리뷰 총점 종이책
[서평] 자바에서 코틀린으로
"[서평] 자바에서 코틀린으로" 내용보기
자바를 코틀린으로 빠르고 깔끔하게   소프트웨어 품질을 관리해 주는 업체 티오베에서 공개한 22년 공개한 프로그래밍 언어 순위에서 자바가 3위를 차지했습니다. 작년까지만 해도 1위를 차지하던 자바가 파이썬, C에게 자리를 내 주게 된 것입니다. 이는 IOT와 머신러닝, 데이터분석이 최근 화두에 떠오른 것도 있지만, 33위에서 26위로 치고 올라온 코틀린이라는 것도 한 몫한다고
"[서평] 자바에서 코틀린으로" 내용보기

자바를 코틀린으로 빠르고 깔끔하게

 

소프트웨어 품질을 관리해 주는 업체 티오베에서 공개한 22년 공개한 프로그래밍 언어 순위에서 자바가 3위를 차지했습니다. 작년까지만 해도 1위를 차지하던 자바가 파이썬, C에게 자리를 내 주게 된 것입니다. 이는 IOT와 머신러닝, 데이터분석이 최근 화두에 떠오른 것도 있지만, 33위에서 26위로 치고 올라온 코틀린이라는 것도 한 몫한다고 생각합니다.

 

코틀린은 자바와 유사하지만 클래스 선언 없이 함수를 변수처럼 활용 가능하여 더 간결한 문법으로 표현 가능하며, 자바와 100% 호환이 되기 때문에 구글이 안드로이드의 공식 언어로 지정하고 웬만한 작업에서도 코틀린을 지향할 정도로 활용 가능성이 크다고 알려져 있습니다. 그렇기에 오늘날, 코틀린의 중요성이 매우 높고, 자바의 내용을 코틀린으로 개발할 수 있다는 것 자체는 매우 큰 장점입니다. 그런 지식을 습득하기에 딱 알맞은 이 책을 소개합니다.

 

책은 목차부터 깔끔하게 ‘자바의 방식’에서 ‘코틀린의 방식’으로 넘어가는 과정을 소제목으로 이름 지었습니다. 거의 첫 장이라고 생각되는 ‘빈에서 값으로’부터, ‘클래스에서 함수까지‘라는‘ 명칭을 통해 독자들이 필요한 부분을 쉽게 참고할 수 있도록 도와줍니다. 각 소제목 안에서는 인텔리 J를 이용하여 자바 코드를 통해 예시를 들어주고, 지속적인 물음을 통해 실제 사례에서 어떤 방식으로 이 코드를 분해해서 코틀린으로 고쳐야 하는지 독자에게 설명하고 있습니다. 또한 중간중간 팁이나 워닝이라는 네모 칸으로 배우는 내용과 연관되는 설명을 하며, 이해력을 높일 수 있도록 도와줍니다.

 

한 가지 참고할 점이라면, 여기서는 자바와 코틀린을 공부했다는 것을 전제로 하기 때문에 어떻게 하면 자바를 조금 더 코틀린으로 간결하게 리팩터링 할 수 있는지를 설명하고, 그 개념에 대해서는 설명을 간단하게 짚고 넘어가기 때문에, 두 언어를 어느 정도 공부한 사람들에게 구매를 권하는 바입니다.

 

이 책은 자바를 사용하는데 한계를 느껴 보기보다는, 자바와 코틀린을 서로 리팩토링이 가능하게 동시에 활용하여 사용할 수 있는 법을 배우고, 각자의 상황과 경향에 맞게 매번 더 나은 방법으로 활용할 수 있도록 도와주는 책이라고 생각하기에 추천드립니다.


<< 이 글은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. >>

y**********5 2023.02.26. 신고 공감 0 댓글 0
리뷰 총점 종이책
자바에서 코틀린으로 - 한빛미디어
"자바에서 코틀린으로 - 한빛미디어" 내용보기
코틀린으로 리팩터링하기 덩컨 맥그레거, 냇 프라이스 지음 오현석 옮김   "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."     2023년 2월 2023 나는 리뷰어다 활동의 첫 번째 리뷰   새해 들어 첫 리뷰할 책은 "자바에서 코틀린으로" 이다. 주종목이 자바 스프링인 본인으로서는 미래를 대비해 꼭 필요한 책이라 할 수 있겠지. 그래서
"자바에서 코틀린으로 - 한빛미디어" 내용보기
코틀린으로 리팩터링하기

덩컨 맥그레거, 냇 프라이스 지음

오현석 옮김

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

2023년 2월

2023 나는 리뷰어다 활동의 첫 번째 리뷰

 

새해 들어 첫 리뷰할 책은 "자바에서 코틀린으로" 이다.

주종목이 자바 스프링인 본인으로서는 미래를 대비해 꼭 필요한 책이라 할 수 있겠지.

그래서 리뷰를 신청하게 되었습니다?

 

2021년 2월에 처음으로 나는 리뷰어다 활동을 시작했는데, 벌써 햇수로 3년째이다.

과연 올해도 리뷰어가 될 수 있을까 싶었는데, 그래도 꾸준히 올린 덕분에 올해도 선정해 주신 것 같다.

(한빛미디어!! 항상 사랑합니다!!)

 

그렇다면 본인의 개발자 경력도 그렇다는 이야기인데... 과연 내가 3년 차 개발자인가 싶다.

 

아무튼. 리뷰를 시작해 보자.

 

"이 책은 코틀린을 써서 컴퓨터 프로그래밍을 짜는 방법을 가르쳐주지 않는다."

 

이 책을 공부하고자 하는 개발자님이시라면 책의 목적이 이렇다는 것을 알아야 한다.

 

이 책은 기존 자바 코드를 코틀린으로 변환하면서 코틀린 언어를 가르쳐주고, 기존 자바와 코딩 지식을 활용해 더 빠르게 코틀린을 채택하고 싶어 하는 자바팀을 위해 고안된 책이다.

 

동기가 충분하고 경험이 많은 자바 개발자는 대부분 코틀린 언어의 기능을 아주 빠르게 배울 수 있다고 저자는 생각하고 있다.

이 책은 코틀린의 장점을 살릴 수 있도록 사고방식과 설계방식을 조정하도록 돕고, 자바식 사고방식의 코드를 코틀린식 사고방식의 코드로 마이그레이션 하는 방법을 보여주는 책이다.

 

책이 어떻게 구성되어 있는지 보자.

전형적인 자바 프로젝트의 몇 가지 측면을 어떻게 개선할 수 있는지를 살펴보며,

'자바의 방식'에서 '코틀린의 방식'으로라는 패턴의 제목으로 정리한다.

 

코틀린을 사용하면 자바에서 사용하기 힘든 접근 방법을 쉽게 쓸 수 있게 하거나 자바에서는 흔히 사용되는 접근 방법을 사용하지 않게 권장함으로써, 여러분의 설계를 실수할 여지가 더 적고, 더 간결하며, 더 도구 사용에 유리한 방향으로 이끌어 준다.

 

결국엔 안전하면서도 두 언어가 섞인 코드 기반을 계속 유지해 나갈 방법을 사용해 점진적으로 자바를 코틀린으로 리팩터링 한다.

 

목차를 정리해 보자.

 

1 소개
2 자바 프로젝트에서 코틀린 프로젝트로
3 자바 클래스에서 코틀린 클래스로
4 옵셔널에서 널이 될 수 있는 타입으로
5 빈에서 값으로
6 자바에서 코틀린 컬렉션으로
7 동작에서 계산으로
8 정적 메서드에서 최상위 함수로
9 다중식 함수에서 단일식 함수로
10 함수에서 확장 함수로
11 메서드에서 프로퍼티로
12 함수에서 연산자로
13 스트림에서 이터러블이나 시퀀스로
14 누적시키는 객체에서 변환으로
15 캡슐화한 컬렉션에서 타입 별명으로
16 인터페이스에서 함수로
17 목에서 맵으로
18 열린 클래스에서 봉인된 클래스로
19 예외 던지기에서 값 반환으로
20 I/O 수행에서 데이터 전달로
21 예외에서 값으로
22 클래스에서 함수로
23 여행은 계속된다

 

자바의 방식에서 코틀린의 방식으로 라는 패턴의 제목으로 정리되어 있으며, 자바개발자라면 친숙한 용어들이 나열되어 있다.

 

자바에서 코틀린으로 넘어가는 개발자들은 코틀린을 대충 살펴보고는 쉬운 언어라고 생각하고, 코틀린 문법으로 작성한 자바 코드를 작성하기 쉽니다. 하지만 코틀린의 결에 맞게 코드를 작성하면 전통적인 자바 객체 지향 코드보다 더 안전하고, 유지 보수하기 쉽고, 더 간결하면서 보기 좋은 코드를 작성할 수 있다.

 

이 책을 통해, 자바식 사고방식과 다른 코틀린식 사고방식을 접하고 얻어갈 수 있다면 이 책을 읽는 개발자에게 큰 도움이 될 수 있는 책이다.

 

코틀린을 공부하고자 하는 자바 개발자분들이여. 이 책은 꼭 거쳐가도록 하자.

 

코틀린의 결을 얻어 갈 때까지.

 

Love Yourself.

c*****8 2023.02.26. 신고 공감 0 댓글 0
리뷰 총점 종이책
자바에서 코틀린으로
"자바에서 코틀린으로" 내용보기
자바는 알고...있는데 너는 누구냐? 코틀린?? JVM 기반의 언어로 JAVA와 100%의 호환성을 보이는 코틀린. 하지만 이 책의 저자들은 코틀린은 자바와 "결"이 다르다고 말한다. 자바는 가변 객체와 리플렉션을 선호하며 합성성과 타입 안전성을 대가로 지블한다. 자바와 비교해서, 코틀린의 결은 불변 값을 변환하는 것과 독립적인 함수를 선호하며, 비침투적이고 도움이 많이 되
"자바에서 코틀린으로" 내용보기

 


자바는 알고...있는데 너는 누구냐? 코틀린??

JVM 기반의 언어로 JAVA와 100%의 호환성을 보이는 코틀린.

하지만 이 책의 저자들은 코틀린은 자바와 "결"이 다르다고 말한다.

자바는 가변 객체와 리플렉션을 선호하며 합성성과 타입 안전성을 대가로 지블한다. 자바와 비교해서, 코틀린의 결은 불변 값을 변환하는 것과 독립적인 함수를 선호하며, 비침투적이고 도움이 많이 되는 타입 시스템을 제공한다. (자바에서 코틀린으로 p.530)

 

객체지향언어 JAVA의 세상에서 지내던 나에게 함수형 언어는 접근하기 쉬운 부분은 아니었다. 클래스, 인스턴스, 다형성, 상속성 이렇게 다양한 개념을 내가 얼마나 머리를 쥐어 뜯어가면서 공부를 했는데...'

 

자바와 완벽한 호환을 보이지만 결이 다르다는 코틀린.

이 책은 코틀린의 기초 설명, 문법등은 나오지 않는다.

그러므로 자바 8 이후 변경사항에 대해 알고 있고 코틀린에 대해 잘 알고 있다는 가정에서 시작한다.

 

이 책은 기존 자바로 개발되어 있는 가상의 프로그램 '트래블레이터'의 코드를 코틀린으로 변환하고 동시에 리팩터링 하는 과정을 보여준다. 이 과정을 통해서 왜! 코틀린인지, 코틀린은 언제 어떻게 사용할 수 있는지 알 수 있다.

그리고 함수형 프로그래밍의 사상을 엿볼 수 있다.

 

자바 개발자로 일하고 있지만 너무 많은 파일 들이 생성되고 수많은 클래스들이 있다.

스프링, 스프링 부트 프로젝트에는 의존성 주입 등 서로서로 너무 엉겨 붙어 있어서 실제 프로젝트에 들어가면 제대로 된 테스트 및 리팩터링은 정말 꿈도 꾸기 어려운 부분도 있다.

마틴 파울러의 리패터링 벽돌 책을 보며 한숨만 쉬고는 했다.

 

이 책을 보고 코틀린으로 변환하는 과정을 보면서

진짜 실무에서 바로 적용할 수 있는 방법들이 나와 있는 것이 좋았다.

그 예를 몇가지 소개해 보겠다.

 

자바 프로그래머들을 늘 괴롭히는 NULL에 대해 코틀린은 널으 포용하여 없음을 뜻하는 값을 일관성 있게 다를 수 있다는 것은 정말 매력적이었다. 코틀린의 안전한 호출 연산자를 사용하여 널이 될 가능성이 있는 참조를 확장함수를 사용하여 더 편리하게 호출 할 수 있다.

자바 프로젝트에서 자바빈과 POJO를 사용하여 데이터를 표현하는 것은 너무도 당연한 것이었다. 하지만 이렇게 변수로 값을 표현하게 하면 가변적이 되고 이는 복잡성을 야기한다. 하지만 값은 불변이다. 코틀린은 불변객체를 선호한다. 가변적이라고 하는 것은 상태가 변한다는 것이고 이는 어떤 장소의 상태가 다른 장소에서 예상하는 상태와 일치하지 않을 수 있으므로 생기는 여러 문제의 근원이다. 이는 에일리어싱(aliasing error)를 발생시킬 수 있다.

 

이는 '7장 동작에서 계산으로' 에서도 연관되어 나오는데 함수를 계산과 동작으로 나누어 보는 것이다.

동작은 언제, 얼마나 많이 호출되는냐에 따라 결과가 달라지는 함수라면 계산은 호출된 시간과 관계없이 항상 같은 결과를 내놓는다. 자바에서 우리가 작성하는 대부분의 메서드는 동작이다. 실행시점에 의존하기 때문이다. 프로그램에 어떤 함수가 있을 때 이 함수를 호출한 모든 부분에서 함수 호출을 그 함수 호출의 결괏값으로 치환해도 프로그램이 똑간이 작동할 때 이런 함수를 참조 투명한 함수라고 한다. 나는 이 부분이 가장 인상깊었다. 호출되는 시점! 그 보이지도 찾기도 어려운 그 시점 때문에 내가 얼마나 많은 삽질을 했던가! 이런 부분을 계산함수로 리펙터링 한다. 객체의 상태를 변경하는 대신 일부분이 변경된 새 객체를 반환하도록 하고 동작을 계산으로 변환하는 방법, 가변성을 불변성으로 바꾸어 코드를 더 잘 이해할 수 있도록하고 테스트하기 좋게 만드는 과정을 배울 수 있었다.

 

16장에서 소개되는 "인터페이스에서 함수로" 부분도 객체지향으로 프로그래밍하는 벙법과 함수로 접근하는 방법을 다각도로 비교 해본다. 코틀린 함수로 자바의 인터페이스를 대체하게되면 결합을 더 줄일 수 있다. 이어서 17장에서는 테스트를 위한 목(Mock)에 대해 나오는데 저자는 목 프레임워크가 인터페이스 구현뿐만 아니라, 예상되는 메서드 호출과 호출시 반환해야 하는 대용을 기술하게 해주는데, 이것이 메서드 호출과 예상 반환값을 이해하기 어렵게 만든다는 것이었다. 이 내용에 크게 공감이 되었다. 코틀린 코드 기반에서는 목을 사용하지 않는 것이 더 낫다고 한다.

 

코틀린은 정적 타입 지정언어로 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마나 컴파일러가 타입을 검증해 준다. 그래서 안전하다. 또한 함수형 프로그래밍의 특징인 불변성으로 일단 만들어지고 나면 내부 상태가 바뀌지 않는 불볍 객체를 사용한다. 그래서 Side Effect가 없다. 코틀린의 사용으로 프로그램의 복잡도를 줄이고 마이그레이션이 쉽다.

 

이 책은 손수 하나하나 찾아가며 고치는 리팩터링을 알려주기보다 인텔리J에서 제공하는 리팩터링 기능을 잘 사용하도록 해준다. 이러한 실용적인 방법을 알려주는 부분은 코틀린을 코틀린답게 설명하고 있다는 생각을 해보았다.

 

나는 코틀린에 대해 잘 몰랐다.

이 책의 코틀린 소스 한 줄 한줄 이해하기는 어려웠지만 코틀린이 어떤 언어인지, 어떠한 경우에 사용하는지 배울 수 있었다. 또한 함수형 프로그래밍 언어에대한 매력을 충분히 느낄 수 있었다.

자바 개발자라고는 하지만 이 책에서 자바코드를 코틀린으로 변환하는 과정에서 저자의 자바에 대해 깊은 지식 역시 함께 배웠다. (부부가 함께 이 책을 저술했다는데 중간중간 그들의 티키타카도 재미있었다.)

 

이 책은 자바 프로그래머로서 자바를 어떻게 더 잘 쓸 수 있는지 알 수 있게 해주었다.

그리고 코틀린을 통한 함수형 프로그래밍의 사상과 장점을 엿볼 수 있었다.

오늘 바로 서점에서 코틀린 프로그래밍에 대한 책을 구입했다.

 

자바에서의 생활이 조금은 회의감이 들기 시작했다면 코틀린으로 여행을 떠나보면 어떨까?

'트래블레이터' 앱으로 경로를 찾아보자!

 

그리고 저는 그 여행 강력하게 추천합니다!

 

"이 책은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성한 서평입니다 "

 

i******8 2023.02.22. 신고 공감 0 댓글 0
리뷰 총점 종이책
[서평] 자바에서 코틀린으로
"[서평] 자바에서 코틀린으로" 내용보기
네이버 블로그 리뷰: https://blog.naver.com/rock1192/223020105277   코틀린은 최근들어 시중에 관련 서적이 많이 나와 있다 코틀린은 JVM 언어이므로 보통 자바 개발자들이 코틀린으로 전환하려고 많이 사용하고 있으며 이전에는 안드로이드 앱개발자들이 코틀린 언어를 적극 활용해 앱을 개발하고 있었다 이제는 앱 뿐만 아니라 서버까지 코틀린 언어는 자바를 완전히 대체할 수
"[서평] 자바에서 코틀린으로" 내용보기

네이버 블로그 리뷰: https://blog.naver.com/rock1192/223020105277

 

코틀린은 최근들어 시중에 관련 서적이 많이 나와 있다

코틀린은 JVM 언어이므로 보통 자바 개발자들이 코틀린으로 전환하려고 많이 사용하고 있으며

이전에는 안드로이드 앱개발자들이 코틀린 언어를 적극 활용해 앱을 개발하고 있었다

이제는 앱 뿐만 아니라 서버까지 코틀린 언어는 자바를 완전히 대체할 수 있는 언어로 발전해왔다

코틀린의 결에 맞게 값 중심의 프로그래밍, 널 가능성, 람다, 확장 함수, 결과 타입 등을 활용해 코드를 작성하면서 코틀린의 장점을 살리기 시작하면 전통적인 자바 객체 지향 코드보다 더 안전하고, 유지 보수하기 쉽고, 더 간결하면서 보기 좋은 코드를 작성할 수 있다

이 책은 자바와 코틀린의 결을 비교하면서 자바에서 자주 쓰이는 기능을 어떤 코틀린 기능으로 이식할 수 있는지 차근차근 설명한다

자바 코드를 코틀린으로 리팩터링하는 과정을 보여 주면서 코드 기반을 깨지 않고 자바와 코틀린을 혼용하면서 점진적으로 자바 코드를 코틀린으로 변환한다

변환된 코틀린 코드가 단순히 자바 코드의 코틀린 버전이 아니라, 코틀린 결을 따르는 코틀린다운 코드가 되는 과정을 보여준다

기존 자바 프로젝트를 코틀린으로 변환하거나, 변환하는 과정에서 자바와 코틀린을 혼용하면서 계속 프로젝트를 유지 보수해야 하는 사람들에게 큰 도움이 될 수 있다

 

예제 코드

https://java-to-kotlin.dev/code.html

https://github.com/java-to-kotlin/code

 

 

코틀린은 얼마 되지 않은 언어이지만, 자바와 결이 다르다

코틀린의 홈페이지의 '왜 코틀린인가' 부분(https://oreil.ly/pqZbu)에는 간결성, 안전성, 상호 운용성, 도구 친화성이라는 네 가지 목표가 적혀있었다

코틀린 언어와 표준 라이브러리 설계자들은 이런 설계 목표에 기여할 수 있도록 암시적으로 선호도를 코드화했다

  • 코틀린은 가변 상태를 변경하는 것보다 불변 데이터를 변환하는 쪽을 더 선호한다

  • 코틀린은 동작을 명시적으로 작성하는 쪽을 더 선호한다

  • 코틀린은 동적 바인딩보다 정적 바인딩을 더 선호한다

  • 코틀린은 특별한 경우를 좋아하지 않는다

  • 코틀린은 마이그레이션을 쉽게 하기 위해 자신의 규칙을 깬다

 

 

마틴 파울러의 책 이후 리팩터링이라는 기술도 오랜 시간이 지났다

파울러의 책은 변수 이름 변경같이 아주 단순한 리팩터링까지 모두를 직접 손으로 수행하는 단계로 자세히 설명해야 했지만,

이제는 기본적인 리팩터링이 자동으로 이뤄지기 때문에 이런 자동 리팩터링을 엮어서 코드 기반을 좀 더 대규모로 바꾸는 데 더 많은 시간과 에너지를 기울일 수 있다

가능하면 IDE가 제공하는 자동 리팩터링을 활용하지만, IDE가 원하는 리팩터링을 제공하지 않을 때는 텍스트 에디터로 돌아가 직접 코드를 변경해야 한다

텍스트를 변경해서 리팩터링을 수행하는 과정은 지루하고 실수를 저지르기도 쉽다

이런 위험을 줄이고 지루함을 없애기 위해 변경해야 하는 텍스트의 양을 가능한 최소화해야 한다

자동 리팩터링을 사용해서 코드를 변환하되, 변환한 결과가 한 식만 변환하면 자동 리팩터링이 그 변경을 잡아내서 원하는 최종 결과로 코드를 변경해줄 수 있는 형태로 코드를 변환해야 한다

 

 

코틀린은 기본적으로 null을 사용하지 않으며 null을 사용하기 위해서는 변수나 객체에 '?'를 붙여줘야 한다

하지만 '?' 나 '!!' 와 같은 기호들을 남발하다보면 코틀린 스럽지 못한 코드가 될 가능성이 매우 높아진다

불가피한 상황에서는 널 가능성 기호를 사용할 수 밖에 없겠지만 코틀린 스럽게 개발하기 위해서는 널을 허용해야 하는 것이 맞는 것인지 생각을 많이 해보아야 한다

 

 

자바와 코틀린의 부드러운 상호 운용으로 인해, 컬렉션을 사용하는 코드를 변환하는 작업도 매끄러운 경우가 많다

어떤 자바 코드가 가변 컬렉션에 의존한다면 코틀린이 자바 코드에서 가정하는 불변 조건을 깨는 일은 없는지 더 조심해야 한다

자바 코드를 코틀린 코드로 리팩터링하는 좋은 접근 방법은 코틀린으로 변환하기 전에 '공유된 컬렉션을 변경하지 말라'를 따르는 것이다

 

 

자바와 코틀린 (컬렉션의) 상호 운용을 매끄럽게 하려면 다음과 같이 해야 한다

  • 자바가 코틀린에 전달한 컬렉션 내부를 변경할 수 있다는 사실을 인식하라

  • 자바가 코틀린으로부터 전달받은 컬렉션 내부를 변경할 수 있다는 (적어도 내부를 변경하려고 시도해볼 수 있다는) 사실을 인식하라

  • 자바 컬렉션을 사용하는 코드에서 컬렉션 내부 상태 변경을 제거하라. 상태 변경을 제거할 수 없는 경우에는 방어적 복사를 수행하라.

 

 

코틀린은 컬렉션 연산을 정의하기 위해 새로운 인터페이스를 정의하는 대신 Iterable에 대한 확장 함수를 제공한다

코틀린의 filter도 Iterable에 대한 확장 함수다 Stream을 반환하는 filter와 달리 코틀린 filter는 List를 반환한다(List도 Iterable이기 때문에 함수 호출을 계속 연쇄할 수 있다).

코틀린은 Sequence 추상화는 자바 스트림과 같은 지연 계산을 제공한다

Sequence에 대한 map연산은 다른 Sequence를 반환한다

시퀀스 연쇄의 연산은 어떤 최종 연산이 파이프라인 평가를 요구할 때 이뤄진다

Collection이나 Iterable 또는 심지어 Iterator에도 시퀀스 변환을 위한 asSequence() 확장 함수가 들어있다

 

 

클라이언트가 알 필요 없는사소한 세부 사항을 감추기 위해 객체 지향 언어는 객체가 데이터를 캡슐화할 수 있다

 

 

목은 소프트웨어에서 자리를 잡고 있다.

그리고 아웃사이드인 TDD를 사용하면 완전한 구현을 커밋할 필요 없이 서로 협력하는 객체들 사이에 기능을 분산하는 방법의 프로토타입을 만들어 내면서 설계를 확실히 개선할 수 있다.

하지만 아웃사이드인 TDD는 데이터 흐름으로 살펴보면 더 나았을 수도 있는 설계를 객체 간의 상호 작용으로 표현함으로써 설계상의 문제를 가리게 되는 경향이 있다

데이터에 집중하면 테스트가 단순해진다

특히 값을 읽기만 하는 경우 이런 사실이 더 잘 성립한다

 

 

오류를 완벽하게 처리하고 싶다면, 맨 처음 해야 할 일은 잘못될 수 있는 요소가 무엇인지 알아내는 것이다

코틀린에서는 힌트를 제공하는 체크 예외가 없고, 자바에는 체크 예외가 있기는 하지만 대부분 자바 코드가 체크 예외를 사용하는 방식이 몹시 나쁘므로, 체크 예외와 관련해서는 두 언어가 그다지 다르지 않다

코드가 자신이 실패할 방법을 외부에 알려주는 형태로 작성되지 않았다면, 우리가 코드를 관찰하고 직관과 경험에 의지해 어떤 오류가 발생할 수 있을지 알아내야 한다

코드의 모든 측면을 주의 깊게 처리해야 한다

 

 

개인적으로 처음 코틀린을 사용하기 위해서 어려움을 겪었던 부분중에 하나가 이 자바 코드를 코틀린 코드로 어떻게 작성해야되지? 였다

자바는 10년동안 사용해서 매우 익숙해져 있는 상태였고 신규 프로젝트에 코틀린을 도입하기 위해 별도로 코틀린 강의와 코틀린 책을 모두 독파한다음 프로젝트를 코틀린으로 작성하기 시작하면서 부터 바로 막히기 시작했다

그래서 기존 프로젝트의 자바 코드를 코틀린으로 변환시키고 변환시킨 코드를 참고해서 오류를 제거하고 코틀린에 맞게 수정하기 위해 구글링을 하는 것을 반복하면서 점차 익숙해졌었다

이 책은 자바 언어에 익숙해져 있던 개발자들이 위와 같은 과정을 반복하면서 익숙해져가는 시행착오를 상당 부분 줄여주고 저렇게 개발해나갈때 다소 코틀린 스럽지 못한 코드들과 널 허용을 남발하는 부분들을 어떻게 코틀린 스럽게 변환해나가야되는지 자세하게 알려주고 주의를 주면서 자바 코드에 익숙한 개발자들이 코틀린 스럽게 개발해나갈 수 있게 도움을 준다

코틀린의 기초를 익히고 싶다면 이 책보다는 다른 코틀린 입문 서적을 추천하는 바이고 이 책은 자바 언어에 이미 익숙해져 있는 개발자들이 코틀린 프로젝트를 진행하면서 기존에 자바 언어로 구현된 코드를 어떻게 코틀린 스럽게 코틀린 코드로 작성해야되는지 디테일하게 가이드 해주는 책이라고 생각하면 된다

이 책은 코틀린의 결에 맞게 코드를 작성하는 것을 강조하고 있다

책에서 옮긴이는

코틀린의 장점을 살려서 개발하면 전통적인 자바 객체 지향 코드보다 더 안전하고, 유지 보수하기 쉽고, 더 간결하면서 보기 좋은 코드를 작성할 수 있다

고 말하고 있다

이 책을 통해 어떻게 하면 자바 코드에 코틀린의 결을 살려서 같은 일을 하는 코드로 변환할 수 있는지에 대해 알 수 있고

코틀린으로만 코드를 작성할 때도 도움을 받을 수 있다

책의 리팩터링 단계를 따라하면서 리팩터링에 대해서도 연습할 수 있다

무엇 보다 자바식 사고방식과 다른 코틀린 사고방식을 접하면서 연습하고 이해하면서 자연스럽게 코틀린 스럽게 개발하는 방법에 대해 익혀나갈 수 있는 부분이 너무 좋은 것 같고

처음 이 책의 제목을 보고 자바 개발자가 코틀린 코드를 작성하는데 익숙해지게 도움을 주는 책이겠지 생각하고 읽기 시작했었는데

이 책을 읽으면서 연습하고 생각하고 고민하면서 자바와 코틀린 코드 작성 수준이 동시에 향상되는 효과를 누릴 수 있게 해주는 책이라는 결론을 내리게 되었다

※ 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

r******1 2023.02.18. 신고 공감 0 댓글 0
리뷰 총점 종이책
[서평] 자바에서 코틀린으로
"[서평] 자바에서 코틀린으로" 내용보기
#자바 #코틀린 #안드로이드 #메타 이 책은 덩컨 맥그레거, 냇 프라이스가 저자분이고 오현석이라는 역자분인 책이다. 코틀린은 인텔리J를 만드는 젯브레인스에서 처음 개발했다. 구글은 2017년부터 코틀린을 안드로이드 앱용 언어로 사용했으며, 구글과 젯브레인스는 2018년부터 코틀린재단의 코틀린 언어 개발을 지원하고 있다. 구글의 안드로이드 팀은 2019년부터 '코틀린 퍼스트'
"[서평] 자바에서 코틀린으로" 내용보기

#자바 #코틀린 #안드로이드 #메타

이 책은 덩컨 맥그레거, 냇 프라이스가 저자분이고 오현석이라는 역자분인 책이다. 코틀린은 인텔리J를 만드는 젯브레인스에서 처음 개발했다. 구글은 2017년부터 코틀린을 안드로이드 앱용 언어로 사용했으며, 구글과 젯브레인스는 2018년부터 코틀린재단의 코틀린 언어 개발을 지원하고 있다.

구글의 안드로이드 팀은 2019년부터 '코틀린 퍼스트' 접근법을 채택했다. 구글 지도, 홈, 플레이, 드라이브, 메시지 등 코틀린으로 구축된 구글 안드로이드 앱은 70개를 넘는다. 구글은 코틀린에 대해 자바보다 더 효율적이고 안전하며, 더 작은 코드베이스를 생성하면서도 자바와 100% 상호운용 가능하다고 설명한다. 자바 코드베이스와 코틀린 코드베이스를 공존하게 해 자바에서 코틀린으로 전환을 더 쉽게 할 수 있다고도 한다.

코틀린은 JVM기반의 언어이므로 인텔리J에서 많은 기능을 지원하고 있다. 이 책에서는 그러한 기능들에 대해서 여러가지 활용법을 알려주고 있다. 코틀린의 결에 맞게 자바 빈 대신 코틀린 값 중심의 프로그래밍, 자바 옵셔널 대신 널 가능성 타입, 람다, 컬렉션, 확장 함수, 결과 타입 등을 활용해 코드를 작성하면서 코틀린의 장점을 살리기 시작하면 전통적인 자바 객체 지향 코드보다 더 안전하고, 유지 보수하기 쉽고, 더 간결하면서 보기 좋은 코드를 작성할 수 있다. 오늘날 페이스북, 메신저, 인스타그램 등의 안드로이드 앱은 각각 100만줄 이상의 코틀린 코드를 갖고 있으며 전환율은 증가하고 있다. 그리고 전체적으로 안드로이드 코드베이스에 1천만줄 이상의 코틀린 코드가 있다.

이 책의 장점은 기존에 자바 코드와 코틀린 코드를 모두 활용해본 중급 개발자들에게 자바와 코틀린 언어의 차이점에 대해서 다양하게 알려주면서 자바 코드를 코틀린 코드로 변경하기 위해 필요한 인사이트를 준다는 점이다. 하지만 두 언어에 대해 모르는 초보 개발자들에게는 이해하기 어려운 용어들도 많이 존재한다. 또한 아직까지는 자바에 비해 코틀린은 자바보다 대중적이지 않기 때문에 더 적은 도구가 존재한다는 점이다. 또 코틀린과 자바의 상호운용성을 고려하는 도구는 복잡하다.자바와 코틀린 언어의 100% 상호운용성에도 모든 자바를 제거하고 코틀린으로 대체할 수 없으므로 새롭게 작성해야 하는 부분이 발생한다. 코틀린 코드가 자바 인터페이스로 구현된 코틀린 인터페이스를 호출하는 경우 코틀린의 null 검사 생략이 null을 허용하고, 나중에 null 포인터 예외를 생성할 수 있다. 코틀린과 자바 코드 간의 상호운용성 활성화하면 코틀린에 플랫폼 타입을 사용하게 한다. 플랫폼 타입은 코틀린 코드에서 제공하는 정적 안정성 대신 런타임 Null 포인터 역참조를 발생시켜 충돌을 일으킨다. 따라서 자바의 결로 되어 있는 코드를 코틀린 결로 새롭게 짜야 하는 상황이 발생하지만 그 동안 이에 대한 도서는 없었다. 이 책의 예제 코드는 https://java-to-kotlin.dev/code.html 주소와 https://github.com/java-to-kotlin/code 주소에서 확인할 수 있다.

개인적인 의견이지만 최근 소프트웨어는 수많은 레거시 표현들을 대체할 수 있는 방향으로 발전되고 있고 점점 더 일반화되어 가고 있다. 이런 상황에서 남이 만든 코드만 가져다 쓰기만 반복적으로 하다보면 조건반사에 의해 코드작성법을 잊어버릴 수 있다. 따라서 이러한 주제의 책은 소중하며 더 많이 읽혀져야 하므로 많은 분들에게 이 책을 추천하고 싶다.

 

※ 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

s********0 2023.02.20. 신고 공감 0 댓글 0