장바구니 담기 close

장바구니에 상품을 담았습니다.

코틀린 프로그래밍

코틀린 프로그래밍

  • 스티븐 사무엘
  • |
  • 에이콘출판
  • |
  • 2018-01-19 출간
  • |
  • 556페이지
  • |
  • 188 X 235 mm
  • |
  • ISBN 9791161750996
판매가

30,000원

즉시할인가

27,000

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
27,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

★ 이 책에서 다루는 내용 ★

- 구조화되고 가독성 좋은 객체지향 코드 작성을 위한 새로운 기능 사용
- 깔끔하고 재사용이 가능하며 간단한 코드 작성을 위한 람다와 고차 함수 사용법 이해
- 유닛 테스트 작성 및 변환된 코드 기반에서 코틀린 테스트와 자바 코드 통합
- 마이크로서비스 스타일을 사용해 코틀린으로 실제 상용 코트 작성
- 코틀린 확장을 자바 컬렉션 라이브러리에 활용하기
- 널 포인터 에러를 피하는 코드를 작성하고, 자바의 널 값이 가능한 코드가 코틀린 코드베이스에 있는 기능과 어떻게 통합될 수 있는지를 확인하기
- 코틀린에서 함수를 작성하는 방법과 사용 가능한 새로운 기능을 살펴보고, 기존 라이브러리를 확장하기

★ 이 책의 대상 독자 ★

이 책은 코틀린 경험이 없으면서 언어를 빠르게 습득하고자 하는 독자를 대상으로 한다.
책에서는 코틀린을 이용한 서버 사이드 개발에 중점을 두고 있으며, 현재 서버 사이드 개발자거나 이를 배우고자 하는 개발자에게는 안성맞춤일 것이다. 함수형 프로그래밍이나 객체지향 프로그래밍에 대한 선지식이 필요하지는 않지만 다른 프로그래밍 언어에 대한 지식이 있으면 좋다.
일부 장에는 자바 구현체와 코틀린을 비교하는 간단한 절이 있기는 하지만, 자바에 대한 지식이 없는 독자라면 이러한 절은 건너뛰어도 무방하다.

★ 이 책의 구성 ★

1장, ‘코틀린 시작하기’에서는 코틀린과 젯브레인(Jetbrains) 사의 인텔리제이(Intellij) IDEA 그리고 그레이들(Gradle) 빌드 환경을 설치하는 방법을 다룬다. 툴 체인 설정을 완료한 다음 첫 번째 코틀린 프로그램을 작성하는 방법을 보여준다.
2장, ‘코틀린 기본기’에서는 기본 타입과 기본 문법, 그리고 if 문과 for 문, while 루프 같은 프로그램 흐름 제어 구조를 포함한 코틀린의 기본사항을 배워본다. 또한 2장에서는 when 표현식과 타입 추론 같은 코틀린에 특화된 기능도 다룬다.
3장, ‘코틀린과 객체지향 프로그래밍’에서는 코틀린 언어의 객체지향적 측면에 초점을 맞춘다. 3장에서는 클래스, 인터페이스, 객체 그리고 이들 간의 관계와 서브타입과 다형성을 소개한다.
4장, ‘코틀린과 함수’에서는 다른 언어에서 기본 구성요소인 프로시저나 메소드로 알려진 함수에 대해 살펴본다. 4장에서는 이름이 있는 매개변수, 기본 매개변수, 함수 리터럴 같이 코틀린에서 향상된 기능을 포함한 함수를 위한 문법을 설명한다.
5장, ‘고차 함수와 함수형 프로그래밍’에서는 흔히 람다라고 알려진 클로저와 함수 참조(function reference)를 포함한 코틀린의 함수형 프로그래밍 측면에 중점을 둔다. 5장에서는 여기서 더 나아가 부분 적용과 함수 합성, 오류 축적 같은 함수형 프로그래밍 기교도 다뤄본다.
6장, ‘프로퍼티’에서는 클래스나 객체에서 값을 노출하기 위해 객체지향 프로그래밍과 함께 동작하는 프로퍼티에 대해 설명한다. 6장에서는 프로퍼티가 어떻게 동작하는지와 사용자가 프로퍼티를 어떻게 잘 활용할 수 있는지 그리고 프로퍼티가 바이트 코드로는 어떻게 표현되는지를 다룬다.
7장, ‘널 안정성, 리플렉션, 애노테이션’에서는 널 안정성이 코틀린이 제공하는 핵심 기능 중 하나라는 점을 설명한다. 7장에서는 우선, 코틀린에서 널 안정성이 왜 필요한지와 어떻게 사용하는지를 자세히 설명한다. 그런 다음, 런타임에서 코드를 반영하는 리플렉션에 대해 설명하면서 리플렉션이 메타프로그래밍에서 애노테이션과 함께 어떻게 사용될 수 있는지를 살펴본다.
8장, ‘제네릭’에서는 제네릭 또는 매개변수화된 타입은 향상된 타입 시스템의 핵심 요소이며, 코틀린의 타입 시스템은 자바에서 사용 가능한 것보다 좀 더 향상돼 있음을 설명한다.
8장에서는 Nothing 타입과 대수학 데이터 타입을 포함한 변경된 타입 시스템을 다룬다.
9장, ‘데이터 클래스’에서는 불변성과 보일러플레이트하지 않은 도메인 클래스가 코드를 더욱 단단하게 해주고 동시성 프로그래밍을 단순화하는 방법이라는 점에서 최근 뜨거운 감자임을 보여준다. 코틀린은 이러한 영역에 초점을 둔 많은 기능을 갖고 있으며, 이를 데이터 클래스라 부른다.
10장, ‘컬렉션’에서는 컬렉션이 표준 라이브러리에서 가장 일반적으로 사용되는 측면 중 하나라는 점을 설명하면서, 자바 컬렉션과 다르지 않다는 점을 설명한다. 10장에서는 맵(map) 과 폴드(fold), 필터(filter) 같은 함수형 연산을 포함해 코틀린에서 JDK 컬렉션을 강화한 점을 설명한다.
11장, ‘코틀린과 테스트’에서는 새로운 언어로 들어가는 관문 중 하나가 테스트 코드를 작성하는 데 그 언어를 사용하는 것임을 설명한다. 11장에서는 흥미진진한 테스트 프레임워크인 KotlinTest를 사용해 표준 JUnit 테스트가 허용하는 것보다 훨씬 표현력이 풍부하고 사람이 읽을 수 있는 테스트를 작성하는 방법을 보여준다.
12장, ‘코틀린과 마이크로서비스’에서는 최근 몇 년간 마이크로서비스가 서버 측 아키텍처를 지배해왔으며 코틀린은 이러한 서비스를 구현하기 위한 훌륭한 선택이라는 점을 보여준다.
12장에서는 라곰(Lagom) 마이크로서비스 프레임워크를 소개하고, 코틀린과 함께 사용해 큰 효과를 발휘하기 위해 어떻게 사용하는지를 보여준다.
13장, ‘동시성’에서는 서버 측 플랫폼에서 멀티코어를 지원하는 프로그램이 점점 더 중요해지고 있음을 설명한다. 13장에서는 스레드와 동시성 프리미티브(concurrency primitives) 그리고 퓨처(future)를 비롯해 현대 개발에서 필수적인 동시성 프로그래밍 기술을 소개하는 데 중점을 둔다.

★ 옮긴이의 말 ★

코틀린은 JVM 진영의 새로운 언어로 많은 관심을 받아왔다. 2017년에는 구글에서 안드로이드 개발 언어로 공식 인정하면서 그 관심과 위상은 어느 때보다 높아진 상태다. 특히 코틀린은 안드로이드 개발에서 기존에 자바 버전 문제로 사용할 수 없었던 기능을 사용할 수 있게 해주며, 여러 보일러플레이트 코드를 없애주기 때문에 많은 안드로이드 개발자의 사랑을 받고 있다. 아쉽게도 이 책에서 안드로이드를 개발하는 내용을 설명하지는 않지만, 그 대신 코틀린을 좀 더 자세히 공부할 수 있도록 많은 내용을 담고 있다.
원서가 출간된 시점에 코틀린 최신 버전은 1.1-M04였다. 번역서가 출간되는 시점에서는 어느덧 1.1이 정식 출시돼 1.1.51까지 나왔다. 이 책은 1.1-M04를 기반으로 집필됐지만 1.1.51을 사용해도 큰 무리는 없으며, 책에서 코틀린을 설치하는 내용은 모두 1.1 기반 버전으로 설치할 수 있도록 수정했다. 다만 바이트 코드를 설명하는 내용에서는 1.1-M04로 돼 있기 때문에 1.1 최신 버전을 설치해 예제를 실행하면 바이트 코드 일부가 다를 수도 있지만 내용이 바뀔 정도는 아니니 안심해도 좋다.
새로운 언어를 공부하는 데 있어 가장 좋은 방법은 직접 사용해보면서 재미를 느끼는 것이라고 생각한다. 그런 면에서 코틀린은 정말 안성맞춤인 언어다. 특히 자바나 스칼라를 사용해본 개발자라면 코틀린을 정말 재미있고 빠르게 습득할 수 있을 것이다.

목차

1장. 코틀린 시작하기

__커맨드라인에서 코틀린 코드를 컴파일하고 실행하기
__코틀린 런타임
__REPL
__스크립트를 위한 코틀린
__그레이들에 코틀린 적용하기
__메이븐에 코틀린 적용하기
__인텔리제이와 코틀린
__이클립스와 코틀린
__프로젝트에서 코틀린과 자바 혼용하기
__요약

2장. 코틀린 기본기

__val과 var
__타입 추론
__기본 타입
____숫자
____불린
____문자
____문자열
____배열
__주석
__패키지
__임포트
____와일드카드 임포트
____임포트명 변경
__문자열 템플릿
범위
__루프
__예외 처리
__클래스 인스턴스화하기
__참조 동등성과 구조 동등성
__this 표현식
____스코프
__가시성 제어자
____private
____protected
____internal
__표현식으로서의 흐름 제어
__널 문법
____똑똑한 형변환
____명시적 형변환
__when 표현식
____when(값)
________인자가 없는 when
____함수 반환
__타입 체계
__요약

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

__클래스
____접근 레벨
____중첩 클래스
____데이터 클래스
____열거형 클래스
____정적 메소드와 컴패니언 오브젝트
__인터페이스
__상속
__가시성 제어자
__추상 클래스
__인터페이스 또는 추상 클래스
__다형성
__오버라이딩 규칙
__상속 대 합성
__클래스 델리게이션
__봉인 클래스
__요약

4장. 코틀린과 함수

__함수 정의하기
__단일 표현식 함수
__멤버 함수
__지역 함수
__최상위 함수
__이름이 있는 매개변수
__기본 값을 갖는 매개변수
__확장 함수
____확장 함수의 우선순위
____널 값에서의 확장 함수
____멤버 확장 함수
____멤버 확장 함수 오버라이딩하기
____컴패니언 오브젝트 확장
____다중 반환 값
____중위 함수
__연산자
____연산자 오버로딩
____기본 연산자
____in/contains
____get/set
________invoke
____비교
____할당
____자바 상호 운용
__함수 리터럴
__꼬리 재귀 함수
__가변 인자
____전개 연산자
__표준 라이브러리 함수
____apply
____let
____with
____run
____lazy
____use
____repeat
____require / assert / check
__제네릭 함수
__순수 함수
__코틀린에서 자바 사용하기
____게터와 세터
____단일 추상 메소드
____코틀린 식별자 탈출하기
____자바 void 메소드
__자바에서 코틀린 사용하기
____최상위 함수
____기본 매개변수
____오브젝트와 정적 메소드
____이름 삭제하기
____확인된 예외
__요약

5장. 고차 함수와 함수형 프로그래밍

__고차 함수
____함수 반환
____함수 할당
__클로저
__익명 함수
__함수 참조
____최상위 함수 참조
____멤버 함수 참조와 확장 함수 참조
____바운드 참조
__함수 리터럴 수신자
__JVM에서의 함수
____바이트 코드
__함수 합성
__inline 함수
____noinline 함수
__커링과 부분 적용
____실전 커링
____커링 지원 추가하기
__메모이제이션
____메모이제이션 구현하기
__타입 앨리어스
__Either
____fold
____프로젝션
____프로젝션 함수 더 나아가기
__커스텀 DSL
____키워드로서의 중위 함수
____DSL 에서 함수 수신자 사용하기
__유효성 축적과 에러 축적
__요약

6장. 프로퍼티

__왜 프로퍼티를 사용하는가?
__문법과 변형
__가시성
__늦은 초기화
__델리게이트 프로퍼티
__지연 초기화
__lateinit 대 lazy
__옵저버블
__널 값을 갖지 않는 프로퍼티 델리게이트
__프로퍼티 혹은 메소드?
__요약

7장. 널 안정성, 리플렉션, 애노테이션

__널을 허용하는 타입
__똑똑한 형변환
__안전한 널 접근
____강제 연산자
__엘비스 연산자
__안전한 형변환
__옵셔널
____옵셔널을 생성하고 반환하기
____옵셔널 사용하기
__리플렉션
____KClass
____리플렉션을 사용한 인스턴스화
__생성자
____callBy로 인스턴스화하기
__객체와 컴패니언
__유용한 KClass 프로퍼티
__리플렉션한 함수와 프로퍼티
____리플렉션으로 함수 호출하기
____선언과 비선언
__애노테이션
____애노테이션 매개변수
__표준 애노테이션
____@JvmName
____@JvmStatic
____@Throws
____@JvmOverloads
__런타임에서 애노테이션 발견하기
__요약

8장. 제네릭

__매개변수화된 함수
__매개변수화된 타입
__범위를 갖는 다형성
____상한
________다중 범위
__타입 변형
____불변성
____공변성
____공변성 반환하기
____반공변성
____변형 개요
____Nothing 타입
____타입 프로젝션
__타입 소거
__타입 구체화
__재귀 타입 경계
__대수적 데이터 타입
__요약

9장. 데이터 클래스

__게터와 세터 자동 생성
__copy 메소드
__toString 바로 사용하기
__사용자를 위해 생성된 hashCode와 equals 메소드
__비구조화 선언
__비구조화 타입
__데이터 클래스 정의 규칙
__한계
__요약

10장. 컬렉션

__클래스 계층 구조
__배열
__리스트
__맵
__셋
__읽기 전용 뷰
__인덱스 접근
__시퀀스
__요약

11장. 코틀린과 테스트

__시작하기
__스펙 선택하기
__매처
____문자열 매처
____컬렉션 매처
____부동소수점 매처
________예외 기대하기
____매처 결합하기
____커스텀 매처
__인스펙터
__인터셉터
____테스트 케이스 인터셉터
____스펙 인터셉터
__프로젝트 환경 설정
__프로퍼티 테스트
____제너레이터 명시하기
________커스텀 제너레이터
__테이블 주도 테스트
____비결정적 코드 테스트하기
__태그와 조건 그리고 설정
____설정
____조건
____태그
________단일 인스턴스
__자원
__요약

12장. 코틀린과 마이크로서비스

__정의
__단점
__왜 마이크로서비스인가?
__라곰
__서비스 정의하기
__라곰 서비스 구현하기
__요약

13장. 동시성

__스레드
____블로킹
____스레드 생성하기
________스레드 정지하기
________스레드 인터럽트
________CPU 바운드 대 I/O 바운드
__데드락과 라이브락
____식사하는 철학자 문제
__익스큐터
__경쟁 조건
____모니터
____락
________읽기-쓰기 락
____세마포어
________한정 버퍼 문제
____동시성 컬렉션
________ConcurrentHashMap
________블로킹 큐
____원자 변수
____카운트다운 래치
____사이클릭 배리어
____논블로킹 I/O와 비동기 프로그래밍
____퓨처
__요약

저자소개

저자 : 스티븐 사무엘, 스테판 보큐리우

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.