🎓26개의 코드 플레이그라운드와 158개의 인터렉티브 퀴즈로 구성된 Kotlin Deep Dive 신규 코스 보기

Practical Kotlin Deep Dive (한국어 번역판)

총 578p로 이루어진 본 책은 단순히 "코틀린을 어떻게 사용하는가"를 넘어, "코틀린이 실제로 어떻게 동작하는가"까지 안내합니다. 내부 구현을 들여다보고, 바이트코드와 컴파일러의 동작을 명확히 탐구하며, 언어를 형성하는 핵심 내부 구조를 파헤칩니다.

기초 문법부터 코루틴, 컴파일러에 이르기까지 더 깊이 이해하고, 더 자신 있게 코틀린 코드를 작성하고 싶은 분들께는 좋은 지침서가 될 것입니다. 특히, 우리가 일상에서 친숙하게 사용하던 모든 언어적인 형태가 왜 지금과 같은 형태로 설계되었는지를 탐구하며 사고의 깊이를 더할 수 있습니다.

578
PDF 페이지
6
70
심화 주제
50+
Pro Tips
ISBN: 979-8243872744

현업의 글로벌 엔지니어들에게 신뢰받는 책입니다.

GoogleMetaSquareGrabKakaoNaver외 다수

저자 소개

엄재웅 (skydoves)

엄재웅 (skydoves)

Google Developer Expert (Android & Kotlin & Firebase)

이 책의 저자이자 Android, Kotlin, Firebase 분야의 Google Developer Expert (GDE)인 엄재웅 (skydoves)입니다. 100개 이상의 오픈소스 라이브러리와 프로젝트를 출시하고 운영해 왔으며, 전 세계 개발자들에 의해 매년 총 4,000만 회 이상 다운로드되고 있습니다.

이 책은 저의 첫 번째 책인 Manifest Android Interview에 이어 두 번째 책으로, 코틀린 커뮤니티와 생태계에 있어 또 다른 기여가 되기를 바랍니다.

또한 Dove Letter의 창설자로서, Android, Jetpack Compose, 및 Kotlin 관련 소식을 공유하고, 구독자끼리 의견을 나눌 수 있는 구독 기반 저장소를 운영하고 있습니다.

이 책이 여러분께 새로운 관점을 제공하고, 문제 해결 능력을 향상시키며, 언어 기초부터 코루틴, 컴파일러, 멀티플랫폼 개발과 같은 고급 주제에 이르기까지 Kotlin에 대한 포괄적인 이해를 쌓는 데 도움이 되기를 바랍니다.

Kotlin을 탐구하기 위한 모든 것

이 책이 다루는 깊이

기초 문법부터 코루틴, 코틀린 컴파일러에 이르기까지 심층적인 내용을 실용적인 측면에서 해석합니다.

📖탐구적인 자세를 지향합니다.

각 주제는 단순히 언어의 표면적인 지식을 넘어 Kotlin의 내부적인 설계와 동작이 어떻게 구현되었는지뿐만 아니라 언어의 철학적인 측면까지 탐구합니다.

💡Pro Tips

Pro Tips 섹션은 다양한 주제를 심도 있게 다루며, Kotlin의 언어적인 설계부터 바이트코드 및 컴파일러 동작 등에 대한 분석을 제공합니다.

🔍설계의 근원 탐색합니다.

KEEP 제안서, JetBrains YouTrack 토론, 컴파일러 소스 코드 등 자료의 원천을 살펴보고 코틀린이라는 언어의 철학적 배경과 지금의 설계가 결정된 과정을 이해할 수 있습니다.

📚암기가 아닌 이해를 추구합니다.

API나 함수의 사용법과 같은 표면적인 개념을 넘어서 언어의 핵심 메커니즘을 깊이 있게 이해함으로써 의도를 설명할 수 있고, 코드 설계와 작성을 자신 있게 할 수 있도록 합니다.

책의 구성

이 책에 담긴 내용

Kotlin에 대한 전반적인 내용을 다루는 6개의 챕터로 구성되어 있습니다.

Chapter 024 topics

Kotlin Language

null 안전성부터 타입 시스템 설계, sealed class, inline 함수, 위임 패턴까지 Kotlin의 기초 구성 요소를 다룹니다.

Chapter 17 topics

Kotlin 표준 라이브러리

Kotlin 표준 라이브러리의 핵심 기능인 컬렉션, 변환 연산자, 시퀀스, 이터레이터, 스코프 함수 등을 탐구하며, 내장 유틸리티를 효과적으로 활용하는 방법을 다룹니다.

Chapter 219 topics

코루틴 (Coroutines)

Kotlin이 언어 차원에서 제공하는 코루틴의 기초 개념부터 내부 메커니즘까지 폭넓게 살펴봅니다. suspend 함수, 코루틴 빌더, 컨텍스트, 스코프, Flow, 채널, 예외 처리 등 비동기 프로그래밍의 핵심을 다룹니다.

Chapter 34 topics

KotlinX 라이브러리

JetBrains가 개발하고 유지 관리하는 공식 Kotlin 확장 라이브러리를 다룹니다. 직렬화, 날짜/시간 처리, 불변 컬렉션 등 다양한 개발 영역의 요구 사항을 해결하는 멀티플랫폼 솔루션을 탐구합니다.

Chapter 47 topics

코틀린 컴파일러와 플러그인

코틀린 컴파일러의 전반적인 구조와 K2 컴파일러의 FIR 및 IR 아키텍처를 깊이 있게 살펴보고, KAPT와 KSP의 동작 원리부터 직접 컴파일러 플러그인을 구현하는 방법까지 다룹니다.

Chapter 59 topics

코틀린 멀티플랫폼

하나의 코틀린 코드베이스로 여러 플랫폼에 걸쳐 비즈니스 로직을 공유하는 KMP의 기본 구조를 다룹니다. 소스 셋 계층 구조, expect/actual, Compose Multiplatform, Kotlin/Native 등을 탐구합니다.

추천사

개발자들의 이야기

이 책을 읽은 업계 전문가와 GDE들의 추천

Kotlin은 안드로이드 개발의 공식 언어로 지정되면서 많은 개발자에게 사랑받기 시작했고, 지금은 안드로이드를 넘어 다양한 플랫폼으로 뻗어나가며 그 가능성을 보여주고 있습니다. 실무에서 Kotlin을 사용하다 보면 필연적으로 다양한 이슈를 마주하게 되고, 많은 개발자가 이 과정에서 이슈를 해결하며 내부를 조금씩 들여다보게 되고, Kotlin을 더 깊이 이해하고 싶다는 갈증을 느껴왔을 것 같습니다. 이 책은 바로 그런 분들을 위해 Kotlin의 근본 원리와 내부 메커니즘을 심도 있게 탐구합니다. Kotlin의 깊이를 이해하고 기술 스펙트럼을 한 단계 더 넓히고자 하는 Kotlin 개발자라면 꼭 읽어보시기를 적극 추천합니다.
안성용
안성용
네이버웹툰 시니어 Android Engineer
Google Developer Expert for Android
Practical Kotlin Deep Dive는 단순한 문법을 넘어 Kotlin 언어의 내부 메커니즘과 설계 철학을 깊이 탐구하는 매우 포괄적인 가이드입니다. 재웅님은 Google Developer Expert이자 수많은 오픈소스 기여자로서의 풍부한 경험을 바탕으로 실용적이고 실전에서 검증된 조언을 제공합니다.
John O'Reilly
John O'Reilly
Kraken Technologies Staff Software Engineer
Google Developer Expert for Android
Kotlin은 이제 단순한 언어를 넘어 멀티플랫폼 개발의 핵심으로 자리 잡았습니다. 이 책은 단순한 사용법을 나열하는 데 그치지 않고, 언어의 설계 철학과 내부 메커니즘을 집요하게 파고듭니다. 가벼운 호기심으로 시작해 언어의 심층부까지 도달하는 구성이 매우 인상적입니다. 주니어 개발자에게는 실무에서 마주할 막연한 의구심을 명쾌한 확신으로 바꿔주고, 시니어 개발자에게는 흩어져 있던 지식의 조각을 하나의 큰 그림으로 완성해 주는 필독서입니다. Kotlin의 핵심(Core)을 꿰뚫고 싶은 모든 엔지니어에게 일독을 권합니다.
정승욱 (Steve)
정승욱 (Steve)
Principal Software Engineer @ Grab
전 Google Developer Expert for Android
재웅님의 Practical Kotlin Deep Dive는 복잡한 개념을 명확하고 접근하기 쉬운 설명으로 분해하여 매우 훌륭하게 쓰여졌습니다. 오늘날 기술 서적 중에서 보기 드물게 깊이와 명확성을 모두 갖춘 정말 훌륭한 책입니다. Copilot과 같은 도구로 인해 기술 콘텐츠 작성이 더 어렵고 경쟁이 치열해진 시대에, 이 책은 그 가치를 충분히 증명합니다.
Madona S. Wambua
Madona S. Wambua
Engineering Leader & Author
Google Developer Expert for Android

리뷰

커뮤니티 피드백

본 책에 대한 코틀린 커뮤니티의 반응을 확인해 보세요.

미리보기

책 미리보기

아래에서 영어 원문에 대한 내용을 미리 읽어보실 수 있습니다.

Book preview책 미리보기

글로벌 리치

다국어 지원

전 세계 Kotlin 개발자 커뮤니티를 위한 다양한 번역판이 출시되었습니다.

인쇄본 출시

하드커버 & 페이퍼백 에디션

현재 영문 책의 하드커버와 페이퍼백을 아마존에서 직구하실 수 있습니다.

Amazon에서 구매 (원문)

Practical Kotlin Deep Dive

Kotlin Deep Dive 코스

실용적인 코드 플레이그라운드와 퀴즈를 통해 개념을 학습하는 Practical Kotlin Deep Dive 책 기반의 코스가 출시되었습니다. Kotlin 프로그래밍의 기초와 내부 메커니즘을 다루는 온라인 코스입니다. 회사에서 학습 비용을 지원한다면 책 대신 코스 구매를 고려해 보셔도 좋을 것 같습니다. (현재는 영문 버전만 구매하실 수 있습니다.)

Kotlin Deep Dive Course
📝158개 인터랙티브 평가로 지식을 빠르게 습득할 수 있습니다.
🏆수료 인증서가 포함되어 있습니다.
💻26개 핸즈온 코드 플레이그라운드로 실전 학습을 하실 수 있습니다.
🎯핵심 목표 & 요약을 통해 각 레슨의 이해도를 높힐 수 있습니다.

목차

70개 심화 주제

Kotlin에 대한 전반적인 내용을 다루는 6개의 챕터로 구성되어 있습니다.

  1. 1Kotlin의 null 안전성에 대해 설명하세요
  2. 2Any, Unit, Nothing 타입의 주요 역할은 무엇인가요?
  3. 3구조적 동등성과 참조적 동등성은 무엇이며, 어떻게 다른가요?
  4. 4💡 Pro Tips for Mastery: 구조적 동등성(==)은 내부적으로 어떻게 작동하나요?
  5. 5var와 val의 차이점은 무엇인가요?
  6. 6💡 Pro Tips for Mastery: val 변수와 프로퍼티가 불변이 아닌 읽기 전용인 이유는 무엇인가요?
  7. 7가시성 수정자에는 어떤 것들이 있나요?
  8. 8💡 Pro Tips for Mastery: internal 가시성 수정자는 어떻게 Java 바이트코드로 컴파일되나요?
  9. 9init 블록은 언제 호출되며, 주요 특징은 무엇인가요?
  10. 10💡 Pro Tips for Mastery: init 블록의 단점은 무엇인가요?
  11. 11💡 Pro Tips for Mastery: init 블록은 어떻게 Java 바이트코드로 컴파일되나요?
  12. 12backing field와 backing property의 차이점은 무엇인가요?
  13. 13data class란 무엇이며, 일반 클래스와 어떻게 다른가요?
  14. 14💡 Pro Tips for Mastery: Data class 상속
  15. 15💡 Pro Tips for Mastery: Data class의 copy 함수 가시성
  16. 16💡 Pro Tips for Mastery: Java 바이트코드에서 data class 파헤치기
  17. 17sealed class란 무엇이며 사용 사례를 설명하세요
  18. 18💡 Pro Tips for Mastery: Sealed class 상속
  19. 19💡 Pro Tips for Mastery: sealed class와 sealed interface의 차이점은 무엇인가요?
  20. 20enum class는 언제 사용하나요?
  21. 21💡 Pro Tips for Mastery: enum을 위한 제네릭 values()와 valueOf()
  22. 22💡 Pro Tips for Mastery: Enum.values() 폐지 및 Enum.entries로 대체
  23. 23💡 Pro Tips for Mastery: sealed class와 enum class의 차이점은 무엇인가요?
  24. 24value class란 무엇인가요?
  25. 25💡 Pro Tips for Mastery: value class와 inline class의 차이점은 무엇인가요?
  26. 26💡 Pro Tips for Mastery: value class는 어떻게 Java bytecode로 컴파일되는가
  27. 27💡 Pro Tips for Mastery: @JvmExposeBoxed - Kotlin의 value class를 Java로 가져오기
  28. 28inner class란 무엇이며 nested class와의 차이점은 무엇인가요?
  29. 29object란 무엇이며 일반 클래스와의 차이점은 무엇인가요?
  30. 30💡 Pro Tips for Mastery: Object 선언 vs. 표현식
  31. 31💡 Pro Tips for Mastery: data object란 무엇인가요?
  32. 32💡 Pro Tips for Mastery: Kotlin의 object가 Java 바이트코드로 컴파일되는 방법
  33. 33companion object란 무엇인가요?
  34. 34위임 프로퍼티(delegated property)란 무엇인가요?
  35. 35💡 Pro Tips for Mastery: Lazy의 내부 메커니즘
  36. 36💡 Pro Tips for Mastery: lazy() 위임 프로퍼티는 어떻게 Java 바이트코드로 컴파일되나요?
  37. 37lazy 위임과 lateinit의 차이점은 무엇인가요?
  38. 38💡 Pro Tips for Mastery: lateinit 프로퍼티가 초기화되었는지 어떻게 확인할 수 있나요?
  39. 39💡 Pro Tips for Mastery: lateinit은 어떻게 Java 바이트코드로 컴파일되나요?
  40. 40고차 함수란 무엇이며, 어떤 장점이 있나요?
  41. 41💡 Pro Tips for Mastery: 고차 함수는 어떻게 Java 바이트코드로 컴파일되나요?
  42. 42람다 표현식은 어떻게 사용하나요?
  43. 43inline 키워드의 장점과 한계는 무엇인가요?
  44. 44💡 Pro Tips for Mastery: 인라인 프로퍼티란 무엇인가요?
  45. 45💡 Pro Tips for Mastery: repeat(), map(), filter()와 같은 함수가 suspend 함수를 받을 수 있는 이유는 무엇인가요?
  46. 46reified 키워드란 무엇이며, 사용 시 이점은 무엇인가요?
  47. 47💡 Pro Tips for Mastery: inline과 reified 함수는 어떻게 Java 바이트코드로 컴파일되나요?
  48. 48함수형(SAM) 인터페이스란 무엇인가요?
  49. 49💡 Pro Tips for Mastery: SAM 변환의 철학
  50. 50확장(Extension)이란 무엇이며, 장단점은 무엇인가요?
  51. 51💡 Pro Tips for Mastery: Kotlin 확장 함수는 어떻게 Java 바이트코드로 컴파일되나요?
  52. 52💡 Pro Tips for Mastery: JvmSynthetic 어노테이션
  53. 53null + null 연산을 실행하면 어떻게 되나요?
  54. 54DSL이란 무엇이며 어떻게 활용할 수 있나요?
  1. 1Kotlin에는 어떤 컬렉션 타입이 있나요?
  2. 2💡 Pro Tips for Mastery: listOf()와 emptyList()의 차이점은 무엇인가요?
  3. 3컬렉션에 사용할 수 있는 변환 연산자의 종류는 무엇인가요?
  4. 4Iterator의 메커니즘을 설명해 주세요
  5. 5Sequence와 그 메커니즘은 무엇인가요?
  6. 6컬렉션의 일부를 검색하기 위해 어떤 유형의 확장 함수를 사용할 수 있나요?
  7. 7컬렉션에서 객체의 순서를 어떻게 정의하나요?
  8. 8스코프 함수란 무엇인가요?
  1. 1코루틴이란 무엇인가요?
  2. 2Continuation이란 무엇이며, suspend 함수와 내부적으로 어떤 관계가 있나요?
  3. 3💡 Pro Tips for Mastery: 코루틴 용어 정리
  4. 4코루틴과 스레드의 차이점은 무엇인가요?
  5. 5💡 Pro Tips for Mastery: 멀티스레딩과 멀티프로세싱의 차이점은 무엇인가요?
  6. 6💡 Pro Tips for Mastery: 코루틴 실행과 가변 상태 관리
  7. 7코루틴 빌더란 무엇인가요?
  8. 8💡 Pro Tips for Mastery: launch와 async의 차이점은 무엇인가요?
  9. 9💡 Pro Tips for Mastery: runBlocking을 왜 신중하게 사용해야 하나요?
  10. 10💡 Pro Tips for Mastery: AbstractCoroutine의 내부 메커니즘
  11. 11코루틴 컨텍스트란 무엇인가요?
  12. 12💡 Pro Tips for Mastery: CoroutineContext 인터페이스
  13. 13Job의 역할은 무엇인가요?
  14. 14💡 Pro Tips for Mastery: SupervisorJob이란 무엇인가요?
  15. 15코루틴 스코프의 목적은 무엇인가요?
  16. 16💡 Pro Tips for Mastery: GlobalScope를 왜 신중하게 사용해야 하나요?
  17. 17💡 Pro Tips for Mastery: coroutineScope() 함수란 무엇인가요?
  18. 18💡 Pro Tips for Mastery: supervisorScope() 함수란 무엇인가요?
  19. 19어떤 종류의 코루틴 dispatcher가 있고, 각각의 목적은 무엇인가요?
  20. 20💡 Pro Tips for Mastery: CPU 집약적 태스크와 I/O 태스크의 차이
  21. 21💡 Pro Tips for Mastery: Dispatcher의 내부 구조
  22. 22채널이란 무엇이고 어떻게 동작하나요?
  23. 23💡 Pro Tips for Mastery: 채널의 내부 메커니즘
  24. 24join()과 yield() 함수는 어떤 역할을 하나요?
  25. 25코루틴에서 예외를 어떻게 처리하나요?
  26. 26💡 Pro Tips for Mastery: CancellationException의 특수한 성격
  27. 27💡 Pro Tips for Mastery: async 사용 시 예외 전파 처리
  28. 28Cold Flow와 Hot Flow의 차이점은 무엇인가요?
  29. 29💡 Pro Tips for Mastery: Flow와 AbstractFlow의 내부 메커니즘
  30. 30StateFlow와 SharedFlow의 차이점을 설명해 주세요
  31. 31💡 Pro Tips for Mastery: StateFlow의 내부 메커니즘
  32. 32💡 Pro Tips for Mastery: SharedFlow의 내부 메커니즘
  33. 33Flow.flowOn() 연산자는 어떤 역할을 하나요?
  34. 34💡 Pro Tips for Mastery: flowOn의 내부 메커니즘
  35. 35Flow.buffer() 연산자는 어떻게 동작하나요?
  36. 36💡 Pro Tips for Mastery: Flow.buffer()의 내부 메커니즘
  37. 37코틀린의 내부 메커니즘은 FusibleFlow와 ChannelFlow로 Flow를 어떻게 최적화하나요?
  38. 38launchIn(scope)과 scope.launch()의 차이점은 무엇인가요?
  39. 39Flow 변환 연산자인 flatMapLatest, flatMapMerge, flatMapConcat은 무엇인가요?
  40. 40callbackFlow와 channelFlow는 무엇이며, 내부 메커니즘은 어떻게 되나요?
  1. 1kotlinx-serialization이란 무엇이며 어떻게 동작하나요?
  2. 2kotlinx-datetime은 무엇이며 Java time API 대신 왜 사용하나요?
  3. 3kotlinx-collections-immutable이란 무엇이며 언제 사용해야 하나요?
  4. 4그 밖에 주목할 만한 KotlinX 라이브러리에는 어떤 것이 있나요?
  1. 1어노테이션 프로세서, KAPT, KSP란 무엇인가요?
  2. 2코틀린 컴파일러의 구조는 어떻게 되어 있나요?
  3. 3K2 컴파일러란 무엇인가요?
  4. 4FIR(Frontend Intermediate Representation)란 무엇인가요?
  5. 5IR이란 무엇이며 코틀린 백엔드는 어떻게 동작하나요?
  6. 6DebugLog 코틀린 컴파일러 플러그인 개발하기
  7. 7실제 코틀린 컴파일러 플러그인 활용 사례에는 어떤 것이 있나요?
  1. 1코틀린 멀티플랫폼이란 무엇인가요?
  2. 2코틀린 멀티플랫폼은 플랫폼별 API를 어떻게 처리하고, 공통 코드를 어떻게 공유하나요?
  3. 3코틀린 멀티플랫폼에서 동시성 또는 비동기 프로그래밍을 위한 전략은 무엇인가요?
  4. 4코틀린 멀티플랫폼에서 HTTP 네트워크 통신을 어떻게 처리하나요?
  5. 5Compose Multiplatform이란 무엇인가요?
  6. 6코틀린 멀티플랫폼 프로젝트에서 소스 셋은 어떻게 구성되나요?
  7. 7Kotlin/Native는 메모리 관리와 플랫폼 상호 운용을 어떻게 처리하나요?
  8. 8코틀린 멀티플랫폼에서 어떤 테스트 전략을 사용하시나요?
  9. 9코틀린 멀티플랫폼에서 의존성 주입을 위해 어떤 전략을 사용하나요?

여정

타임라인 & 마일스톤

본 책의 초판 출간부터 지금까지의 마일스톤입니다.

2026.03.01
600부 돌파 🎉
2026.01.31
400부 돌파 🎉
2026.01.28
하드커버 및 페이퍼백 에디션 Amazon에서 출간 📚
2026.01.15
일본어판 출간 🇯🇵
2026.01.13
힌디어판 출간 🇮🇳
2026.01.12
200부 돌파 🎉
2026.01.11
중국어판 출간 🇨🇳
2026.01.11
인도네시아어판 출간 🇮🇩
2026.01.06
100부 돌파 🎉
2026.01.03
초판 출간