품목정보
발행일 | 2019년 04월 29일 |
---|---|
쪽수, 무게, 크기 | 500쪽 | 183*235*30mm |
ISBN13 | 9791162241776 |
ISBN10 | 1162241772 |
발행일 | 2019년 04월 29일 |
---|---|
쪽수, 무게, 크기 | 500쪽 | 183*235*30mm |
ISBN13 | 9791162241776 |
ISBN10 | 1162241772 |
CHAPTER 1 성능과 최적화 1.1 자바 성능: 잘못된 방법 1.2 자바 성능 개요 1.3 성능은 실험과학이다 1.4 성능 분류 1.5 성능 그래프 읽기 1.6 마치며 CHAPTER 2 JVM 이야기 2.1 인터프리팅과 클래스로딩 2.2 바이트코드 실행 2.3 핫스팟 입문 2.4 JVM 메모리 관리 2.5 스레딩과 자바 메모리 모델(JMM) 2.6 JVM 구현체 종류 2.7 JVM 모니터링과 툴링 2.8 마치며 CHAPTER 3 하드웨어와 운영체제 3.1 최신 하드웨어 소개 3.2 메모리 3.3 최신 프로세서의 특성 3.4 운영체제 3.5 단순 시스템 모델 3.6 기본 감지 전략 3.7 가상화 3.8 JVM과 운영체제 3.9 마치며 CHAPTER 4 성능 테스트 패턴 및 안티패턴 4.1 성능 테스트 유형 4.2 기본 베스트 프랙티스 4.3 성능 안티패턴 개요 4.4 성능 안티패턴 카탈로그 4.5 인지 편향과 성능 테스트 4.6 마치며 CHAPTER 5 마이크로벤치마킹과 통계 5.1 자바 성능 측정 기초 5.2 JMH 소개 5.3 JVM 성능 통계 5.4 통계치 해석 5.5 마치며 CHAPTER 6 가비지 수집 기초 6.1 마크 앤 스위프 6.2 핫스팟 런타임 개요 6.3 할당과 수명 6.4 핫스팟의 가비지 수집 6.5 병렬 수집기 6.6 할당의 역할 6.7 마치며 CHAPTER 7 가비지 수집 고급 7.1 트레이드오프와 탈착형 수집기 7.2 동시 GC 이론 7.3 CMS 7.4 G1 7.5 셰난도아 7.6 C4(아줄 징) 7.7 밸런스드(IBM J9) 7.8 레거시 핫스팟 수집기 7.9 마치며 CHAPTER 8 GC 로깅, 모니터링, 튜닝, 툴 8.1 GC 로깅 개요 8.2 로그 파싱 툴 8.3 GC 기본 튜닝 8.4 Parallel GC 튜닝 8.5 CMS 튜닝 8.6 G1 튜닝 8.7 jHiccup 8.8 마치며 CHAPTER 9 JVM의 코드 실행 9.1 바이트코드 해석 9.2 AOT와 JIT 컴파일 9.3 핫스팟 JIT 기초 9.4 코드 캐시 9.5 간단한 JIT 튜닝법 9.6 마치며 CHAPTER 10 JIT 컴파일의 세계로 10.1 JITWatch란? 10.2 JIT 컴파일 개요 10.3 인라이닝 10.4 루프 펼치기 10.5 탈출 분석 10.6 단형성 디스패치 10.7 인트린직 10.8 온-스택 치환 10.9 세이프포인트 복습 10.10 코어 라이브러리 메서드 10.11 마치며 CHAPTER 11 자바 언어의 성능 향상 기법 11.1 컬렉션 최적화 11.2 List 최적화 11.3 Map 최적화 11.4 Set 최적화 11.5 도메인 객체 11.6 종료화 안 하기 11.7 메서드 핸들 11.8 마치며 CHAPTER 12 동시 성능 기법 12.1 병렬성이란? 12.2 JMM의 이해 12.3 동시성 라이브러리 구축 12.4 동시 라이브러리 정리 12.5 실행자와 태스크 추상화 12.6 최신 자바 동시성 12.7 마치며 CHAPTER 13 프로파일링 13.1 프로파일링 개요 13.2 샘플링과 세이프포인팅 편향 13.3 개발자용 프로파일링 툴 13.4 최신 프로파일러 13.5 할당 프로파일링 13.6 힙 덤프 분석 13.7 마치며 CHAPTER 14 고성능 로깅 및 메시징 14.1 로깅 14.2 성능에 영향이 적은 로거 설계하기 14.3 리얼 로직 라이브러리를 이용해 지연 줄이기 14.4 마치며 CHAPTER 15 자바 9와 미래 15.1 자바 9에서 소소하게 개선된 성능 15.2 자바 10과 그 이후 버전 15.3 자바 9 Unsafe 그 너머 15.4 발할라 프로젝트와 값 타입 15.5 그랄과 트러플 15.6 바이트코드의 향후 발전 방향 15.7 동시성의 향후 발전 방향 15.8 마치며 |
Java에 대한 고급주제를 다루고 있고 성능+최적화와 관련된 다양한 주제를 다룬다.
1장에서는 기본적인 성능 지표에 대해 살펴보고 2장은 JVM에 대한 이야기를 휘리릭 다룬다. 주로 이론적인 배경에 대한 소개인데 처음 접하는 내용이 많아 유익했다. (9-10장에서 JVM에서의 바이트코드 실행, JIT 컴파일에 대해 더 자세히 다룬다.)
3장에서는 하드웨어와 운영체제에서 얼마나 성능을 위해 노력해왔는지 그 변화와 흐름에 대해, 4-5장에서는 성능테스트 패턴+안티패턴과 성능측정에 대해 설명한다.
이후로는 GC(가비지 수집), 로깅, collection API성능, 멀티스레딩, 자바9 등등 정말 다양하고 넓은 주제들이 나온다. (그만큼 책이 두껍다.. ㅎㅎ)
자바 개발자(기본)에서 한 걸음 더 나아가기에 도움이 되는 좋은 책이다. 좀 더 시야가 넓어진 기분이 들었다.
자바로 웹 어플리케이션을 구현할 때 모든 프로그래밍 작업이 끝난 후 항상 프로그램 리팩토링 과정과 디버깅 하면서 사용된 코드들, 레거시 코드들을 정리하고 최종적으로 검수후에 서비스를 합니다. 하지만 “최적화”라는 것을 염두에 두지 않고 잘 작동되면 된다는 생각을 하면 작업을 해왔습니다. “최적화”라는 것을 하여 프로그램의 성능을 향상시키기엔 실력도 부족하고 개념도 많이 부족했습니다. 섣불리 최적화에 나섰다가 코드를 더 망치는 게 아닌가라는 생각도 하였습니다.
시중에 자바 개념서들을 많이 나와있지만 자바 최적화에 대해 잘 모르는 개발자들이 볼 수 있는 서적은 쉽게 찾아보지 못한 것 같습니다. 그러던 중 한빛미디어에서 출판한 자바 성능 최적화라는 번역서로 된 책이 있기에 읽어보고 그 느낌을 얘기해보고자 합니다.
이 책은 전 세계에서 내노라 하는 자바 개발자들이 직접 펴내었고 이중에는 자바 챔피언도 있다고 합니다. 13여 년동안 자바/스칼라 개발자, 애플리케이션 아키텍트로 활동하며 엔터프라이즈 프로젝트 현장을 누벼온 정보 기술자께서 옮긴 번역서 입니다. 2014년 이후로 십 수 권의 IT 전문서를 번역하였다고 하니 믿을 수 있겠습니다.
그럼 간단히 책 전반에 대해서 살펴보겠습니다.
Chapter1. 성능과 최적화
- 자바 성능이란 무엇인지에 대해 살펴봅니다. 경험과 과학, 측정에 관한 기본적인 토픽들을 살펴보고 성능 활동을 멋지게 수행하는데 꼭 필요한 기본 용어들과 측정값을 설명하였습니다.
Chapter2. JVM 이야기
- 2 장에서는 JVM 내부의 전체 모습을 빠르게 흝어봅니다. 중요한 내용들이 많았습니다. JVM을 이해하기 위해서는 운영체제와 하드웨어의 작동 세부에 대해서도 알아야 된다고 합니다. 다음장에서 그 내용들이 살펴봅니다.
Chapter3. 하드웨어와 운영체제
- 지난 20년간 프로세서 설계 및 최신 하드웨어는 놀라울 정도로 변화했습니다. 무어의 법칙이 사그라들며 사람들의 관심은 다시 소프트웨어의 상대적 성능으로 향했습니다. 성능을 중시하는 엔지니어는 적어도 최신 하드웨어와 OS의 기본 지식을 갖추어야 하드웨어와 씨름하지 않고 적절히 잘 활용할 수 있습니다.
Chpater4. 성능 테스트 패턴 및 안티패턴
- 성능테스트는 여러 가지 이유로 수행합니다. 이번 장에서는 다양한 종류의 테스트를 소개하고 유형별 베스트 프랙티스를 안내합니다.
Chapter5. 마이크로 벤치마킹과 통계
- 이 장에서는 자바 성능 수치를 직접 측정하는 내용을 자세히 살펴봅니다. JVM은 워낙 자유분방한 특성탓에 성능 수치를 다루기가 의외로 만만치 않습니다. 특히, 작은 자바 코드 한 조각의 성능을 정확히 측정(마이크로벤치마킹)하기란 매우 미묘하고 어려운 일입니다. 마이크로 벤치마킹이랑 무엇인지, 그리고 올바른 사용법은 무엇인지 알아보겠습니다.
Chapter6. 가비지 수집 기초
- 가비지 수집은 자바가 탄생한 이래, 자바 커뮤니티에서 아주 활발하게 논의된 주제입니다. 이장에서는 성능 엔지니어가 JVM의 GC 서브시스템을 효과적으로 다루기 위해 꼭 알아야 핵심 개념에 대해서 알아봅니다.
Chapter7. 가비지 수집 고급
- 7장에서는 앞선 배운 자바 가비지 수집의 이론에 더해 한 걸음 더 나아가 현재 자바의 가비지 수집 이론에 대해 알아봅니다.
Chapter8. GC 로깅, 모니터링, 튜닝, 툴
- 8장에서는 GC로깅 및 모니터링이라는 광범위한 주제를 다룹니다. 자바 성능 튜닝에서 가장 중요하고 가시적이면서도, 가장 오해를 많이 사는 부분입니다.
Chapter9. JVM의 코드 실행
- JVM의 원조 코드 실행 환경은 바이트코드 인터프리터 입니다. JVM이 코드를 어떻게 실행하는지 이해하는데 꼭 필요한 바이트코드와 인터프리터에 관한 기본적인 내용을 배웁니다.
Chapter10. JIT컴파일의 세계로
- 이번장에서 다룰 주제가 다소 추상적이고 기술적으로 복잡하기 때문에 이해 하기 쉽게 툴을 이용해 JVM의 내부 작동원리를 시각화하고 구체적인 JIT최적화 알고리즘과 각각의 특성을 살펴보고 이런 기법들이 어떤 작용을 하는지 JITWatch로 관찰해봅니다.
Chapater11. 자바 언어의 성능 향상 기법
- 표준 자바 컬렉션 API의 성능에 관한 내용을 소개하며, 도메인 객체를 다루는 핵심점인 내용에 대해서 다룹니다. 플랫폼 수준에 더 깊숙이 연관된 애플리케이션 성능 요소 두가지, 종료화와 메스드 핸들에 대해 살펴봅니다.
Chapter12. 동시 성능 기법
- 최신 하드웨어를 오롯이 활용하려면 자바 개발자는 최소한 동시성이란 무엇인지, 그것이 애플리케이션 성능에 끼치는 영향은 무엇인지 최소한의 배경지식은 갖고 있어야 합니다. 이 장에서는 기본적인 내용에 대해서만 알아봅니다.
Chapter13. 프로파일링
- 프로파일링은 많은 개발자가 잘 모르는 주제입니다. 실행/메모리 프로파일링 모두 필요하지만 성능 엔지니어는 프로파일링이 뭘하는 작업인지, 그리고 그 일을 왜 해야하는지 숙지해야 합니다. 그냥 별생각 없이 툴을 쓰다간 공연히 분석 시간만 낭비하고 부정확한/상관없는 결과만 얻는 경우가 많습니다.
Chapter14. 고성능 로깅 및 메시징
- 이 장에서는 가장 저수준부터 시작해서 전체 메시징 구현까지, 몇가지 간단한 저지연 라이브러리를 예로 듭니다. 저지연 시스템에서는 가장 저수준의 큐부터 고수준의 소프트웨어 스택에 이르기까지 그 목표와 원리가 일관되게 적용되야 합니다.
Chapter16. 자바 9와 미래
- 이 장의 성능 엔지니어가 자바 9 플랫폼에 대해서 꼭 알고 있어야 하는 신규/변경 사항을 살펴봅니다.
마치며
이 책은 복잡한 기술 스택을 다루는 중/고급 자바 개발자에게 정량적이고 검증 가능한 접근 방식으로 자바 애플리케이션 성능을 튜닝하는 방법을 알려줍니다. 초보 개발자보다는 어느정도 자바 성능에 최적화 두고 개발해야 하는 개발자에게 좋은 지침서가 되리라고 생각됩니다. 책의 내용이 사실 좀 어렵습니다!
성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고급 자바 개발자에게 정량적이고 검증 가능한 접근 방식으로 자바 애플리케이션 성능을 튜닝하는 방법을 알려준다. 성능 튜닝은 원하는 결과를 정의하고 결정하는 과정이다. 자바 성능에 관한 대부분 자료는 자바 가상 머신 이론과 내부의 모습을 살펴보는 데 그치지만, 이 책은 레시피, 팁/트릭, 알고리즘 등 다양한 부문을 살펴보며 성능 튜닝의 실용적 측면을
www.hanbit.co.kr
실무에서 개발언어로 자바를 사용하고 있다.
자바를 사용하면서 최적화에 대한 고민을 크게 하지 않는 것이 사실이다.
그렇지만 항상 꾸준히 관심은 가지고 있었다.
대부분 프로젝트를 하면서 어느정도 개발이 된 상태에서 성능 테스트를 하면서 어떤 문제가 발생했을 때 그에 대한 대처로 자바에 대한 메모리 옵션 등을 고민하게 된다.
그 동안 수 많은 언어가 나왔지만 자바가 탄생한지도 시간이 다소 흘렀음에도 아직도 많은 개발자들이 사용하는 것을 보면 그 동안 자바 스스로도 많은 발전을 했을 것이라고 짐작은 했었다.
이 책은 보면 그 동안 자바가 얼마나 많은 발전을 했는지 살펴 볼 수 있게 된다. 책의 첫 부분에 많은 발전으로 인해서 단순하게 생각할 구 없을 만큼 복잡하게 동작하기 때문에 최적화를 위해서는 알아야 할 께 많을 것이라고 써져 있다.
그런 면에서 이 책은 실무에서 적절히 활용할 수 있게 구성이 잘 되어 있는 듯 하다.
성능이나 자바에 대한 좀 더 깊은 관심을 가지고 있는 사람이라면 이 책을 볼 것을 추천 드린다.