본문 바로가기
+ 펴낸 책

코틀린 쿡북

by 책만 2020. 6. 4.

코틀린 쿡북

85가지 문제 중심 레시피로 완성하는 코틀린 프로그래밍

켄 코우젠 지음 | 김도남 옮김 | 276쪽 | 25,000원

2020년 6월 10일 출간 | 185*240*16 | ISBN 9791189909147

원서: Kotlin Cookbook: A Problem-Focused Approach

판매처 [교보문고] [YES24] [알라딘] [인터파크] + 전국 교보문고 매장

전자책 판매처 [리디북스] [교보문고] [YES24] [알라딘] | ISBN 9791189909185 | PDF 포맷 | 

 

★ 정오표: https://www.onlybook.co.kr/entry/kotlin-cookbook-errata 

★ 예제 코드: https://github.com/kousen/kotlin-cookbook

 

자바에 익숙한 개발자가 코틀린을 가장 빠르게 배울 수 있는 방법,

이 책의 85가지 실전 레시피 예제에 모두 담겼다! 

개발 실무 중에 마주치는 여러 상황에서, 간결하고 안전하며 좀 더 코틀린스럽게 코드를 짜는 방법을 제시해준다. 

 

코틀린 객체 지향 프로그래밍, 함수형 프로그래밍, 

컬렉션, 시퀀스, 영역 함수, 코틀린 대리자(delegate), 테스트, 

스프링 부트를 코틀린으로 설정하는 방법, 코루틴과 구조적 동시성 등 

자바 기반 언어인 코틀린을 자신의 프로젝트에 적용하는 방법을 손쉽게 익힐 수 있다. 이 책의 실용 레시피는 경험이 풍부한 개발자는 물론, 코틀린을 새롭게 시작하는 초보 개발자 모두에게 매우 유익하다.

 

▶ 안드로이드와 스프링 등 특정 프레임워크를 위한 실용적인 조언

▶ 람다, 시퀀스, 동시성 등 함수형 프로그래밍 개념 적용

▶ 대리자, 지연 초기화, 영역 함수 사용 방법

▶ 자바 호환성,코틀린을 사용한 자바 라이브러리 접근 방법

▶ 사용자 정의 확장 함수 추가

▶ JUnit 5 같은 유용한 라이브러리 사용법


 

추천의 글

코틀린은 안드로이드와 스프링이 공식적으로 선택하고 권장하는 프로그래밍 언어입니다. 더 무슨 설명이 필요할까요. JVM 플랫폼의 안정성과 스프링이라는 뛰어난 애플리케이션 프레임워크가 제공하는 멋진 기능에 만족했지만 발전이 더딘 자바 언어 때문에 답답했던 서버 개발자들이라면 스프링 개발팀이 적극 지원하는 코틀린으로 개발해보기를 적극 추천합니다. 그런데 코틀린 문법을 익히고 나서 실전에 들어가면 여러 가지 문제를 만나게 될 겁니다. 아직은 새로운 언어와 기술의 조합이라 그런 문제의 해결 방법을 제시하고 그 이유를 자세히 설명해줄 동료를 주변에서 찾기는 어렵겠지요. 

이번에 출간되는 『코틀린 쿡북』은 바로 그런 분들에게 필요한 책입니다. 개발 중 자주 만나는 문제를 풀기 위해서 코틀린의 어떤 방법을 사용해야 하는지부터, 스프링과 기존 자바 기술을 코틀린에서 사용할 때 빌드 스크립트에 어떤 플러그인을 넣어야 도움이 되는지까지 콕 집어 설명해주는 멋진 길잡이가 되어줄 것입니다. 

이 책과 함께 코틀린의 매력에 미처 빠지기도 전에 몇 가지 걸림돌로 인해 다시 익숙할 뿐인 자바로 돌아가 버리는 안타까운 일이 없기를 바랍니다.

- 이일민 / EPRIL 대표, 『토비의 스프링 3.1』 저자

코틀린을 구글이 밀어주기 시작한 2017년 이래 안드로이드와 자바 서버 개발자를 중심으로 하는 개발자 커뮤니티에서는 코틀린에 대한 관심이 많이 늘었고, 그에 따라 졸역 『Kotlin in Action』을 비롯해 수많은 코틀린 관련 서적이 출간됐다. 하지만 3년이 지난 현재까지도 대부분의 서적이 실무나 좀 더 고급 코틀린 기법을 다루기보다는 기초적인 코틀린 개발을 다루고 있어서 내심 아쉬움이 컸다.

그러던 차에 후배 개발자지만 평소 내가 존경해 마지않는 김도남 님이 코틀린 책을 번역하신다는 이야기를 전해 듣고, 책 제목을 알아내서 원서를 살짝 살펴봤다. 

이 책에는 그동안 실무에서 코틀린을 사용하면서 일일이 웹을 뒤져서 배울 수 있었던 여러 가지 기법이 잘 설명되어 있을 뿐만 아니라, 꼭 필요한 내용도 간결하게 잘 정리되어 있었다. 그간 내가 느껴온 아쉬움을 덜어줄 수 있는 책이며, 항상 배움의 끈을 늦추지 않고 이런저런 책을 많이 읽는 도남 님다운 혜안이 담긴 도서 선정이다. 마지막 번역 결과물을 보니, 겨우 두 번째(실제 출간되는 것으로는 첫 번째) 번역서이지만 상당히 부드럽게 번역이 잘 되어 있음을 느낄 수 있었다. 믿고 읽을 만한 역자가 한 분 더 등장하는구나 하는 생각에 마음이 기쁘다. 자신의 분야에 대한 깊은 이해와 통찰, 어학 능력, 책 한 권을 처음부터 끝까지 비슷한 호흡과 언어로 번역해 나가는 꾸준함 등이 좋은 역자가 되기 위해 필요한 덕목일 것이다. 감히 내가 누구를 평가할 수준은 아니지만, 도남 님은 이런 덕목을 갖춘 분이라고 생각한다. 

마지막으로 이렇게 좋은 역자와 좋은 원서가 만나 탄생한 이 책을 통해, 독자들이 실무에서 코틀린을 더 잘 사용할 수 있게 되기를 바라고, 많은 개발자들이 더 고급 코틀린 주제를 공부하기 시작하는 출발점으로 이 책이 사용될 수 있기를 빈다. 이 책을 읽는 독자들의 건승을 기원한다. 

- 오현석 / 코틀린/자바 백엔드 개발자, 『Kotlin in Action』, 『코틀린을 다루는 기술』 등 번역

구글 I/O를 통해 코틀린을 안드로이드용 공식 언어로 발표한 지도 벌써 몇 년이 지났습니다. 이제 안드로이드 개발을 할 때 코틀린은 아주 당연한 선택이 되었습니다. 저도 코틀린을 몇 년째 주력 언어로 사용 중인데, 10년 넘게 다뤄왔던 자바 문법이 이젠 가물가물할 정도로 코틀린의 매력에 푹 빠져 있습니다. 

막상 코틀린을 처음 접하게 되면, 코틀린의 다양한 문법뿐 아니라 표준 라이브러리가 제공하는 방대한 함수들에 압도당하게 됩니다. 공식 문서나 시중에 출간된 여러 코틀린 기본 서적들은 코틀린의 문법을 잘 설명해 주지만, 문법을 익힌 뒤에도 과연 이런 경우엔 어떻게 짜야 더 코틀린스러울까? 좀 더 간결하고 읽기 좋게 짤 방법은 없을까? 라는 물음이 계속 따라다닙니다. 얄궂게도 인텔리제이(IntelliJ)의 자동완성이 제안하는 코드가 여러분이 고심해서 짠 코드보다 더 아름다울 때도 많습니다. 

그런 면에서 이 책은 우리가 개발하면서 흔히 마주치는 여러 상황에서 간결하고, 안전하고, 좀 더 코틀린스럽게 코드를 짜는 방법을 제시합니다. 갓 문법을 떼고 방황하는 코틀린 초심자나, 좀 더 좋은 코드를 짜고 싶은 코틀린 숙련자 모두에게 좋은 가이드를 제공하는 책이라고 생각합니다. 

- 안세원 / 카카오모빌리티 안드로이드 애플리케이션 개발자

IT 분야에서는 몇 년에 한 번씩 개발자가 소프트웨어를 작성하는 방법을 바꾸도록 위협하는 혁명적인 새로운 언어가 등장하지만 대부분은 좀처럼 기대에 부응하지 못한다. 그러나 코틀린은 달랐다. 코틀린이 선보인 2011년 이후, 코틀린은 천천히, 거의 알아차릴 수 없게, 살금살금 전세계의 코드 베이스로 잠입해 들어갔다. 오랫동안 자바를 사용해오면서도 뭔가 자바에 아쉬움을 느꼈던 개발자들은 여기저기서 조금씩 코틀린으로 슬금슬금 옮겨갔다. 그렇게 해서 개발자들은 코드 사이즈를 줄이고 자신들의 코드 능력도 향상시켰다.

코틀린은 안드로이드 개발에서 가장 선호하는 언어로 명성을 얻고 있으며 이제 이런 책이 절실히 필요한, 충분히 성숙한 단계에 이르렀다. 우선 이 책은 도움이 되는 풍부한 정보로 시작한다. 저자 켄은 여러분의 프로젝트를 위해 코틀린 설치와 설정 방법을 보여준다. 그리고 자바 환경이나 브라우저 또는 독립 환경에서 코틀린 프로젝트를 실행하는 방법을 설명한다. 이 책은 곧이어 개발자가 겪는 일상의 프로그램과 전반적인 구조에 대한 문제를 푸는 것으로 빠르게 넘어간다.

코틀린 테스트에 대한 내용도 있지만, 이 책은 그 자체로 테스트 주도적(test-driven)이라는 사실을 발견할 수 있을 것이다. 이 책은 코틀린을 사용하는 방법에 대한 실용적인 예제로 테스트를 활용한다. 여기서 다루는 테스트들은 이 책에서 소개한 레시피들을 여러분의 필요에 따라 더 정확히 맞게 적용할 수 있게 도와준다.

이 책은 여러분이 코틀린 여행으로 나아가는 데 손쉽고 실용적인 도움을 줄 것이다. 필수적인 코틀린 입문 안내서인 이 책은 모든 개발자가 자신의 업무를 위해 (실제 또는 가상의) 책상에 한 권씩 소장해야 할 것이다.

- 돈 & 데이비드 그리피스 / 『헤드 퍼스트 코틀린(Head First Kotlin)』의 저자

 

이 책의 구성

이 책은 많은 레시피로 구성되어 있고 각 레시피는 독립적이지만 대부분 다른 레시피와 연관되어 있다. 책을 읽는 순서는 독자가 선택해도 좋은데, 각 장에서 다루는 내용은 다음과 같다.

 

- 1장 ‘코틀린 설치와 실행’에서는 REPL 사용 방법, 메이븐(Maven)과 그레이들(Gradle) 같은 빌드 도구를 사용하는 방법, 그랄(Graal)에 포함된 네이티브 이미지 생성기 사용법을 비롯해 코틀린을 설치하고 실행하는 기본 과정을 다룬다.

- 2장 ‘코틀린 기초’에서는 비트 단위 시프트 연산자 또는 Pair 클래스의 to 확장 함수 사용법을 비롯한 난해한 문제들을 다루기에 앞서, 널 허용(nullable) 타입, 연산자 중복, 그리고 타입 간 변환 같은 코틀린의 기본 기능 일부를 다룬다.

- 3장 ‘코틀린 객체 지향 프로그래밍’에서는 다른 언어를 사용하는 개발자가 코틀린을 접하면 아마 놀라거나 색다르다고 생각할 수 있는 코틀린의 객체 지향 기능에 집중한다. 이 장에서는 const 키워드 사용 방법과 지원 속성(Backing Property), 지연 초기화(Lazy initialization), 그리고 기존 자바 개발자라면 혼동스러워 할 것이 분명한 무시무시한 Nothing 클래스를 코틀린이 어떻게 다루는지 설명한다.

- 4장 ‘함수형 프로그래밍’에는 해당 기능에 대한 설명이 필요한 함수형 기능을 사용하는 몇 가지 레시피만 들어 있다. 함수형 프로그래밍 개념은 특히 컬렉션, 시퀀스, 코루틴(coroutine)을 설명할 때를 비롯해 이 책 곳곳에서 다루지만, 특이하거나 특별히 흥미롭다고 여겨질 만한 몇 가지 함수형 기법을 이 장에서 설명한다.

- 5장 ‘컬렉션’에서는 배열과 컬렉션, 컬렉션 분해, 여러 속성을 사용한 정렬, 컬렉션에서 윈도우 사용, 수열 생성과 같이 사용법이 직관적이지 않은 메소드를 주로 다룬다.

- 6장 ‘시퀀스’에서는 자바의 스트림(stream) 사용 방식과 비슷한 코틀린이 지연 계산법으로 시퀀스 항목을 다루는 방법을 보여준다. 이 장의 레시피에서는 시퀀스 생성, 시퀀스에서 yield하는 방법, 무한한 시퀀스 사용법을 다룬다.

- 7장 ‘영역 함수’에서는 코틀린의 또 하나의 고유한 주제인 객체 컨텍스트 안에서 코드 블록을 실행하는 함수를 다룬다. 코틀린의 let, apply, also 같은 함수들은 매우 유용하다. 이 장에서는 이러한 함수의 사용 방법과 이유를 자세하게 설명한다.

- 8장 ‘코틀린 대리자’에서는 대리자(delegate) 구현 방법 같은 코틀린의 편리한 기능에 대해 설명한다. 대리자는 상속보다는 합성을 사용하며 lazy, observable, vetoable 같은 몇몇의 대리자가 코틀린 기본 라이브러리에 포함되어 있다.

- 9장 ‘테스트’에서는 특히 Junit 5에 초점을 둔 테스트라는 중요한 주제를 다룬다. 현재 버전의 Junit은 코틀린 일반 애플리케이션과 코틀린 스프링 프레임워크 애플리케이션에서 모두 잘 동작하도록 디자인되어 있다. 이 장에서는 테스트 작성과 실행을 손쉽게 만들어주는 몇 가지 접근 방식에 대해 다룬다.

- 10장 ‘입력/출력’에서는 자원 관리와 관련된 구체적인 2가지 레시피를 다룬다. 이 장에서는 여러 컨텍스트에서 광범위하게 응용할 수 있는 use 함수로 파일 입출력을 처리한다.

- 11장 ‘그 밖의 코틀린 기능’에서는 어느 다른 범주에도 쉽게 포함할 수 없는 주제를 다룬다. 현재 코틀린 버전을 얻는 방법, when 문이 값을 리턴하지 않는 경우에도 when 문을 강제하는 방법, 정규표현식과 함께 replace 함수를 사용하는 방법과 같은 주제를 다룬다. 더불어 TODO 함수와 Random 클래스도 설명한다. 또한 코틀린 함수를 자바 예외 처리와 통합하는 방법도 배운다.

- 12장 ‘스프링 프레임워크’에서는 코틀린에 매우 우호적인 스프링 부트와 함께 스프링 프레임워크를 다룬다. 스프링이 관리하는 빈(bean)으로 코틀린 클래스를 사용하는 방법, JPA 퍼시스턴스를 구현하는 방법, 필요시 의존성을 주입하는 방법을 보여주는 몇 가지 레시피가 이 장에 포함되어 있다.

- 13장 ‘코루틴과 구조적 동시성’에서는 코틀린의 가장 인기 있는 기능 중 하나이자, 코틀린 언어에서 동시 프로그래밍과 병렬 프로그래밍의 기초인 코루틴에 대한 주제를 다룬다. 이 장의 레시피에서는 빌더(builder)와 디스패처(dispatcher) 같은 기초 지식, 코루틴을 취소하고 디버깅하는 방법, 그리고 코루틴을 사용자 정의 자바 스레드 풀에서 실행하는 방법을 다룬다.

 

이 책의 독자 대상

코틀린을 처음 배우려는데 이왕이면 좀 더 실무적으로 익히고 싶은 입문자와, 입문은 했으나 숙련된 고급 기법을 알고 싶은 코틀린 사용자. 특히 자바나 기타 JVM 기반 언어에서 객체 지향 프로그래밍의 기초를 알고 있는 개발자에겐 더 도움이 된다. 

 

지은이 켄 코우젠Ken Kousen

자바 챔피언, 오라클 그라운드브레이커 앰버서더, 그레일즈(Grails) 록스타이며, 『모던 자바 레시피(Modern Java Recipes)』(오라일리), 『안드로이드를 위한 그레이들 레시피(Gradle Recipes for Android)』(오라일리), 『자바 그루비 만들기(Making Java Groovy)』(매닝)를 집필했다. 오라일리의 안드로이드, 그루비, 그레이들, 고급 자바, 스프링 비디오 코스를 개발했다. 자신의 회사인 코우젠 IT 사에서 소프트웨어를 개발하고 소프트웨어 개발 트레이닝 코스를 가르친다. 젯브레인스JetBrains 인증 코틀린 트레이닝 파트너이기도 하다.

『코틀린 쿡북』에 발을 내딛은 여러분을 환영한다. 이 책의 기본 목적은 단지 코틀린 문법과 의미를 가르치는 것뿐만 아니라 코틀린의 특정 기능을 언제 그리고 왜 사용해야 하는지를 보여주는 것이다. 이 목표를 위해 반드시 코틀린의 모든 문법과 라이브러리를 상세하게 다뤄야 할 필요는 없다. 하지만 기본 원리에 대한 많은 레시피가 추가되어 코틀린 초보자조차도 쉽게 이해할 수 있는 책이 완성되었다.

코틀린 커뮤니티가 멀티플랫폼multiplatform, 네이티브native, 자바스크립트 개발을 수용하도록 장려하는 젯브레인JetBrains 사의 강력한 움직임이 일어나고 있다. 하지만 코틀린을 사용한 멀티플랫폼, 네이티브, 자바스크립트 개발이 베타 상태이거나 도입률이 매우 낮기 때문에, 결국 나는 멀티플랫폼, 네이티브, 자바스크립트는 레시피에 포함하지 않기로 결정했다. 결과적으로 이 책은 오로지 JVM을 위한 코틀린에 집중한다.

깃허브 리포지토리 https://github.com/kousen/kotlin-cookbook에서 이 책의 모든 코드를 찾을 수 있다. 코드는 (코틀린 DSL로 작성된 빌드 파일은 물론이고) 그레이들 래퍼Gradle wrapper를 포함하고 있으며 모든 테스트를 통과했다.

이 책의 모든 코드 예제는 손쉽게 구할 수 있는 장기지원Long Term Support 버전의 자바, 즉 자바 8과 자바 11 모두에서 컴파일되고 테스트되었다. 비록 자바 8은 기술적으로 사용 기한이 만료됐지만, 여전히 코드 예제를 적용해 볼 수 있을 만큼 그런대로 산업 전반에 퍼져 있다. 이 책을 저술할 때 코틀린의 최신 버전은 1.3.50이었으며 1.3.60이 진행 중이었다. 모든 코드는 이 두 버전 모두에서 동작하고 깃허브 리포지토리는 최신 버전의 코틀린으로 꾸준히 업데이트될 것이다.

이 책과 같은 레시피 서적은 코틀린 기술이나 어법 사용보다는 가능한 한 코틀린에 대한 모든 것을 담고 있는 자료가 되는 데 집중한다. 이 때문에 이 책의 모든 레시피에서 코틀린의 기능을 완전히 이용할 수 있다는 장점도 있지만 사용된 코틀린 기능의 기초 설명에 많은 시간을 들이지 못한다는 단점도 있다. 여러분이 컬렉션 생성 방법이나 배열 사용법, 클래스 디자인에 대해 능숙하지 않다 해도 기본 용법에 대한 요약이 각 장에 포함되어 있기 때문에 걱정할 필요는 없다. 또한 이 책은 코틀린 라이브러리에서 기능 구현으로 넘어간다. 이를 통해 개발자가 실제로 언어를 사용하는 방법을 보여주고 또 그렇게 구현한 이유를 알려준다.

옮긴이 김도남

한국에서 프리랜서로 일하다가 2009년 호주에 정착해 엔터프라이즈 웹 개발, BI 관련 IT컨설턴트와 시니어 소프트웨어 엔지니어로 활동했다. 현재는 블록체인 엔지니어로 재직 중이며, 함수형 프로그래밍과 마이크로서비스에 관심이 많다.

프로그래머라면 새로운 프로그래밍 언어에 대해 항상 관심이 있을 것입니다. 저 또한 새로운 프로그래밍 언어를 경험해보길 좋아해서 2013년 즈음 젯브레인스JetBrains 사가 프로덕션에 코틀린을 사용한다는 말을 듣고 코틀린을 처음 접해봤습니다. 당시 코틀린 공식 튜토리얼을 따라 해보았으나 그루비나 스칼라에 비해서도 아무런 특색이 없어 매우 실망하고 세일즈를 위한 언어라 치부하고 코틀린을 두 번 다시 쳐다도 보지 않았으며 그 후로 코틀린을 다시 보게 될 일은 없을 줄 알았습니다.

하지만, 2017년 구글 I/O에서 안드로이드 팀이 안드로이드 공식 개발 언어로 코틀린을 지정함으로써 코틀린에 대한 세간의 관심은 최고조에 이르렀습니다. 더불어, 평소 존경하는 에릭 마이어가 2017년 한 컨퍼런스에서 코틀린을 좋아한다고 남긴 말에도 단순히 립서비스로 생각하고 넘겼으나, 에릭 마이어는 이후에도 코틀린에 대해 꾸준한 애정을 보이며 코틀린 코드와 의견을 트위터에 올렸으며, 그렇게 저의 무관심은 조금씩 관심으로 바뀌어 갔습니다.

이후 2018년에 살펴본 코틀린 1.2는 정말 많은 발전이 있었으며 자바와의 호환성 역시 훌륭해서, 앞으로 JVM 기반으로 프로젝트를 한다면 이제 다신 자바를 선택하지는 않을 것이라는 생각이 들게 해줬습니다. 오늘날 코틀린은 모바일 개발에만 머무르지 않고 서버 사이드, 자바스크립트, 네이티브, 데이터 분석과 머신러닝 등을 아우르는 개발의 모든 분야에 진입하려고 노력 중이며 코틀린 공식 문서에서도 해당 분야에 대한 내용을 확인할 수 있습니다.

서버 사이드 코틀린을 좀 더 이야기해볼까요? 세상에서 가장 인기 있는 프레임워크인 스프링도 5.0부터 스프링 공식 지원 언어로 코틀린을 지정했으며 JVM에서 가장 인기 있는 빌드 자동화 도구인 그레이들Gradle도 5.0부터 코틀린 DSL을 지원하기 시작했습니다. 이처럼 코틀린은 꾸준히 자신의 영역을 넓혀가고 있으며 앞으로가 더욱 촉망되는 언어라고 생각합니다.

비록 이 책에서는 코틀린의 다양한 활용 분야 중 서버 사이드 코틀린을 집중해서 다루지만 해당 분야로 나아갈 수 있는 기초 지식을 익히기에 분명히 좋은 책입니다. 기존 자바 개발자에게는 꽤 많이 출간된 여러 레퍼런스 서적에 비해 각자가 필요한 부분을 찾아 빠르게 학습할 수 있습니다. 또한, 코틀린 입문자도 책을 따라 하며 어렵지 않게 코틀린 컴파일러를 설치하고 한 단계씩 더 어려운 주제로 학습해 나아갈 수 있게 구성되어 있습니다.

저는 현재 근무 중인 회사에서 코틀린 스프링을 사용 중인데, 처음 프로젝트를 구성할 때 꽤 애를 먹었습니다. 이 책에는 ‘스프링 프로젝트를 코틀린으로 구성하는 방법’을 설명하는 레시피들도 담겨 있는데, 이 책 번역을 좀 더 빨리 했더라면 프로젝트를 구성하면서 겪은 고생을 피할 수 있었을 터라 매우 아쉬웠습니다.

나름대로 열심히 노력했지만 부족한 부분이 있을 것입니다. 그럼에도 독자분들이 번역 때문에 고심하지 않고 편하게 읽으면서 코틀린을 익히실 수 있기를 바라봅니다.

 

차례

1장 코틀린 설치와 실행

레시피 1.1  로컬 컴파일러 없이 코틀린 실행하기

레시피 1.2  로컬 컴퓨터에 코틀린 설치하기

레시피 1.3  명령줄에서 코틀린 컴파일하고 실행하기

레시피 1.4  코틀린 REPL 사용하기

레시피 1.5  코틀린 스크립트 실행하기

레시피 1.6  GraalVM으로 독립형 애플리케이션 만들기

레시피 1.7  그레이들에 코틀린 플러그인 추가하기(그루비 문법)

레시피 1.8  그레이들에 코틀린 플러그인 추가하기(코틀린 문법)

레시피 1.9  그레이들을 이용해 코틀린 프로젝트 빌드하기

레시피 1.10  코틀린과 함께 메이븐 사용하기 

 

2장 코틀린 기초

레시피 2.1  코틀린에서 널 허용 타입 사용하기

레시피 2.2  자바에 널 허용성 지시자 추가하기

레시피 2.3  자바를 위한 메소드 중복

레시피 2.4  명시적으로 타입 변환하기 

레시피 2.5  다른 기수로 출력하기

레시피 2.6  숫자를 거듭제곱하기

레시피 2.7  비트 시프트 연산자 사용하기

레시피 2.8  비트 불리언 연산자 사용하기

레시피 2.9  to로 Pair 인스턴스 생성하기

 

3장 코틀린 객체 지향 프로그래밍

레시피 3.1  const와 val의 차이 이해하기

레시피 3.2  사용자 정의 획득자와 설정자 생성하기

레시피 3.3  데이터 클래스 정의하기

레시피 3.4  지원 속성 기법

레시피 3.5  연산자 중복

레시피 3.6  나중 초기화를 위해 lateinit 사용하기

레시피 3.7  equals 재정의를 위해 안전 타입 변환, 레퍼런스 동등, 엘비스 사용하기

레시피 3.8  싱글톤 생성하기

레시피 3.9  Nothing에 관한 야단법석

 

4장 함수형 프로그래밍

레시피 4.1  알고리즘에서 fold 사용하기

레시피 4.2  reduce 함수를 사용해 축약하기

레시피 4.3  꼬리 재귀 적용하기

 

5장 컬렉션

레시피 5.1  배열 다루기

레시피 5.2  컬렉션 생성하기

레시피 5.3  컬렉션에서 읽기 전용 뷰 생성하기

레시피 5.4  컬렉션에서 맵 만들기

레시피 5.5  컬렉션이 빈 경우 기본값 리턴하기

레시피 5.6  주어진 범위로 값 제한하기

레시피 5.7  컬렉션을 윈도우로 처리하기

레시피 5.8  리스트 구조 분해하기

레시피 5.9  다수의 속성으로 정렬하기

레시피 5.10  사용자 정의 이터레이터 정의하기

레시피 5.11  타입으로 컬렉션을 필터링하기

레시피 5.12  범위를 수열로 만들기

 

6장 시퀀스

레시피 6.1  지연 시퀀스 사용하기

레시피 6.2  시퀀스 생성하기

레시피 6.3  무한 시퀀스 다루기

레시피 6.4  시퀀스에서 yield하기

 

7장 영역 함수

레시피 7.1  apply로 객체 생성 후에 초기화하기

레시피 7.2  부수 효과를 위해 also 사용하기

레시피 7.3  let 함수와 엘비스 연산자 사용하기

레시피 7.4  임시 변수로 let 사용하기

 

8장 코틀린 대리자

레시피 8.1  대리자를 사용해서 합성 구현하기

레시피 8.2  lazy 대리자 사용하기

레시피 8.3  값이 널이 될 수 없게 만들기

레시피 8.4  observable과 vetoable 대리자 사용하기

레시피 8.5  대리자로서 Map 제공하기

레시피 8.6  사용자 정의 대리자 만들기

 

9장 테스트

레시피 9.1  테스트 클래스 수명주기 설정하기

레시피 9.2  테스트에 데이터 클래스 사용하기

레시피 9.3  기본 인자와 함께 도움 함수 사용하기

레시피 9.4  여러 데이터에 JUnit 5 테스트 반복하기

레시피 9.5  파라미터화된 테스트에 data 클래스 사용하기

 

10장 입력/출력

레시피 10.1  use로 리소스 관리하기

레시피 10.2  파일에 기록하기

 

11장 그 밖의 코틀린 기능

레시피 11.1  코틀린 버전 알아내기

레시피 11.2  반복적으로 람다 실행하기

레시피 11.3  완벽한 when 강제하기

레시피 11.4  정규표현식과 함께 replace 함수 사용하기

레시피 11.5  바이너리 문자열로 변환하고 되돌리기

레시피 11.6  실행 가능한 클래스 만들기

레시피 11.7  경과 시간 측정하기

레시피 11.8  스레드 시작하기

레시피 11.9  TODO로 완성 강제하기

레시피 11.10  Random의 무작위 동작 이해하기

레시피 11.11  함수 이름에 특수 문자 사용하기

레시피 11.12  자바에게 예외 알리기

 

12장 스프링 프레임워크

레시피 12.1  확장을 위해 스프링 관리 빈 클래스 오픈하기

레시피 12.2  코틀린 data 클래스로 퍼시스턴스 구현하기

레시피 12.3  의존성 주입하기

 

13장 코루틴과 구조적 동시성

레시피 13.1  코루틴 빌더 선택하기

레시피 13.2  async/await을 withContext로 변경하기

레시피 13.3  디스패처 사용하기

레시피 13.4  자바 스레드 풀에서 코루틴 실행하기

레시피 13.5  코루틴 취소하기

레시피 13.6  코루틴 디버깅

 

 

'+ 펴낸 책' 카테고리의 다른 글

파이썬 알고리즘 인터뷰  (15) 2020.07.06
엔터프라이즈 데이터 플랫폼 구축  (0) 2020.06.18
쿠버네티스 패턴  (0) 2020.04.02
데이터 시각화 교과서  (0) 2020.02.06
IT 개발자의 영어 필살기  (0) 2019.12.23

댓글