Description
JVM부터 성능, 동시성, 컨테이너화 등 고급 기술까지
자바는 엔터프라이즈 소프트웨어 엔지니어링의 핵심이다. 훌륭한 자바 개발자가 되기 위해선 기본기를 갖춰야 한다. 이 책은 자바 8 이후 자바 생태계와 릴리스 주기가 어떻게 변화했는지 살펴보며, 특히 자바 11 및 17에 추가된 새로운 기능을 설명한다. 자바 모듈 및 동시성 모델, 클래스 로딩과 같은 강력한 기능부터 성능 최적화와 바이트코드를 위한 고급 기술 그리고 테스트 중심 개발과 컨테이너 기반 배포와 같은 필수 최신 기술까지 알아본다. 코틀린 및 클로저 등 다른 JVM 언어까지 다뤄 자바 기술을 한층 더 업그레이드하고 탄탄한 기반을 다질 수 있도록 도와준다.
저자

벤저민J.에번스,제이슨클라크,마르테인페르뷔르흐

(BenjaminJ.Evans)
레드햇의자바챔피언이자수석소프트웨어엔지니어다.뉴렐릭,도이체방크에서수석아키텍트였으며,모건스탠리에서수석기술강사로근무했다.jClarity를공동창립했고,자바커뮤니티프로세스집행위원회에서새로운자바표준을정의하는데도움을줬다.저서로《자바최적화》(한빛미디어,2019)와《JavainaNutshell》(O’Reilly,2014)등이있다.전세계기업및콘퍼런스에서자바플랫폼,시스템아키텍처,성능및동시성등의주제로정기적으로연설및교육하고있다.

목차

지은이·옮긴이소개xv
옮긴이머리말xvii
베타리더후기xviii
추천서문(하인츠카부츠)xx
시작하며xxii
감사의글xxv
이책에대하여xxviii
표지에대하여xxxii

PARTI버전8에서11그리고그이후1
CHAPTER1모던자바소개3
1.1언어와플랫폼4
1.2새로운자바릴리스모델6
1.3향상된타입추론(var키워드)10
1.4언어및플랫폼변경15
1.5자바11에서의작은변경사항20
▶요약30

CHAPTER2자바모듈31
2.1배경설명32
2.2기본적인모듈구문41
2.3모듈로드하기45
2.4첫모듈형앱빌드하기48
2.5모듈을위한아키텍처55
2.6모듈을넘어서64
▶요약66

CHAPTER3자바1767
3.1Text블록67
3.2switch표현식69
3.3record73
3.4sealed타입85
3.5instanceof의새로운형식91
3.6패턴매칭과프리뷰기능92
▶요약96

PARTII한발더들어가기97
CHAPTER4클래스파일과바이트코드99
4.1클래스로딩과클래스객체100
4.2클래스로더105
4.3클래스파일살펴보기117
4.4바이트코드123
4.5리플렉션138
▶요약144

CHAPTER5자바동시성기초145
5.1동시성이론입문146
5.2디자인콘셉트151
5.3블록구조동시성(자바5이전)156
5.4자바메모리모델179
5.5바이트코드로동시성이해하기182
▶요약205

CHAPTER6JDK동시성라이브러리206
6.1최신동시애플리케이션을위한빌딩블록206
6.2아토믹클래스207
6.3잠금클래스209
6.4CountDownLatch212
6.5ConcurrentHashMap214
6.6CopyOnWriteArrayList225
6.7블로킹큐229
6.8퓨처239
6.9작업과실행243
▶요약251

CHAPTER7자바성능이해하기252
7.1몇가지성능용어의기본정의255
7.2성능분석에대한실용적인접근방식258
7.3무엇이문제인지왜신경써야하는가?265
7.4자바성능튜닝은왜어려운가?269
7.5가비지컬렉션274
7.6핫스폿에서의JIT컴파일284
7.7JDKFlightRecorder291
▶요약298

PARTIIIJVM에서자바외의언어299
CHAPTER8다른JVM언어301
8.1언어분류학302
8.2JVM에서의다중언어프로그래밍307
8.3프로젝트에비자바언어를선택하는방법314
8.4JVM이다른언어를지원하는방법318
▶요약322

CHAPTER9코틀린323
9.1코틀린을사용하는이유324
9.2편의성과간결성325
9.3클래스와객체에대한다른시각337
9.4안전성345
9.5동시성349
9.6자바와의상호운용성353
▶요약358

CHAPTER10클로저:프로그래밍에대한다른관점359
10.1클로저소개360
10.2클로저찾아보기:구문및의미론370
10.3함수형프로그래밍과closure388
10.4클로저시퀀스소개390
10.5클로저와자바간의상호운용성397
10.6매크로403
▶요약410

PARTIV빌드와디플로이먼트411
CHAPTER11그래들과메이븐을사용한빌드413
11.1기본기가탄탄한개발자에게빌드도구가왜중요한가413
11.2메이븐419
11.3그래들450
▶요약481

CHAPTER12컨테이너에서자바실행하기482
12.1기본기가튼튼한개발자에게컨테이너가중요한이유483
12.2도커기본487
12.3도커로자바애플리케이션개발하기494
12.4쿠버네티스510
12.5관측가능성과성능519
▶요약524

CHAPTER13테스트기본525
13.1테스트하는이유526
13.2테스트방법526
13.3테스트주도개발530
13.4테스트더블539
13.5Junit4에서5로552
▶요약559

CHAPTER14Junit을넘어선테스트560
14.1테스트컨테이너를이용한통합테스트560
14.2Spek과코틀린을사용한명세스타일테스팅572
14.3클로저를사용한속성기반테스트579
▶요약594

PARTV자바의새영역595
CHAPTER15고급함수프로그래밍597
15.1함수형프로그래밍개념소개598
15.2자바의함수형프로그래밍언어로서의한계603
15.3코틀린함수형프로그래밍619
15.4클로저함수형프로그래밍637
▶요약644

CHAPTER16고급동시성프로그래밍645
16.1Fork/Join프레임워크646
16.2동시성과함수형프로그래밍653
16.3코틀린코루틴의내면들여다보기660
16.4클로저동시성669
▶요약685

CHAPTER17최신내부구조686
17.1JVM내부구조소개:메서드호출687
17.2리플렉션내부694
17.3메서드핸들700
17.4Invokedynamic707
17.5내부의작은변화들713
17.6Unsafe721
17.7지원되는API로Unsafe대체하기726
▶요약731

CHAPTER18앞으로의자바732
18.1프로젝트앰버733
18.2프로젝트파나마735
18.3프로젝트룸743
18.4프로젝트발할라753
18.5자바18762
▶요약763

APPENDIXA자바선택하기765
A.1자바는여전히무료다765
A.2자바SE8유지766
A.3자바SE11받기766
A.4자바SE17(장기지원버전)받기767
A.5유료지원768

APPENDIXB자바8에서의스트림에대한요약769
B.1하위호환성769
B.2디폴트메서드770
B.3스트림772
B.4컬렉션의한계776
B.5무한스트림776
B.6원시타입다루기777
B.7병렬연산?779

찾아보기781

출판사 서평

더나은자바개발자가되는법자바는많은개발자에게이미익숙한언어다.1995년썬마이크로시스템즈에서개발해무려30여년동안사랑받아왔으며,자바21까지출시됐다.익숙하면초심을잊기마련이다.지금보다더나은개발자가되고싶다면기본기를갖춰야한다.기본기가탄탄할수록변화하는기술환경에잘적응해활용하는개발자가될수있다.자바에대한기본기를탄탄하게갖추고싶고,6개월이라는빠른릴리스주기와자바21이출시됐음에도여전히자바8을사용한다는이유로새로운자바를배우는것이쉽지않았다면바로이책을선택하자.

2012년《TheWell-GroundedJavaDeveloper》의2판으로,10여년동안변화해온자바에대한모든것을담았다.자바7에서자바8과11이대세로자리잡았고,스칼라는매우강력한JVM언어가됐다.이책은흐름에맞춰자바8부터17까지의주요기능과변화를체계적으로설명한다.람다표현식,스트림API,모듈시스템,Text블록등최신기능들을실제코드에어떻게적용할수있는지를보여주고,JVM언어를폭넓게탐구한다.

총5부로구성됐다.1부에서는버전8부터11까지를자세히살펴본다.자바17로업그레이드하는방법과함께자바11에포함된편의성향상에대한내용으로시작해자바8이후자바생태계와릴리스주기가어떻게변화했는지알아본다.특히완전모듈시스템추가에대해자세히알수있어애플리케이션과라이브러리에서활용하는방법을알게될것이다.

2부에서는JVM이실제로어떻게작동하는지살펴본다.자바개발자는자바의동시성기능에대해잘알고있어야하는데,2부에서최신프로세서를최대한활용하는방법을알려준다.또한,성능에영향을미치는JVM의두가지주요부분인가비지컬렉션과JIT컴파일러에대해집중적으로다룬다.3부에서는JVM에서의다중언어프로그래밍을다룬다.함수형프로그래밍은자바가표현한전형적인객체지향적시각에대한대안으로계속해서주목받고있는데,이를알아보기위해코틀린과클로저를살펴본다.

4부에서는자바애플리케이션을빌드,테스트,배포하기위한도구를효과적으로사용하는방법에대해설명한다.가장널리사용되는두가지자바빌드도구인메이븐과그래들을살펴보고,자바애플리케이션환경을컨테이너에통합하는구체적인방법,다양한테스트접근방식과각각의장단점에대해탐구한다.5부에서는지금까지의학습을기반으로함수형프로그래밍,동시성,플랫폼내부에대해더깊게살펴본다.부록에서는자바를선택하는방법과자바8스트림과관련된함수형프로그래밍을간략하게알아본다.

이책을통해새로운자바기능을발견하고,테스트중심개발및컨테이너기반배포와같은필수적인최신소프트웨어기술에익숙해지는것은물론JVM에서의비자바언어를학습할수있다.기본기가탄탄한자바개발자를넘어훌륭한자바개발자로성장하는데훌륭한길잡이가될것이다.

주요내용
● 자바11및17의새로운기능
● 컨테이너에서JVM실행하는법
● JDK동시성라이브러리사용법
● 코틀린및클로저등다른JVM언어의중요성
● 메이븐과그래들로CI/CD를극대화하는방법
● 동시성과함수형프로그래밍사이의상호작용