자바 개발자를 위한 스칼라 프로그래밍
- 원서명Scala for Java Developers (ISBN 9781783283637)
- 지은이토마스 알렉산더(Thomas Alexandre)
- 옮긴이남기혁
- 감수자김강모
- ISBN : 9788960777002
- 30,000원
- 2015년 04월 30일 펴냄 (절판)
- 페이퍼백 | 344쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
이 책은 자바(Java)에서 스칼라(Scala)로 갈아타거나 기존 자바 프로젝트를 스칼라로 확장하려는 자바 개발자가 빠른 시간 내에 스칼라를 익혀 현업에 적용할 수 있도록, 스칼라의 핵심 기능에 대해 다양한 실습 예제를 중심으로 소개한다. 자세한 내용을 담은 두꺼운 교과서나 레퍼런스는 부담스럽고, 자바 관점에서 스칼라의 핵심 기능과 프로그래밍 기법을 단기간에 익히려는 자바 프로그래머에게 유용한 주제로 구성됐다. 스칼라의 문법과 기본 개념, 그리고 자바와 다른 점을 중점적으로 소개한 다음, 곧바로 실제 동작하는 애플리케이션을 만들어보면서, 스칼라에서 흔히 사용하는 타입세이프(Typesafe)나 아카(Akka), 플레이(Play) 프레임워크와 새롭게 떠오르는 슬릭(Slick) 프레임워크에 대해 예제와 함께 하나씩 소개한다.
이 책에서 다루는 내용
■ 스칼라 에코시스템
■ 자바에서 스칼라로 옮겨가는 방법
■ 플레이 프레임워크를 이용한 웹 개발
■ 스칼라의 테스팅 프레임워크로 데이터를 검사하는 방법
■ 스칼라에서 XML과 JSON 다루기
■ 스칼라 문법 익히기
■ 자바 프로젝트에서 스칼라 병행 사용
■ 타입세이프(Typesafe) 기술을 이용한 반응형 웹 개발
■ 아카(Akka) 프레임워크, 플레이(Play) 프레임워크뿐만 아니라, 최근 떠오르는 슬릭(Slick) 프레임워크 사용법
■ 빅데이터 관련 기술
이 책의 대상 독자
자바 EE 기반의 시스템을 개발하고 있는 자바 아키텍트 또는 자바 프로그래머로서, 업무에 스칼라 언어를 적용하고자 하는 이를 위한 책이다. 당장 실전에 써먹을 수 있도록, 실제 예제를 바탕으로 설명한다. 스칼라를 잘 모르더라도 쉽게 따라갈 수 있도록 집필했다.
이 책의 구성
1장, ‘스칼라 맛보기’에서는 JVM(Java Virtual Machine)에 대해 간략히 소개하고, 자바가 현재의 위치까지 올 수 있게 해준 핵심 기능을 소개한다. 그런 다음, 프로그램을 대화형으로 작성하게 해주는 강력한 도구인 스칼라 REPL(Read Eval Print Loop)을 사용해 코드를 직접 작성해보면서, 스칼라에서 제공하는 몇 가지 강력한 구문을 소개하고, 이를 통해 코드를 직관적으로 표현할 수 있을 뿐만 아니라 구현의 효율성도 높일 수 있음을 직접 확인해본다.
2장, ‘코드 연동’에서는 자바와 스칼라를 같은 코드 베이스에서 서로 연동하는 방법에 대해 소개한다. 그중에서도 특히 자바와 스칼라의 컬렉션을 서로 연동하고, 기존에 자바로 제공되는 라이브러리를 스칼라에서 쓰기 위한 방법을 중심으로 설명한다. 이 과정에서 스칼라 언어에서 권장하는 코딩 스타일과, 오랜 기간 동안 정립된 자바의 코딩 스타일에 대해서도 비교해본다.
3장, ‘스칼라 에코시스템’에서는 스칼라 프로그래밍에 관련된 여러 가지 도구와 에코시스템에 대해 소개한다. 이들 중 대부분은 자바로부터 물려받은 것이다. 특히 메이븐 같은 빌드 도구와 이클립스 같은 IDE는 자바에서 사용하던 것을 그대로 사용한다. 개발 주기에서 핵심적인 도구뿐만 아니라, 스칼라에서만 제공하는 SBT나 스칼라 워크시트, 그리고 타입세이프 액티베이터와 여기서 제공하는 템플릿에 대해서도 소개한다.
4장, ‘테스팅 도구’에서는 앞 장에서 소개한 스칼라 개발에 핵심적인 도구와 함께 유닛 테스트와 통합 테스트, 기능 테스트 등을 속성 중심으로 자동화된 방식으로 수행하기 위한 도구들을 소개한다.
5장, ‘플레이 프레임워크’에서는 플레이(Play) 프레임워크에 대해 자세히 살펴본다. 플레이에서 제공하는 뛰어난 기능 몇 가지를 예제를 통해 살펴보고, 기존 서블릿이나 J2EE 모델로 작성한 코드를 플레이 프레임워크로 전환하는 방법도 소개한다.
6장, ‘데이터베이스 사용 방법과 ORM의 미래’에서는 관계형 데이터베이스로 데이터의 영속성을 보장하는 방법에 대해 소개한다. 이 과정에서 기존에 잘 정립된 JPA나 하이버네이트 같은 기술을 활용할 수도 있고, 슬릭(SLICK, Scala Language-Integration Connection Kit)처럼 새로운 기술을 사용할 수도 있다. 슬릭의 내부를 보면 스칼라 언어에서 제공하는 강력한 기능을 그대로 활용하고 있는 것을 볼 수 있다. 또한 자바 프로젝트를 스칼라로 전환하도록, 기존 관계형 데이터베이스에 리버스 엔지니어링을 적용하여 플레이 프레임워크용 CRUD 애플리케이션을 작성하는 방법에 대해서도 소개한다.
7장, ‘웹 서비스에서 시스템 연동’에서는 최근 자바 애플리케이션 개발과 관련하여 흔히 언급되는, SOAP, XML, REST, JSON과 같은 웹 서비스 관련 기술에 대해 소개한다. 웹 서비스를 이용해 스칼라에서 외부 시스템을 연동하는 방법과 각각의 장점에 대해 예제를 통해 살펴본다.
8장, ‘비동기와 동시성’에서는 개발하는 과정에 마주치게 될 비동기와 동시성 문제를 스칼라에서 처리하는 방법에 대해 설명한다. 흔히 성능을 높이기 위해 비동기로 호출하거나 동시에 실행되도록 코드를 작성한다. 이 장에서는 이러한 비동기와 동시성 관련 코드를 작성할 때 발생하는 복잡도를 스칼라에서 쉽게 관리할 수 있다는 점을 예제와 함께 확인해본다. 또한 동시성 애플리케이션을 간편하게 개발하게 해주는 툴킷인 아카(Akka) 프레임 워크에 대해서도 소개한다.
9장, ‘반응형 웹 애플리케이션’에서는 8장에서 설명한 내용을 기반으로 최근 주목받고 있는 반응형 웹 애플리케이션을 소개한다. 반응형 웹 앱이 기존 웹 앱과 다른 점은 사용자에게 정보를 보낼 수 있고, 처리량의 변화에 유연하게 대처하고, 오류가 발생할 때 쉽게 복구하여 좀 더 역동적으로 동작한다는 점이다. 이 장에서는 지금까지 설명한 기능뿐만 아니라, 최근 부상하고 있는 웹 소켓과 같은 기술을 활용하여 플레이 프레임워크로 반응형 애플리케이션을 만들어본다.
10장, ‘스칼라의 고급 기능’에서는 웹 개발에 대한 최근 추세와 향후 전망에 대해 설명하면서 이 책을 마무리한다. 예를 들어 자바 개발자는 좋든 싫든 클라이언트를 개발할 때 자바스크립트를 다뤄야 할 일이 많아지고 있다. 최근에는 DSL(Domain Specific Language)도 주목받고 있다. 자바에서는 DSL을 제공하기가 쉽지 않다.
목차
목차
- 1장 스칼라 맛보기
- 자바 프로젝트에서 스칼라를 사용하면 좋은 점
- 간결하면서도 풍부한 표현력
- 높은 생산성
- 자바와 찰떡 궁합
- 뛰어난 비동기 및 동시성 처리
- REPL로 배우는 스칼라 문법
- 변수 선언
- 클래스 정의
- case 클래스
- 컬렉션 연산
- 기본 타입으로 구성된 컬렉션 변환
- 복잡한 오브젝트에 대한 컬렉션
- filter와 partition
- 튜플
- 맵
- Option
- 패턴 매칭 맛보기
- map 메소드
- 스트링 인터폴레이션
- groupBy 메소드
- foldLeft 메소드
- 정리
- 자바 프로젝트에서 스칼라를 사용하면 좋은 점
- 2장 코드 연동
- 데이터베이스를 이용한 REST API 생성
- 샘플 데이터베이스
- 메이븐 프로젝트 만들기
- JPA 엔티티와 REST 웹 서비스 생성
- 프로젝트 실행하고 테스트하기
- 자바 코드에 대한 유닛 테스트 추가
- 스칼라로 테스트 코드 작성하기
- 자바 메이븐 프로젝트에서 스칼라를 사용하도록 설정
- 스칼라와 자바 코드의 연동
- 컬렉션 타입 변환
- 자바빈 스타일의 프로퍼티
- 스칼라와 자바의 객체지향 지원 방식
- 자바 인터페이스를 개선한 스칼라 트레잇
- 오브젝트 선언
- 컴패니언 오브젝트
- 예외 처리
- 자바와 스칼라의 코딩 스타일 차이점
- 코드 레이아웃 다듬기
- 명명 규칙
- 정리
- 데이터베이스를 이용한 REST API 생성
- 3장 스칼라 에코시스템
- 자바 IDE로 구축하는 스칼라 IDE
- SBT 빌드
- SBT 살펴보기
- 예제 프로젝트 생성
- 이클립스와 인텔리제이 IDEA, 넷빈즈에 프로젝트 임포트하는 방법
- 서블릿 컨테이너에서 실행할 웹 애플리케이션 만들기
- sbt-assembly로 하나의 .jar 파일로 만들기
- Scalariform으로 코드 포맷팅
- SBT 살펴보기
- 스칼라 워크시트
- HTTP 다루기
- 스칼라의 for 문
- 타입세이프 액티베이터의 활용
- 타입세이프 액티베이터에서 제공하는 템플릿으로
- 애플리케이션 만들기
- REPL을 스크립트 엔진으로 활용
- 정리
- 4장 테스팅 도구
- ScalaTest로 테스트 작성
- BDD 스타일 테스팅
- 기능 테스트
- ScalaMock으로 모킹하기
- ScalaCheck을 이용한 테스팅
- 정리
- ScalaTest로 테스트 작성
- 5장 플레이 프레임워크
- classic 플레이 배포 버전 시작하기
- 타입세이프 액티베이터 시작하기
- 플레이 애플리케이션의 구조
- 프레임워크의 구성
- 요청-응답 사이클
- 컨트롤러에서 요청 처리
- 뷰 렌더링
- 플레이에서 인증 처리
- 플레이 프레임워크 활용 팁
- 플레이에서 디버깅하기
- 버전 컨트롤 관련 사항
- 정리
- 6장 데이터베이스 사용 방법과 ORM의 미래
- 하이버네이트나 JPA와 같은 ORM 기술의 활용
- 스칼라에서 JPA 사용하기
- 플레이 프레임워크에서 persistence 처리하기
- Anorm을 이용한 간단한 예제
- ORM 대신 사용할 수 있는 기술
- 슬릭 소개
- 플레이 애플리케이션 스캐폴딩하기
- 테스트 데이터 임포트하기
- H2browser로 데이터베이스 시각화하기
- 앱 생성 관련 코드 분석
- playcrud 유틸리티의 한계
- 정리
- 7장 웹 서비스에서 시스템 연동
- 스칼라에서 XML 데이터 바인딩하기
- SOAP 웹 서비스를 통해 scalaxb 구동하기
- XML과 JSON 다루기
- XML 다루기
- JSON 다루기
- 플레이 프레임워크에서 제공하는 JSON 라이브러리
- XML과 JSON으로 전달된 플레이 요청 처리하기
- JSON으로 플레이 응답 흉내내기
- 플레이에서 웹 서비스 호출하기
- 정리
- 스칼라에서 XML 데이터 바인딩하기
- 8장 비동기와 동시성
- 동시성의 구성 요소
- Async 라이브러리: SIP-22-Async
- 웹 서비스 조합
- await 구문을 사용하지 않고 서비스 연결하기
- 아카 살펴보기
- 액터 모델의 이해
- 동작 변경
- 메시지 처리에 실패했을 경우
- 액터 시스템 테스트
- 이 장에서 다루지 못한 Akka의 기능
- 정리
- 9장 반응형 웹 애플리케이션
- 반응형 애플리케이션의 정의
- 반응형 스트림 처리
- 플레이에서 제공하는 Iteratee 패턴
- Enumerator를 Enumeratee에 적용하기
- 플레이에서 제공하는 Iteratee와 웹소켓 사용하기
- 액티베이터 템플릿으로 반응형 웹 애플리케이션 만들기
- 반응형 주가 정보 애플리케이션
- 반응형 실시간 검색
- Play-Akka-Angular-WebSocket 템플릿
- Actor Room 프로젝트
- 정리
- 10장 스칼라의 고급 기능
- 몽고DB
- 카스바
- 맵리듀스 사용하기
- 빅데이터 맛보기
- 스칼라의 DSL
- 내장형 DSL
- 파서 컴비네이터로 외장형 DSL 만들기
- Scala.js
- 마지막 팁
- REPL에서 복사하고 붙여넣기
- REPL에서 코드 실행 시간 측정
- 정리
- 몽고DB
도서 오류 신고
정오표
정오표
2015.05.06 수정 사항
[앞판권 원서 ISBN 수정]
‘Scala for Java Developers (9781507646045)’ -> ‘Scala for Java Developers (9781783283637)’