로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

『JVM 언어 입문: 자바, 스칼라, 클로저, 코틀린, 그루비 체험하기』

   
지은이 빈센트 반 데르 렌   |   출판사 에이콘  |   발행일 2018년 08월 30일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 36,000원32,400원 10%
마일리지 5% 1,800원
발행일 2018-08-30
ISBN 1161751963 | 9791161751962
기타정보 번역서 | 536쪽
예상출고일 금일 가능 (근무일기준)
배송비 무료배송
   
프로그래밍언어
   
 

★ 요약 ★



자바 가상 머신(JVM)을 등장시킨 자바 플랫폼에 대한 개괄적인 내용과 JVM의 주요 개념을 설명하고 가장 인기 있는 사용 사례를 소개한다. JVM 언어로 가장 대표적인 자바의 기본 원리와 애플리케이션 개발 방법을 시작으로 스칼라와 클로저, 코틀린, 그루비의 기본 원리와 개발 방법을 다룬다. 다양한 JVM 언어의 차이를 이해하면 개발하고자 하는 프로그램에 가장 적합한 개발 언어를 선택할 수 있는 혜안을 갖게 될 것이다.





★ 이 책에서 다루는 내용 ★



■ JVM에 대한 실질적인 정보 얻기

■ 인기 있는 JVM 언어와 자바 클래스 라이브러리 이해

■ 명령형과 객체지향, 함수형과 같은 다양한 프로그래밍 패러다임

■ 이클립스IDE와 그래들(Gradle), 메이븐(Maven) 같은 일반적인 JVM 툴 사용

■ 스파크자바(SparkJava), Vert.x, 아카(Akka), 자바FX(JavaFX)와 같은 프레임워크 탐구

■ 자바스크립트(JavaScript)와 파이썬(Python), 루비(Ruby) 등을 포함한 다른 유명한 프로그래밍 언어의 변형에 대한 지식





★ 이 책의 대상 독자 ★



이 책은 자바 가상 머신(JVM)에 관심 있으며 JVM 개발에 가장 인기 있는 프로그램 언어를 알고 싶은 개발자를 대상으로 한다. 객체지향 프로그래밍을 지원하는 프로그래밍 언어(자바스크립트, 파이썬, C#, VB.NET, C++)에 대한 경험적 지식이 있다고 가정한다.





★ 이 책의 구성 ★



1장, ‘자바 가상 머신’에서는 자바 플랫폼과 자바 가상 머신에 대한 개괄적인 내용을 제공한다. 웹 애플리케이션과 빅데이터 분석, 사물인터넷(IoT)와 같이 JVM에서 동작하는 애플리케이션의 가장 인기 있는 사용 사례를 소개한다. 또한 JIT(just-in-time) 컴파일러와 가비지 컬렉션을 포함해서 JVM의 주요한 개념을 설명한다.

2장, ‘자바 가상 머신에서 개발하기’에서는 JVM의 기술적인 부분을 설명한다. 주요 운영 체제(윈도우, 맥OS, 리눅스)에서 자바 개발 키트(JDK)를 설치하는 절차와 JDK의 구조를 다룬다. 자바 클래스 라이브러리의 구조와 클래스 경로(ClassPath)를 설정해서 JVM 기반 애플리케이션을 실행하는 방법도 설명한다.

3장, ‘자바’에서는 자바의 기본 원리를 다룬다. 클래스를 생성하고 이 클래스에서 객체를 생성하며, 클래스에 메소드와 속성을 추가하는 방법과 자바 접근 제어자와 다른 수식어를 설명한다. 이외에도 추상 클래스와 인터페이스, 배열, 컬렉션, 예외도 다루며 스레드와 람다 같은 고급 기능도 설명한다.

4장, ‘자바 프로그래밍’에서는 자바 언어로 간단한 웹 서비스를 제작하는 방법을 단계별로 설명한다. 이때 이클립스(Eclipse) IDE와 그래들(Gradle) 빌드 도구, 스파크자바(SparkJava)와 같은 프로그래밍 라이브러리(마이크로 웹 서비스 프레임워크), JUnit 단위 테스트 프레임워크를 사용한다.

5장, ‘스칼라’에서는 하이브리드 함수형 프로그래밍과 객체지향 프로그래밍 언어 스칼라(Scala)에 대해 설명한다. 스칼라를 설치하는 절차와 언어에 번들로 포함된 대화명 셀의 사용법도 설명한다. 대화형 셀을 사용하면 명시적으로 코드를 컴파일하지 않고도 스칼라 코드를 작성하고 동적으로 실행할 수 있다. 스칼라에서는 객체지향과 함수형 프로그래밍을 모두 다룬다.

6장, ‘스칼라 프로그래밍’에서는 인기 많은 아카(Akka) 툴킷으로 구동하는 간단한 콘솔 기반 애플리케이션을 작성하는 방법을 순차적으로 설명한다. 아카는 최신의 멀티 코어 프로세서를 최대한 활용하는 확장 가능한 애플리케이션에 특화된 툴킷이다. 액터 기반 시스템과 같은 아카와 관련된 많은 개념도 간단히 다룬다. 프로젝트를 빌드하기 위해 스칼라 빌드 툴(SBT, Scala Build Tool)을 사용하고, 단위 테스트를 작성하는 데는 스칼라테스트(ScalaTest) 라이브러리를 사용한다.

7장, ‘클로저’에서는 리스프(Lisp)에서 영감을 얻은 동적 함수형 프로그래밍 언어인 클로저(Clojur)의 기본 원리를 설명한다. 클로저는 객체지향 프로그래밍 언어가 아니다. 스칼라와 같이 클로저도 다양한 예제를 작성하는 데 사용 가능한 대화형 셸을 포함한다. 멀티 스레드 애플리케이션에서 상태를 처리하는 기술인 에이전트도 다룬다.

8장, ‘클로저 프로그래밍’에서는 두 개의 작은 프로젝트에 대한 단계별 가이드를 제공한다. 첫 번째 프로젝트는 모나드(monad)를 기반으로 하는데, 모나드는 기능적 프로그래밍 언어, 특히 리스프에서 흔히 사용하는 기법이다. 두 번째 프로젝트는 클로저를 위한 마이크로 웹 프레임워크 중 가장 인기 있는 루미너스(Luminus)로 구동되는 웹 애플리케이션이다. 두 프로젝트를 빌드하는 데는 라이닌겐(Leiningen) 빌드 도구를 사용한다.

9장, ‘코틀린’에서는 젯브레인의 정적 자료형 프로그램 언어인 코틀린(Kotlin)을 설명한다. 안전한 null 처리를 보장하는 코틀린의 자료형 시스템을 설명하고, 데이터 클래스와 람다, 인라인 함수와 같은 다른 기능을 다룬다. 코틀린에서의 절차적 프로그래밍도 설명한다.

10장, ‘코틀린 프로그래밍’에서는 자바FX(JavaFX) 툴킷을 사용해서 GUI 기반의 데스크톱 애플리케이션을 제작하는 절차를 단계별로 설명한다. 프로젝트는 아파치 메이븐(Apache Maven)을 사용해 빌드하고, 버그를 찾고 수정하는 데 이클립스 IDE 디버거를 사용한다.

11장, ‘그루비’에서는 JVM에 등장한 첫 번째 대체 언어 중 하나인 동적 프로그래밍 언어 그루비(Groovy)를 다룬다. 그루비는 기본적으로 동적 언어지만, 정적 자료형 코드도 컴파일할 수 있다. 이 장에서는 두 가지 경우를 모두 설명한다. 광범위한 내장 클래스 라이브러리인 그루비 개발 키트도 함께 살펴본다. 그루비 개발 키트는 그루비 언어 배포 시에 함께 배포된다.

12장, ‘그루비 프로그래밍’에서는 JDBC(Java Database Connectivity) 표준을 사용해서 내장 데이터베이스 관리 시스템으로부터 데이터를 추출하고 그루비 개발 키트의 클래스를 사용해서 XML을 생성하는 그루비 기반의 웹 서비스를 제작하는 절차를 설명한다. 웹 서비스는 Vert.x 프레임워크를 사용해서 구동한다.

부록 A, ‘다른 JVM 언어’에서는 종종 비주류 언어라 부르는 다섯 가지의 다른 JVM 기반 언어, 오라클 나스호른(자바스크립트), 자이썬(파이썬), 제이루비(루비), 프레게(하스켈), 레드햇의 정적 자료형 언어인 실론(Ceylon)을 다룬다.





★ 지은이의 말 ★



자바 가상 머신(Java Virtual Machine)은 최신 하드웨어 기능의 장점을 극대화할 수 있는 소프트웨어를 실행하는 성숙하고 매우 다재다능한 플랫폼이다. 한때 자바 기반의 애플리케이션은 느리고 거대하며 메모리를 많이 소비한다고 여겨지기도 했으나, 수년간에 걸쳐 많이 개선됐다. 동시에 수만 명의 사용자에게 서비스를 제공해야 하는 많은 주류의 클라우드 서비스와 웹사이트가 JVM 기반의 백엔드 시스템을 운영한다는 점은 우연이 아니다.

자바는 의심할 바 없이 JVM 기반에서 실행하는 애플리케이션을 생성하는 데 사용하는 가장 인기 있는 언어다. 하지만 매년 다른 언어들이 점점 더 인기를 얻고 있다. 이 책에서는 자바와 스칼라(Scala), 클로저(Clojure), 코틀린(Kotlin), 그루비(Groovy)라는 다섯 가지의 다른 JVM 기반의 언어를 다룬다. 이 가운데 몇 언어는 정적 자료형 언어이고, 나머지는 동적 자료형 언어다. 이 책은 객체지향 프로그래밍 언어와 함수형 프로그래밍 언어도 함께 다룬다. JVM은 이런 것이 모두 가능하게 만들 만큼 매우 많은 기능을 제공한다.

한 권의 책에서 이 모든 언어를 다루기 때문에 각각의 언어를 쉽게 비교할 수 있고, 샘플 프로젝트를 만들어 보며 자신에게 가장 적합한 언어를 고를 수 있다.

1장. 자바 가상 머신

__JVM 구현체

__왜 JVM에서 개발하는가?

____시장 변화에 적응한 JVM

____자바 클래스 라이브러리

____생태계

__일반 사용 사례

____웹 애플리케이션

____빅데이터

____IoT

__JVM 개념

____가상 머신

____JIT 컴파일러

____기본형 데이터 타입

____클래스

____참조 타입

____가비지 컬렉터

____하위 호환성

____빌드 도구

__자바 에디션

____자바 SE

____자바 EE

____예제

____자바 ME

__JVM의 다른 언어들

____자바 외에 다른 언어를 선택하는 이유

____자바는 매우 장황한 언어다

____프로젝트에 JVM 언어 혼용하여 사용하기

____다른 언어로 단위 테스트 작성하기

__요약





2장. 자바 가상 머신에서 개발하기

__JDK

____JDK 설치

____JDK 들여다보기

____JRE

__패키지를 포함한 클래스 구조

____패키지란?

____패키지 이름 정하기

____패키지 이름 예제

____정규화된 클래스 이름

__자바 클래스 라이브러리

____자바 클래스 라이브러리 구조

____패키지 개요

____java.lang 패키지의 기본 클래스

____컬렉션 API-java.util.ArrayList와 java.util.HashMap

__커맨드 라인에서 JVM 애플리케이션 실행

____적어도 하나 이상의 클래스에 정적 main() 메소드 구현

____클래스 파일에 필요한 디렉터리 구조

____JVM 인스턴스를 위한 클래스경로 설정

____JAR 파일에 클래스 파일 배치하기

____java 명령어로 프로그램 실행하기

____JVM에서 실행하는 프로젝트 실무 사례

__이클립스 IDE

____이클립스 IDE 다운로드

____이클립스 IDE 설치

__요약





3장. 자바

__자바에서의 OOP

____클래스 정의

____클래스 접근 제한자

____Final 클래스 제한자-클래스 잠금

____패키지 정의

____클래스 가져오기

____클래스 멤버, 변수와 메소드 추가하기

____제한자

____생성자와 종료자

____상위형변환과 하위형변환

__자바 코드 작성

____연산자

____조건 체크

____POJO

____배열

____제너릭과 컬렉션

____루프

____스레드

____람다

__스타일 가이드

__퀴즈

__요약





4장. 자바 프로그래밍

__이클립스 IDE 구성

__자바로 웹 서비스 제작하기

____이클립스에서 새로운 그래들 프로젝트 생성하기

____그래들 빌드 파일 수정

____프로젝트 빌드

____백엔드 클래스 작성

__요약





5장. 스칼라

__스칼라 설치

__스칼라의 REPL 셸

__함수형 vs 명령형 프로그래밍

__스칼라 언어 문법과 규칙

____정적 타입 언어

____가변 변수와 불변 변수

____기본 스칼라 타입

____Strings

__스칼라에서의 OOP

____패키지와 하위패키지 선언

____멤버 가져오기

____클래스 정의

____인스턴스 변수와 메소드

____생성자

____클래스 확장

____메소드 오버로딩

____추상 클래스

____트레이트

____싱글턴 객체

____연산자 오버로딩

____case 클래스

__스칼라의 표준 라이브러리

____제너릭

____컬렉션

____XML 처리

__스칼라에서의 함수형 프로그래밍

____함수를 사용해서 컬렉션 검색하기

____맵과 필터, 리듀스 디자인 패턴

____커링

__퀴즈

__요약





6장. 스칼라 프로그래밍

__이클립스 플러그인 형태의 스칼라 IDE

____이클립스에 스칼라 IDE 설치

____스칼라 IDE 퍼스펙티브 전환

__SBT

____SBT 설치

____SBT 기반 이클립스 IDE 프로젝트 생성

____스칼라 컴파일러(scalac)

__아카 프로젝트 생성

____SBT 빌드 파일에 아카 의존성 추가

____스칼라 IDE 프로젝트 업데이트

____아카 개념

____첫 번째 아카 액터 QuotesHandlerActor 생성

____메시지 생성

____ScalaTest 기반 단위 테스트 작성

____메시지 처리기 구현

____QuotePrinterActor 생성

____메인 애플리케이션

__요약





7장. 클로저

__클로저 설치

____시작 스크립트 작성

__클로저 대화형 셸(REPL)

__클로저 언어

____문법

____표현식

____변수 정의

____함수 정의

____데이터 구조

__자바 클래스와 동작하기

____deftype과 defrecord를 가진 간단한 자바 클래스 생성

__에이전트로 상태 관리하기

____에이전트 예제

__스타일 가이드

__퀴즈

__요약





8장. 클로저 프로그래밍

__이클립스 IDE의 카운터클락와이즈 플러그인

____카운터클락와이즈 플러그인 설치

____자바 퍼스펙티브로 변환하기

__라이닌겐 빌드 도구

____라이닌겐 설치

__클로저에서 실행 가능한 프로그램 작성

____라이닌겐 없이 클래스 파일 컴파일

____라이닌겐으로 프로젝트 컴파일

__새로운 카운터클락와이즈 프로젝트 생성

____이클립스 IDE 안의 클로저 REPL

____프로젝트의 클로저 버전 변경

____의존성 추가

__테스트 주도 개발을 통해 모나드 탐구

__루미너스 웹 프레임워크

____루미너스 프로젝트 생성

____카운터클락와이즈에서 프로젝트 가져오기

____루미너스 프로젝트 탐색

____웹 애플리케이션에 페이지 추가

__요약





9장. 코틀린

__코틀린 설치

__실행 스크립트

__코틀린 REPL 대화형 셸

____코틀린 언어 기본

____로컬 변수 정의

____함수 정의

____코틀린 유형

____반복

__코틀린에서 OOP

____패키지 정의

____멤버 가져오기

____클래스와 생성자 정의

____클래스에 멤버 추가

____상속

____인터페이스

____가시성 제한자

____싱글턴과 컴패니언 객체

____데이터 클래스

____람다와 인라인 함수

__코틀린에서 절차적 프로그래밍

__스타일 가이드

__퀴즈

__요약





10장. 코틀린 프로그래밍

__이클립스 IDE를 위한 코틀린 플러그인

____이클립스 IDE를 위한 코틀린 플러그인 설치

____코틀린 퍼스펙티브로 전환

__아파치 메이븐

____아파치 메이븐 설치

____사전에 구성된 코틀린 스타터 키트 다운로드

____이클립스 IDE에 프로젝트 가져오기

____pom.xml 빌드 파일 탐구

____이클립스에서 빌드 파일 변경

__자바FX 데스크톱 GUI 애플리케이션 제작

____프로젝트 준비

____실행 가능한 애플리케이션 제작

____확장 함수 작성

____레이아웃 페인

____BorderPane 기반 레이아웃 구현

____애니메이션 구현

____프로그램 디버깅

__요약





11장. 그루비

__그루비 설치

____그루비콘솔과 그루비셸

__그루비 언어

____그루비에서 객체지향 프로그래밍

__그루비 개발자 키트(GDK)

____그루비 문자열(GStrings)

____컬렉션

__동적, 정적 프로그래밍

____메타 프로그래밍

____그루비에서 정적 프로그래밍

__퀴즈

__요약





12장. 그루비 프로그래밍

__그루비 이클립스 플러그인 설치

____자바 퍼스펙티브 변환

__아파치 아이비와 IvyDE

____이클립스 IDE용 아파치 IvyDE 플러그인 설치

__프로젝트 생성과 구성

____새로운 그루비 이클립스 프로젝트 생성

____아이비를 위한 ivy.xml 파일 생성

__JDBC(Java Database Connectivity)

____H2 데이터베이스

____메모리 내 데이터베이스 생성

__마크업빌더를 사용한 XML 생성

____SQL 기반으로 XML 생성

__Vert.x 마이크로서비스 플랫폼..

____아이비에 Vert.x 의존성 추가

____웹 서비스 생성

__요약





부록 A. 다른 JVM 언어

__오라클 나스호른

____JVM 기반 프로젝트에 나스호른 포함시키기

____나스호른 실행

__자이썬(파이썬)

____C파이썬과 자이썬의 차이

____자이썬 실행

__제이루비(루비)

____루비 온 레일즈와 제이루비

____제이루비 실행

__프레게(하스켈)

____프레게에서 자바 코드 호출

____프레게 실행

__실론

____실론의 모듈 시스템

____실론 실행

__요약

빈센트 반 데르 렌(Vincent van der Leun)

네덜란드 위트레흐트에 사는 소프트웨어 엔지니어다. 여덟 살 때부터 프로그래밍을 시작해서, 수년간 다양한 언어와 플랫폼을 가지고 일해왔다. 몇 년 전, 자바를 재발견한 이후로 자바7 프로그래머로서 오라클 인증 전문가가 됐고 JVM 팬보이 블로그를 시작했을 정도로 자바를 무척 좋아한다. 현재, 현대식 전자 상거래 솔루션을 전문으로 하는 클라우드스위트(CloudSuite)에서 근무하고 있다. 클라우드스위트에서 다양한 백엔드 시스템과 웹 서비스 영역을 담당하고, 프론트엔드 애플리케이션을 위한 자바스크립트 코드를 작성하는 일을 한다. 또한 복잡한 SQL 질의문을 작성해서 컨설턴트를 지원하며 동료 개발자들과 디자인 관련 토론을 즐긴다. 새로운 웹 프레임워크나 기술을 연구하지 않는 여가에는 컬트 영화와 잘 알려지지 않은 액션 영화 DVD와 블루레이를 수집하고 고전 과학 소설을 읽거나 비주류 가수와 작사가의 콘서트를 관람한다.





★ 옮긴이의 말 ★



자바 가상 머신(JVM)은 자바 코드를 컴파일해서 운영체제가 이해할 수 있는 바이트코드를 생성함으로써 자바 애플리케이션을 운영체제에 독립적으로 사용할 수 있게 해주는 실행 환경으로 시작했다. 하지만 최근에는 다양한 개발 언어들이 자바 바이트코드를 생성하거나 JVM 위에서 실행되는 인터프리터를 지원하고 서로 라이브러리를 공유하면서 JVM 자체가 거대한 생태계가 되었다.

이러한 개발 언어가 등장하면서 상대적으로 무겁고 거대한 자바의 인기가 시들어질 것이라는 예측도 있었으나 다양한 언어의 장단점을 수용하고 개선의 노력을 지속한 결과 여전히 자바는 기업형 솔루션, 웹, 앱 등 다양한 분야에서 사용되고 있다. 한편 JVM 기반에서 실행되는 다른 언어들은 자바를 보완할 수 있는 경량의 유연한 방법을 제공해 다양한 영역에서 자바의 대체재로 쓰이며 활용도가 높아지고 있다.

이 책에서는 JVM을 기반을 하는 다양한 언어 중 자바, 스칼라, 클로저, 코틀린, 그루비 다섯 가지 언어를 소개한다. 먼저 각 언어에서 중요한 개념을 소개하고 샘플 프로젝트를 작성하면서 개념을 실습해본다. 그리고 각 언어를 자바와의 차이점을 비교해 설명함으로써 이해를 돕는다. 정적/동적 자료형 타입이나 객체지향 프로그래밍과 함수형 프로그래밍에 대해서도 간략히 설명하지만 아주 심도 있는 개념까지 다루지는 않았으므로, 자바 개발 경험이 없는 개발자들도 쉽게 이해할 수 있으리라 생각한다. 자바 개발 경험이 많은 개발자에게는 다소 내용이 평이하게 느껴질 수 있지만, 비교를 통한 설명으로 새로운 개발 언어에 흥미를 갖게 되고 자신의 애플리케이션에 가장 적합한 언어를 발견하는 계기가 될 것이다.





★ 옮긴이 소개 ★



신은정

아주대학교 정보 및 컴퓨터공학부를 졸업하고, 2001년 IT 서비스 회사에 입사해 다양한 산업의 SI 프로젝트를 수행했으며, 웹 서비스와 BPM, SOA 등에 대한 연구 개발 프로젝트를 수행했다. 개발 생산성 향상을 위한 이클립스 기반 개발 도구와 스프링 기반 엔터프라이즈 프레임워크를 자바 기반으로 개발했으며, 클라우드에도 관심이 많아 한국정보화진흥원의 클라우드 관련 연구 과제와 OAuth 지침서 작성에도 참여했다. 이런 경험이 기반이 되어 93회 정보관리기술사에 합격했고, 현재는 통신업체에서 소프트웨어 거버넌스 업무를 수행하고 있다. 에이콘출판사에서 출간한 『(개정판) 이클립스 RCP』(2012), 『이클립스 4 플러그인 개발』(2013), 『이클립스 Juno 따라잡기』(2014), 『고급 이클립스 플러그인 개발』(2015)을 번역했다.



등록된 서평이 없습니다.
SQL 전문가 가이드 [The Guide for SQL Professional](2013 Edition)...
한국데이터베이스진흥원
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
JSP 2.1 웹 프로그래밍(입문에서 완성까지)(SECOND EDITION)...
손진곤
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
Practical 자바 유틸리티...
장윤기
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
『파이썬으로 풀어보는 회귀분석: 단순선형회귀분석부터 고급 회귀분석까지』
루카 마싸론, 알베르토 보스체티 저
0원
(0%↓+1%)
 
『파이썬으로 풀어보는 회귀분석: 단순선형회귀분석부터 고급 회귀분석까지』
루카 마싸론, 알베르토 보스체티 저
27,000원
(10%↓+5%)
 
『인텔리제이 IDEA: 기본 사용법부터 고급 기능까지 마스터하기』
야마모토 유스케, 이마이 마사노부 저
25,200원
(10%↓+5%)
 
『Kubernetes in Action: 그림과 상세한 설명을 통한 쿠버네티스 완벽 이해』
마르코 룩샤 저
40,500원
(10%↓+5%)
 
『모바일 UX 디자인 : 기획부터 프로토타이핑까지 디자이너의 능력을 확장시키는 방법』
파블로 페레아, 파우 히네르 저
31,500원
(10%↓+5%)
 
이메일주소수집거부