Top

자바 람다 배우기 [람다에 대해 이해하고 활용하기]

  • 원서명Learning Java Lambdas (ISBN 9781787282087)
  • 지은이토비 웨슨(Toby Wetson)
  • 옮긴이조승진
  • ISBN : 9791161750378
  • 12,000원
  • 2017년 08월 18일 펴냄
  • 페이퍼백 | 152쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

자바8에서 새롭게 도입된 기능인 람다의 사용법을 설명하는 글은 많지만, 사용법뿐만 아니라 그 원리에 대해서도 깊이 이해하기에는 부족하다. 이 책은 더 깊은 수준에서 람다와 그 원리에 대해서 이해하고 싶은 사람들을 위해 쓰였다. 장황하지 않은 람다의 특성 그대로의 사용법이나 독자들이 다른 책에서 접해봤을 지식보다 더 다양한 주제를 다룬다. JVM 수준에서의 람다의 작동원리를 소개하고 한층 더 높은 수준의 엔지니어가 될 수 있는 기회를 제공한다.

이 책에서 다루는 내용

람다와 함수형 인터페이스, 타입 추론처럼 람다를 지원하기 위한 기능들을 심도 있게 알아본다.
■ 최신 자바의 새로운 기능에 대한 개요
■ 람다에 대한 심도 있는 내용과 그 배경, 문법, 상세 구현, 바람직한 적용 시점 및 방법
■ 함수와 클래스의 차이점, 그리고 그것들과 람다의 관계
■ 람다와 클로저 간의 차이점
■ 다양한 새 기능들을 가능하게 하는 타입 추론에 대한 개선 사항
■ 메소드 참조 사용법과 변수 범위에 대한 이해, 그리고 ‘유사 파이널(effectively final)’
의 개념
■ 람다를 사용해 생성된 바이트코드의 특징
■ 람다를 사용할 때 고려할 수 있는 예외와 모범적인 예외 처리

이 책의 대상 독자

애플리케이션을 새로 개발하는 경우든, 기존 자바 프로그램을 최신 자바 스타일로 변경하는 경우든 상관없이 이 책은 자바 플랫폼에서 함수형 프로그래밍의 장점을 취할 수 있도록 돕는다.

저자/역자 소개

지은이 소개

토비 웨슨(Toby Wetson)

최신 소프트웨어 개발, 그중에서도 함수형 객체지향 프로그래밍, 애자일, 린의 베스트 사례들을 전문으로 한다. 『Essential Acceptance Testing』(2013)을 저술했고, 정기적으로 블로그에 글을 올리면서 때로는 잡지에도 기고한다.
15년 넘게 소프트웨어 산업의 일원이었고 자신이 하는 일을 사랑한다. 소프트웨어 개발에 대해 말하고 쓰는 것과 온라인으로 자신의 경험을 공유하는 것을 좋아한다.

옮긴이의 말

최근 들어 많은 수의 개발자들이 자바로 작성된 기존 프로젝트들을 버려야 할 것으로 취급하며 자바를 무시하는 경우를 많이 봤다. 이처럼 자바스크립트나 파이썬과 같이 동적 언어로 개발을 시작한 많은 개발자들에게 자바는 인기 있는 언어가 아닌 것 같다.
앞서 언급한 언어들은 모두 각 분야에서 뛰어난 언어임에 틀림없지만, 무조건적으로 특정 언어를 불호하는 것은 오해에서 비롯됐다고 생각한다. 선입견의 대부분은 목표를 달성하기 위해 소프트웨어 원칙을 지키지 않거나, 올바르지 않은 설계를 사용해 개발된 결과물을 접했기 때문이라 예상한다. 한마디로 그런 조직에서는 어떤 언어를 사용했다 하더라도 비슷한 비난을 피하긴 힘들었을 것이다.
자바는 다양한 플랫폼을 지원하는 동시에 많은 수의 개발자들이 다룰 수 있는 현존하는 가장 강력한 언어 중 하나임이 분명하다.
사용하는 곳이 늘어날수록 하위 호환을 지키는 것이 중요해졌기 때문에 빠른 속도로 새로운 기능을 추가하기가 어려웠고, 이것이 비난받는 원인이라 생각한다. 하지만 자바 역시 살아남기 위해 꾸준히 노력해왔다. 최근에 나타나는 그 대표적인 변화 중 하나가 람다다. 이미 람다가 출시된 지 몇 년이 지난 터라, 많은 개발자들이 실제 현장에서 람다를 즐겨 사용하는 것을 볼 수 있다. 하지만 람다는 단순히 컬렉션을 편리하게 다루기 위한 도구라기보다는 함수형 언어의 장점을 가져오길 원했던 자바 커뮤니티의 희망이 이뤄진 것이었고, 문법이 장황해 비판받았던 자바에게는 틀림없이 오아시스 같은 존재다.
개인적으로는 자바보다도 JVM 측면의 변화에 더 주목해야 한다고 생각한다. 많은 사람들이 자바의 미래에 대해 회의적이지만 JVM이 끝까지 살아남게 될 것이라는 데는대체로 동의한다. JVM 위에서 돌아가는 언어는 클로저, 스칼라, 그루비 등이며, 그 인기와 영향력이 나날이 높아지고 있다. JVM의 이런 인기는 속도를 중시하는 애자일이나 린 방법론을 사용하는 조직에서 기기 호환성을 지켜가며 높은 생산성을 보이기 때문이다.
자바 언어의 창시자인 제임스 고슬링도 이런 주장에 힘을 보탰다.
“많은 사람들이 자바에 대해 주목하고 있는 상황에서 내가 이런 말을 하는 것은 다소 이상할 수도 있지만, 나는 자바에 대해 크게 신경 쓰지 않는다. 자바 에코시스템의 핵심은 바로 JVM이기 때문이다.”
이런 상황은 결과적으로 람다와 그 작동 원리를 JVM 수준에서 설명하는 이와 같은 책들을 더욱더 소중하게 만든다. 이 책을 통해 얻을 수 있는 지식들이 실무에 바로 적용 가능한 것들은 아니지만, 대학교 시절의 ‘프로그래밍 언어론’ 과목과 유사하게 각 언어들의 차이점에 대한 깊은 통찰을 제공함으로써 독자들로 하여금 단순한 코더가 아니라 철학을 가진 소프트웨어 엔지니어로서 성장할 수 있게 해주는 디딤돌이 될 것이다.
이 책을 번역하면서 많이 안다고 믿어왔던 내 자신에 대한 믿음이 깨졌고, 자바뿐만 아니라 함수형 프로그래밍 관련 지식까지 얻을 수 있어서 유익했다. 부디 독자들도 소중한 지식을 얻길 기원한다. 책의 내용 또는 번역에 관한 질문이나 의견은 개인 메일로 언제든지 환영한다.

옮긴이 소개

조승진

미국과 한국을 거쳐 일본에서 개발자로 근무 중이다. 자바, 자바스크립트, 파이썬, 클로저, 분산 컴퓨팅, 함수형 언어, 알고리즘 등 소프트웨어 기술 전반과 그 문화에 많은 관심을 가지고 있다. www.tacogrammer.com에서 여러 가지 생각을 적고 있다.

목차

목차
  • 1장. 도입
    • 모던 자바로의 길
      • 모던 자바의 기능들

  • 2장. 람다 소개
    • 함수형 프로그래밍에서 람다(λ)
      • 1930년대와 람다 대수
      • 1950년대와 리스프
      • 람다란 무엇인가
    • 함수와 클래스
      • 최신 자바의 람다
      • 이론상의 차이점
      • 함수와 클래스
      • 몇 가지 세세한 차이점들
        • 점유 문법
        • 가려진 변수들
      • 요약
    • 람다(λ) 기본 문법
      • 문법 상세 내역
      • 요약

  • 3장. 람다 깊이 이해하기
    • 함수형 인터페이스
      • @FunctionalInterface
      • 상속
      • 다른 인터페이스 개선 사항들
      • 요약
    • 타입 추론 개선 사항
      • 자바의 타입 추론
      • 람다를 위한 대상 타이핑
        • 메소드 호출 시의 타입 인자
        • 연쇄 메소드 호출 시의 타입 인자
    • 메소드 참조
      • 예제
      • 메소드 참조의 유형
      • 생성자 참조
      • 정적 메소드 참조
      • 특정 객체의 인스턴스 메소드 참조
      • 람다가 뒤에 인스턴스를 생성하는 임의의 객체의 인스턴스 메소드 참조
      • 요약
    • 변수 범위
      • 유사 파이널
        • 파이널 우회
    • 예외 처리
      • 콜백 사용
      • 람다 작성 중의 예외 처리
      • 람다 호출자(람다 호출 시 에러 처리)
    • 람다 vs. 클로저
      • 기본적인 차이점
      • 기타 차이점들
      • 요약
      • 바이트코드 개요
      • 기술자
      • 메소드 시그니처 변환하기
      • 예제 코드들
      • 예제1
      • 예제2
      • 예제3
      • 예제4
      • 예제4(메소드 참조 사용)
      • 예제5
      • 요약

도서 오류 신고

도서 오류 신고

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

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

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