자바 성능 튜닝
: 자바 성능 향상을 위한 완벽 가이드
저자 스캇 오크스
역자 최가인
출판사 비제이퍼블릭
출간일 2016년 3월 29일 (화)
정가 34,000원
페이지 584
판형 173 * 230
ISBN 979-11-86697-13-9(93000)
원서정보 Java Performance: The Definitive Guide
책 소개
자바 성능 튜닝을 위한 완벽 가이드
코딩과 테스트는 흔히 별도의 전문 분야로 여겨진다. 저자이자 자바 전문가인 스캇 오크스는 JVM에서 코드가 동작하는 방법뿐만 아니라 튜닝을 통해 성능이 개선되는 방법도 함께, 자바로 작업하는 이라면 누구나 이해할 수 있게끔 이 책에서 설명한다.
언어와 API를 포괄한 자바 가상 머신(JVM)과 자바 플랫폼을 이용해서 자바 애플리케이션의 성능에 대한 깊은 지식을 습득하자. 개발자나 성능 엔지니어 모두, 이 완벽 가이드를 통해 자바 7과 8 애플리케이션이 동작하는 방법을 개선하기 위한 다양한 특징과 도구와 절차를 배울 수 있다.
- 성능 테스트를 통해 최적의 결과를 얻기 위한 네 가지 원칙을 적용한다.
- 자바 애플리케이션이 동작하고 있는 방식에서 데이터를 수집하기 위해 JDK 도구를 사용한다.
- JIT 컴파일러 사용에 따른 장점과 단점을 이해한다.
- 프로그램에 최소한 적게 영향을 주도록 JVM 가비지 컬렉터를 조정한다.
- 힙 메모리와 JVM 네이티브 메모리를 관리하는 기술을 사용한다.
- 자바 스레드와 동기화 성능 기능을 최대한 활용한다.
- 자바 EE와 자바 SE에서의 성능 이슈를 다룬다.
- 자바 위주의 데이터베이스 애플리케이션 성능을 향상시킨다.
독자대상
초중급
저자 소개
스캇 오크스
오라클(Oracle Corporation)의 아키텍터이며 오라클의 미들웨어 소프트웨어의 성능을 맡고 있다. 오라클에서 일하기 전에는 선 마이크로시스템스(Sun Microsystems)에서 몇 년간 SunOS 커널의 네트워크 프로그래밍과 RPC, 윈도우 시스템과 OPEN LOOK 가상 윈도우 관리자 등 기술 전문가로 일했다. 1996년에는 선에서 자바 에반젤리스트(Java evangelist)가 되었고, 2001년에 그의 주요 관심사가 된 자바 성능 그룹에 들어갔다. 저서로는 『Java Security』, 『Java Threads』, 『JXTA in a Nutshell』, 『Jini in a Nutshell』이 있다.
역자 소개
최가인
다양한 글로벌 프로젝트와 SI 프로젝트를 거쳐 지금은 네이버에 둥지를 틀고 소소하게 개발과 번역을 하며 지내고 있다. 개발도 재미있지만 프로젝트뿐만 아니라 대부분의 업무가 이해 관계자들과의 협업을 통해 이뤄지므로 즐겁고 효과적일 수 있도록 도와주는 요소들에 관심이 많다. 주로 프로젝트 산출물 및 제안서를 번역하면서 번역 삼매경에 빠졌다. 역서로는 『플랫폼 비즈니스의 최전선』, 『시스템 설계의 수수께끼를 풀다』, 『애자일 UX 디자인』이 있다.
목차
1장. 서문
- 개요
- 플랫폼과 규약
- 완벽한 성능 이야기
- 요약
2장. 성능 테스트 접근법
- 실제 애플리케이션을 테스트하자
- 처리율 및 배치와 응답 시간 이해하기
- 변동성 이해하기
- 빠르게 자주 테스트하자
- 요약
3장. 자바 성능 도구 상자
- 운영체제 도구와 분석
- 자바 모니터링 도구
- 프로파일링 도구
- 자바 미션 컨트롤
- 요약
4장. JIT 컴파일러로 작업하기
- 저스트 인 타임 컴파일러: 개요
- 기본 튜닝: 서버나 클라이언트(또는 둘 다)
- 자바와 JIT 컴파일러 버전
- 컴파일러를 위한 중급 튜닝
- 고급 컴파일러 튜닝
- 역최적화
- 티어드 컴파일 레벨
- 요약
5장. 가비지 컬렉션 입문
- 가비지 컬렉션 개요
- 기본 GC 튜닝
- GC 도구
- 요약
6장. 가비지 컬렉션 알고리즘
- 처리율 컬렉터 이해하기
- CMS 컬렉터 이해하기
- G1 컬렉터 이해하기
- 고급 튜닝
- 요약
7장. 힙 메모리 베스트 프랙티스
- 힙 분석
- 메모리 적게 사용하기
- 객체 생명 주기 관리
- 요약
8장. 네이티브 메모리 베스트 프랙티스
- 차지 공간
- 운영체제를 위한 JVM 튜닝
- 요약
9장. 스레딩과 동기화 성능
- 스레드 풀과 ThreadPoolExecutors
- ForkJoinPool
- 스레드 동기화
- JVM 스레드 튜닝
- 스레드와 락 모니터링하기
- 요약
10장. 자바 엔터프라이즈 에디션 성능
- 기본 웹 컨테이너 성능
- 스레드 풀
- 엔터프라이즈 자바 세션 빈
- XML과 SJON 처리
- 객체 직렬화
- 자바 EE 네트워킹 API
- 요약
11장. 데이터베이스 성능 베스트 프랙티스
- JDBC
- JPA
- 요약
12장. 자바 SE API 팁
- 버퍼에 의한 입출력
- 클래스로딩
- 난수
- 자바 네이티브 인터페이스
- 예외 처리
- 문자열 성능
- 로깅
- 자바 컬렉션 API
- AggressiveOpts
- 람다와 익명 클래스
- 스트림과 필터 성능
- 요약
부록 A. 튜닝 플래그 요약
출판사 리뷰
이 책은 여러 상황에 대한 경험과 직관을 갖도록 해주는 것보다는 시간이 흐르면서 훌륭한 자바 성능 엔지니어에게 필요한 기술을 개발하는 데 도움될 지식을 주는 것을 목표로 한다. 즉 독자가 자바 플랫폼의 성능 측면에서 철저하고 상세하게 이해할 수 있도록 도움을 주고자 한다.
이 지식은 두 개의 큰 카테고리로 나뉜다. 첫 번째는 자바 가상 머신(JVM) 자체의 성능이다. JVM 설정 방식은 프로그램의 성능상 많은 측면에 영향을 준다. 사실 C++ 프로그래머가 컴파일하는 동안 컴파일러의 플래그를 찾아서 테스트하고, PHP 개발자가 php.ini 파일에 적절한 변수를 설정하는 등의 작업과 JVM을 튜닝하는 일은 거의 유사할 수 있으나, 다른 언어로 개발한 경험이 있는 개발자는 다소 귀찮다고 생각한 튜닝의 필요성을 느낄지도 모른다.
두 번째는 자바 플랫폼의 특성이 성능에 어떻게 영향을 미치는지 이해하는 것이다. 워드 플랫폼의 용도를 보자. 일부 특성(예 스레드와 동기화)은 언어 영역이고, 일부 특성(예 XML 파싱 성능)은 스탠다드 자바 API 영역이다. 자바 언어와 자바 API에는 중요한 차이점이 있음에도 이들은 유사하게 여겨질 것이다. 이 책은 플랫폼의 양쪽 측면을 모두 다룬다.
JVM의 성능은 튜닝 플래그에 의해 크게 좌우되는 반면 플랫폼의 성능은 애플리케이션 코드 내에 최적의 사례들을 적용하는 데 더욱 영향을 받는다. 개발자가 코드를 짜고 성능 담당자들이 테스트를 하는 환경에서 이 업무는 별개의 전문 영역으로 간주되곤 한다. 성능 엔지니어들만이 최후의 성능까지 짜내도록 JVM을 튜닝할 수 있으며, 개발자들만이 코드가 잘 작성됐는지 걱정한다. 이렇게 구분하는 게 좋은 건 아니다. 자바로 작업하는 사람이라면 누구나 똑같이 코드가 JVM 내에서 동작하는 방식과 성능에 도움이 되는 튜닝의 종류에 관해 능숙하게 이해해야만 한다. 영역에서의 완전한 지식이야말로 여러분의 작업에 예술적인 멋을 부여할 것이다.
누가 이 책을 읽어야 하는가
이 책은 JVM의 다양한 측면과 자바 API가 성능에 영향을 주는 방식을 이해하고자 하는 성능 엔지니어와 개발자를 대상으로 구성됐다.
저자의 목표는 초보 엔지니어가 자바 애플리케이션의 성능 원칙을 이해할 수 있을 정도의 충분한 정보와 기본적인 튜닝을 하는 방법을 제공하는 것이다. 하지만 시스템 분석이란 매우 광범위한 분야다. 시스템 분석을 위한 훌륭한 자원(그리고 물론 자바에 적용할 원칙)은 많으며, 그런 관점에서 관련 정보를 찾는 이들에게 이 책이 유용한 동반자가 되길 바란다.
이 책에서는 컴파일러와 가비지 컬렉터 등을 위한 튜닝 플래그들과 API의 베스트 프랙티스 이용에 대해 다룬다. 따라서 이 책을 읽는 독자들은 자바로 프로그램을 작성하는 방법에 대해 충분히 이해하고 있다고 가정한다. 독자들의 주요 관심사가 자바의 프로그래밍 관점이 아니라고 해도 데이터 관련 사항을 많이 제공하기 위해 예제로 사용된 샘플을 포함해서 프로그램들을 다루는 데 꽤 시간을 들였다. 그러므로 독자들의 주요 관심이 JVM 성능 그 자체에 있거나 (코딩을 통해서가 아니라) JVM의 동작을 변경하는 방법에 있더라도 이 책의 내용이 도움이 될 것이다. 코딩 파트는 거리낌 없이 넘어가고 각자가 흥미를 갖는 내용에 집중하자. 그렇게 따라가다 보면 자바 애플리케이션이 JVM 성능에 영향을 줄 수 있는 방식에 관해 통찰력을 얻고, 개발자에게 변화를 제시하기 시작하여 여러분의 성능 테스트에서의 삶이 더 수월하도록 만들어줄 것이다.
마스터링 Microsoft Azure IaaS (0) | 2016.04.14 |
---|---|
클로저 프로그래밍의 즐거움, 2판 (0) | 2016.02.24 |
저전력 블루투스 (6) | 2016.02.02 |
댓글 영역