Top

자바 개발자를 위한 스칼라 프로그래밍

  • 원서명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을 제공하기가 쉽지 않다.

저자/역자 소개

저자 서문

이 책은 자바 프로젝트를 스칼라로 옮겨가거나 스칼라와 혼용하는 방법에 대해, 실제 환경에서 사용할 수 있는 예제를 통해 단계 별로 설명하고 있다. 먼저 스칼라 문법과 에코시스템에 대해 소개한 다음, 액터 기반의 아카 프레임워크나 플레이 웹 프레임워크, 최근 떠오르는 슬릭 프레임워크를 비롯한 여러 가지 타입세이프 기술을 활용하여 반응형 웹을 작성하는 방법에 대해 설명한다. 그런 다음, 이렇게 작성한 코드에 대해 단위 테스트, 통합 테스트, 기능 테스트에 필요한 여러 가지 도구를 소개하고, 외부 시스템과 스칼라를 통합하는 방법과 이를 통해 얻을 수 있는 장점을 보여준다. 스칼라의 기초적인 문법을 익히는 것부터, 최신 반응형 애플리케이션을 작성하기까지, 복잡한 문제에 대해 간결하고 유지하기 좋은 솔루션을 만드는 데 필요한 기법을 소개하면서 여러분의 프로그래밍 실력을 한층 높여줄 것이다.

저자 소개

토마스 알렉산더(Thomas Alexandre)

데브코드(DevCode)의 시니어 컨설턴트로 일하고 있으며, 전문 분야는 자바와 스칼라 소프트웨어 개발이다. 기술에 대한 열정이 풍부하고, 지식을 나누는 데 적극적이며, 새로운 오픈 소스 소프트웨어와 표준을 적용해 코드의 효율성을 높이는 방법을 연구하는 데 전념하고 있다. 15년 이상의 자바 개발 경력을 갖고 있으며, 최근에는 그루비(Groovy)나 스칼라(Scala)처럼 새롭게 떠오르는 언어와 웹 프레임워크에도 관심이 많다. 프랑스의 릴(Lille) 대학에서 전산학으로 박사를 받았으며, 박사후 과정으로 카네기 멜론 대학(Carnegie Mellon University)에서 보안과 E-커머스 분야로 2년간 연구한 바 있다. 스칼라의 창시자들이 만든 타입세이프 사의 공인 트레이너 자격도 보유하고 있다.

옮긴이의 말

최근 스칼라에 대한 관심이 부쩍 늘어난 것을 느낄 수 있습니다. C나 자바 같은 명령형 언어를 선호하고, 스칼라처럼 생소한 함수형 언어가 인기를 얻기 힘든 국내 분위기에 비춰볼 때, 생각보다 빠르게 퍼져 나가는 것 같습니다. 스칼라에 관한 책이 많이 나와 있지만, 기존에 자바를 주력 언어로 사용하던 개발자가 빠르게 스칼라로 갈아탈 수 있도록, 자바와 다른 점을 알려주고, 자바 코드와 섞어서 프로젝트를 개발하기 위한 방법을 간결하게 설명하는 점이 이 책의 두드러진 특징인 것 같습니다. 어느 정도 내공이 있어서 두꺼운 교과서나 레퍼런스 형태의 책은 부담스럽고, 스칼라의 핵심만 재빨리 익히려는 자바 프로그래머가 읽기 쉽게 구성되어 있습니다. 다른 책을 번역할 때도 그랬지만, 최대한 번역서라는 느낌을 받지 않도록 억지스런 한글 용어나 어색한 한자어 표현을 가급적 자제하고, 개발자의 입장에서 내용에 집중하는 데 방해되지 않고 술술 읽을 수 있도록 번역하고자 노력했습니다. 원서는 어느 정도 배경 지식을 갖춘 독자를 대상으로 집필했는데, 번역하는 과정에서 초보자 입장에서 언뜻 이해하기 힘든 부분에 가급적 설명을 보충했습니다.

옮긴이 소개

남기혁

고려대 컴퓨터학과에서 학부와 석사 과정을 마친 후 한국전자통신연구원에서 선임 연구원으로 재직하던 중 네트워크 제어 및 검증 솔루션 회사인 ㈜프리스티를 창업했다. 관심 분야는 SDN을 비롯한 네트워크 제어 및 가상화, 시스템 검증 기술이다. 에이콘출판사에서 출간한 『GWT 구글 웹 툴킷』(2008), 『해킹 초보를 위한 USB 공격과 방어』(2011), 『HTML5 비디오』(2012), 『자바 7의 새로운 기능』(2013), 『iOS 해킹과 보안 가이드』(2014), 『Neutron 오픈스택 네트워킹』(2015) 등을 번역했다.

감수자 소개

김강모

고려대학교 컴퓨터학과 졸업 후, 알티베이스, 중국마이크로소프트에서 엔터프라이즈 소프트웨어를 개발하고 한국거래소에서 저 지연(Low latency) 주식거래시스템인 Exture+를 개발하였다. 이후, 한국 비트코인 거래소에서 CTO로 근무하면서 스칼라와 플레이 프레임워크를 다양한 서비스에 적용하였다. 현재는 나노랫에서 검색엔진을 개발하고 있으며, 여러 스타트업들의 어드바이저 역할을 담당하고 있다.

목차

목차
  • 1장 스칼라 맛보기
    • 자바 프로젝트에서 스칼라를 사용하면 좋은 점
      • 간결하면서도 풍부한 표현력
      • 높은 생산성
      • 자바와 찰떡 궁합
      • 뛰어난 비동기 및 동시성 처리
    • REPL로 배우는 스칼라 문법
      • 변수 선언
      • 클래스 정의
      • case 클래스
    • 컬렉션 연산
      • 기본 타입으로 구성된 컬렉션 변환
      • 복잡한 오브젝트에 대한 컬렉션
        • filter와 partition
        • 튜플
        • Option
        • 패턴 매칭 맛보기
        • map 메소드
        • 스트링 인터폴레이션
        • groupBy 메소드
        • foldLeft 메소드
    • 정리

  • 2장 코드 연동
    • 데이터베이스를 이용한 REST API 생성
      • 샘플 데이터베이스
      • 메이븐 프로젝트 만들기
      • JPA 엔티티와 REST 웹 서비스 생성
      • 프로젝트 실행하고 테스트하기
      • 자바 코드에 대한 유닛 테스트 추가
    • 스칼라로 테스트 코드 작성하기
    • 자바 메이븐 프로젝트에서 스칼라를 사용하도록 설정
    • 스칼라와 자바 코드의 연동
      • 컬렉션 타입 변환
      • 자바빈 스타일의 프로퍼티
      • 스칼라와 자바의 객체지향 지원 방식
      • 자바 인터페이스를 개선한 스칼라 트레잇
      • 오브젝트 선언
      • 컴패니언 오브젝트
      • 예외 처리
    • 자바와 스칼라의 코딩 스타일 차이점
      • 코드 레이아웃 다듬기
      • 명명 규칙
    • 정리

  • 3장 스칼라 에코시스템
    • 자바 IDE로 구축하는 스칼라 IDE
    • SBT 빌드
      • SBT 살펴보기
        • 예제 프로젝트 생성
        • 이클립스와 인텔리제이 IDEA, 넷빈즈에 프로젝트 임포트하는 방법
        • 서블릿 컨테이너에서 실행할 웹 애플리케이션 만들기
      • sbt-assembly로 하나의 .jar 파일로 만들기
      • Scalariform으로 코드 포맷팅
    • 스칼라 워크시트
    • HTTP 다루기
      • 스칼라의 for 문
    • 타입세이프 액티베이터의 활용
      • 타입세이프 액티베이터에서 제공하는 템플릿으로
      • 애플리케이션 만들기
    • REPL을 스크립트 엔진으로 활용
    • 정리

  • 4장 테스팅 도구
    • ScalaTest로 테스트 작성
      • BDD 스타일 테스팅
      • 기능 테스트
      • ScalaMock으로 모킹하기
    • ScalaCheck을 이용한 테스팅
    • 정리

  • 5장 플레이 프레임워크
    • classic 플레이 배포 버전 시작하기
    • 타입세이프 액티베이터 시작하기
    • 플레이 애플리케이션의 구조
      • 프레임워크의 구성
      • 요청-응답 사이클
      • 컨트롤러에서 요청 처리
      • 뷰 렌더링
    • 플레이에서 인증 처리
    • 플레이 프레임워크 활용 팁
      • 플레이에서 디버깅하기
      • 버전 컨트롤 관련 사항
    • 정리

  • 6장 데이터베이스 사용 방법과 ORM의 미래
    • 하이버네이트나 JPA와 같은 ORM 기술의 활용
    • 스칼라에서 JPA 사용하기
    • 플레이 프레임워크에서 persistence 처리하기
      • Anorm을 이용한 간단한 예제
    • ORM 대신 사용할 수 있는 기술
    • 슬릭 소개
    • 플레이 애플리케이션 스캐폴딩하기
      • 테스트 데이터 임포트하기
      • H2browser로 데이터베이스 시각화하기
      • 앱 생성 관련 코드 분석
      • playcrud 유틸리티의 한계
    • 정리

  • 7장 웹 서비스에서 시스템 연동
    • 스칼라에서 XML 데이터 바인딩하기
      • SOAP 웹 서비스를 통해 scalaxb 구동하기
    • XML과 JSON 다루기
      • XML 다루기
      • JSON 다루기
      • 플레이 프레임워크에서 제공하는 JSON 라이브러리
    • XML과 JSON으로 전달된 플레이 요청 처리하기
      • JSON으로 플레이 응답 흉내내기
      • 플레이에서 웹 서비스 호출하기
    • 정리

  • 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에서 코드 실행 시간 측정
    • 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

2015.05.06 수정 사항

[앞판권 원서 ISBN 수정]
‘Scala for Java Developers (9781507646045)’ -> ‘Scala for Java Developers (9781783283637)’