서브메뉴

본문

Effective Java (이펙티브 자바,최신 자바 7 8에 대한 주석 수록)
Effective Java (이펙티브 자바,최신 자바 7 8에 대한 주석 수록)
저자 : 조슈아 블로크
출판사 : 인사이트
출판년 : 2014
ISBN : 9788966261161

책소개

Java, 더 깔끔하고, 정확하고, 안전하며, 재사용이 쉬운 코드로 만들자!

『Effective Java(이펙티브 자바)』는 효율적이면서도 잘 설계된 자바 프로그램을 구현하기 위해 알아야 할 지침 78가지를 소개한 책이다. Java SE 5, Java SE 6에 새롭게 도입된 기능들을 반영하고, 새로운 기능들을 최대한 활용할 수 있는 방법들을 제시하고 있다. 또한, 최신 자바 7, 8에 대한 주석을 수록했다.

이 책은 제네릭, enum, 어노테이션, 자동 객체화, for-each 문, varargs, 병행성 유틸리티 등에 관한 새로운 지침과 객체, 클래스, 라이브러리, 메서드, 직렬화 등의 고전적 주제에 대한 최선의 지침들, 자바의 미묘한 부분에 대한 몰이해에서 오는 문제들을 회피하는 방법, 자바 언어와 그 기본적 라이브러리인 java.lang, java.util, java.util.concurrent, 그리고 java.io에 초점을 맞춘 설명을 담고 있다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

자바 언어를 더 깊게 이해하고 싶다면? 더 깔끔하고 정확하고 안전하며 재사용이 쉬운 코드를 만들고 싶다면? 바로 이 책 『Effective Java 2판』이 답이다. 여기 실린 78가지 지침들은 프로그래머가 매일 마주하는 도전들을 해결하기 위해 반드시 따라야 할, 최고의 실질적 해결책이다.
『Effective Java 2판』은 졸트(Jolt) 상을 수상하며 고전의 반열에 오른 초판을 전면적으로 개정한 것으로, Java SE 5와 Java SE 6에 새롭게 도입된 기능들을 반영하였다. 저자는 새로운 디자인 패턴과 숙어들을 탐구하면서 제네릭, enum, 어노테이션, 자동 객체화 등의 새로운 기능들을 최대한 활용할 방법을 제시한다.
이 책의 각 장은 짤막한 독립 에세이 형식으로 기술된 “규칙” 들의 묶음이다. 각각의 에세이에는 자바 플랫폼을 다룰 때 알아야 할 미묘한 사항들에 대한 통찰과 조언이, 그리고 놀라운 예제들이 담겨 있다. 그 포괄적 설명을 통해, 무엇을 하고 무엇을 하지 말아야 할지, 그리고 그 이유는 무엇인지 알 수 있을 것이다.
주된 특징은 다음과 같다.
● 제네릭, enum, 어노테이션, 자동 객체화, for-each 문, varargs, 병행성 유틸리티 등에 관한 새로운 지침들
● 객체, 클래스, 라이브러리, 메서드, 직렬화 등의 고전적 주제에 대한 최선의 지침들
● 자바의 미묘한 부분에 대한 몰이해에서 오는 문제들을 회피하는 방법
● 자바 언어와 그 기본적 라이브러리인 java.lang, java.util, java.util.concurrent, 그리고 java.io에 초점을 맞춘 설명
● 옮긴이 주석으로 최신 자바 7, 8에 대한 보충 설명 수록

간단히 말해서 이 책은, 효율적이면서도 잘 설계된 자바 프로그램을 구현하기 위해 알아야 할 가장 실질적이면서도 권위 있는 지침서다.

[추천의 글]

Effective Java에 쏟아진 찬사
“이 책을 십 년 전에 알았더라면 분명 좋았을 것이다. 나라면 자바 책은 필요로 하지 않을 거라고 생각하는 이들도 있겠지만, 이 책만큼은 다르다.”
- 제임스 고슬링(James Gosling), Liquid Robotics의 최고 소프트웨어 아키텍트이자 자바 언어의 창시자.

“자바 언어와 객체지향 언어를 어떻게 사용하는 것이 좋은지 알려주는 훌륭한 조언들로 가득한 최고의 책.”
- 기라드 브라차(Gilad Bracha), Google Dart 팀 소프트웨어 엔지니어이자 Newspeak 프로그래밍 언어의 창시자이며 『The Java Language Specification, 3/E』(Addision-Wesley, 2005)의 공저자.

“10점 만점에 10점 ? 다른 사람들이 읽고 관리하기에 훌륭한 자바 코드를 만들고 싶은 사람이라면 반드시 이 책을 가지고 있어야 한다. JDK 라이브러리가 진화하더라도 빛바래지 않을 정보가 담겨 있는 드문 책 가운데 하나다.”
- 피터 트란(Peter Tran), Pros Revenue Management 사의 선임 소프트웨어 엔지니어.

“현존하는 최고의 자바 서적. 술술 읽힐 뿐 아니라 아주 유용하다. 말로는 칭찬을 다 할 수 없을 정도다. JavaOne 2001 컨퍼런스에서 제임스 고슬링은 말했다. ‘얼른 가서 구매하세요!’ 그 충고를 따랐던 것이 기쁘다. 그의 생각에 100% 동의한다.”
- 키이스 에드워즈(Keith Edwards), Georgia Tech의 Interactive Computing 분야 교수이며, 『Core JINI』(Prentice Hall, 2000)의 저자

“개선된 자바 플랫폼 API(Collections API 포함) 일부를 설계한 바로 그 사람이 내놓은, 진정 훌륭한 책.”
- 제임스 클라크(James Clark), XML 표준화 그룹의 수석 기술원으로 활동했으며, 현재는 태국으로 이주하여 태국 오픈 소스 소프트웨어 센터(Thai Open Source Software Center)라는 회사를 운영하고 있다. 태국 소프트웨어 산업 진흥 협회에서도 일하고 있으며, groff를 비롯한 많은 오픈 소스 소프트웨어 개발에 참여했다.

“내가 따져본 바에 따르면, 매년 출간되는 좋은 프로그래밍 서적의 수는 한 권 이하이고, 몇 년 간 한 권도 나오지 않을 때도 있다. 커누스(Knuth) 교수의 삼부작(trilogy), K&R의 ‘White Book’, 커니건(Kernighan)과 플로저(Plauger)의 『Software Tools』 같은 책을 말하는 것이다. 이 책은 그 반열에 드는 책이다. 구입하라.”
- 앤드류 빈스톡(Andrew Binstock), Dr. Dobb’s Journal의 수석 편집장

“나는 제목은 거창하지 않으나 내용은 과할 정도로 풍성한 책을 좋아한다. 이 책에는 세심하게 선택된 57가지 프로그래밍 규칙이 실려 있다. 각각의 규칙은 자바 언어의 본질을 명료하고도 깊이 있게 드러내고 있으며, 직관에만 의존하는 프로그래밍의 한계, 그러니까 언어가 제공하는 기능을 완전하게 이해하지 못한 상태에서 눈에 보이는 길만 따라가는 프로그래밍의 한계를 단순하고도 실제적인 용어들로 설명하고 있다.”
- 마이클 어네스트(Michael Ernest), Cloudera 사의 선임 솔루션 자문

“자바 설계자에게는 이 책의 모든 부분이 중요하다. 제품을 납품하기 전에 이 책을 읽으면, 그 비용을 천 배로 보상받게 될 것이다.”
- 리처드 마테오션(Richard Mateosian), IEEE Micro, July/August 2002(vol. 22, no. 4)

“이 책을 구입한 것은 2주 전인데, 삼 개월 공부했을 때보다 더 많은 것을 사흘 만에 배우게 되었다. 놀라운 책이며, 내 자바 서재에 추가할 수 있어서 기쁘다.”
- 제인 그리스티(Jane Griscti), IT 자문 전문가
[교보문고에서 제공한 정보입니다.]

목차정보

1장 서론

2장 객체의 생성과 삭제

규칙 1 생성자 대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라
규칙 2 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라.
규칙 3 private 생성자나 enum 자료형은 싱글턴 패턴을 따르도록 설계하라
규칙 4 객체 생성을 막을 때는 private 생성자를 사용하라
규칙 5 불필요한 객체는 만들지 말라
규칙 6 유효기간이 지난 객체 참조는 폐기하라
규칙 7 종료자 사용을 피하라

3장 모든 객체의 공통 메서드

규칙 8 equals를 재정의할 때는 일반 규약을 따르라
규칙 9 equals를 재정의할 때는 반드시 hashCode도 재정의하라
규칙 10 toString은 항상 재정의하라
규칙 11 clone을 재정의할 때는 신중하라
규칙 12 Comparable 구현을 고려하라

4장 클래스와 인터페이스 91

규칙 13 클래스와 멤버의 접근 권한은 최소화하라
규칙 14 public 클래스 안에는 public 필드를 두지 말고 접근자 메서드를 사용하라
규칙 15 변경 가능성을 최소화하라
규칙 16 계승하는 대신 구성하라
규칙 17 계승을 위한 설계와 문서를 갖추거나, 그럴 수 없다면 계승을 금지하라
규칙 18 추상 클래스 대신 인터페이스를 사용하라
규칙 19 인터페이스는 자료형을 정의할 때만 사용하라
규칙 20 태그 달린 클래스 대신 클래스 계층을 활용하라
규칙 21 전략을 표현하고 싶을 때는 함수 객체를 사용하라
규칙 22 멤버 클래스는 가능하면 static으로 선언하라

5장 제네릭

규칙 23 새 코드에는 무인자 제네릭 자료형을 사용하지 마라
규칙 24 무점검 경고(unchecked warning)를 제거하라
규칙 25 배열 대신 리스트를 써라
규칙 26 가능하면 제네릭 자료형으로 만들 것
규칙 27 가능하면 제네릭 메서드로 만들 것
규칙 28 한정적 와일드카드를 써서 API 유연성을 높여라
규칙 29 형 안전 다형성 컨테이너를 쓰면 어떨지 따져보라

6장 열거형(enum)과 어노테이션

규칙 30 int 상수 대신 enum을 사용하라
규칙 31 ordinal 대신 객체 필드를 사용하라
규칙 32 비트 필드(bit field) 대신 EnumSet을 사용하라
규칙 33 ordinal을 배열 첨자로 사용하는 대신 EnumMap을 이용하라
규칙 34 확장 가능한 enum을 만들어야 한다면 인터페이스를 이용하라
규칙 35 작명 패턴 대신 어노테이션을 사용하라
규칙 36 Override 어노테이션은 일관되게 사용하라
규칙 37 자료형을 정의할 때 표식 인터페이스를 사용하라

7장 메서드

규칙 38 인자의 유효성을 검사하라
규칙 39 필요하다면 방어적 복사본을 만들라
규칙 40 메서드 시그너처는 신중하게 설계하라
규칙 41 오버로딩할 때는 주의하라
규칙 42 varargs는 신중히 사용하라
규칙 43 null 대신 빈 배열이나 컬렉션을 반환하라
규칙 44 모든 API 요소에 문서화 주석을 달라

8장 일반적인 프로그래밍 원칙들

규칙 45 지역 변수의 유효범위를 최소화하라
규칙 46 for 문보다는 for-each 문을 사용하라
규칙 47 어떤 라이브러리가 있는지 파악하고, 적절히 활용하라
규칙 48 정확한 답이 필요하다면 float와 double은 피하라
규칙 49 객체화된 기본 자료형 대신 기본 자료형을 이용하라
규칙 50 다른 자료형이 적절하다면 문자열 사용은 피하라
규칙 51 문자열 연결 시 성능에 주의하라
규칙 52 객체를 참조할 때는 그 인터페이스를 사용하라
규칙 53 리플렉션 대신 인터페이스를 이용하라
규칙 54 네이티브 메서드는 신중하게 사용하라
규칙 55 신중하게 최적화하라
규칙 56 일반적으로 통용되는 작명 관습을 따르라

9장 예외 327

규칙 57 예외는 예외적 상황에만 사용하라
규칙 58 복구 가능 상태에는 점검지정 예외를 사용하고, 프로그래밍 오류에는 실행시점 예외를 이용하라
규칙 59 불필요한 점검지정 예외 사용은 피하라
규칙 60 표준 예외를 사용하라
규칙 61 추상화 수준에 맞는 예외를 던져라
규칙 62 메서드에서 던져지는 모든 예외에 대해 문서를 남겨라
규칙 63 어떤 오류인지를 드러내는 정보를 상세한 메시지에 담으라
규칙 64 실패 원자성 달성을 위해 노력하라
규칙 65 예외를 무시하지 마라

10장 병행성

규칙 66 변경 가능 공유 데이터에 대한 접근은 동기화하라
규칙 67 과도한 동기화는 피하라
규칙 68 스레드보다는 실행자와 태스크를 이용하라
규칙 69 wait나 notify 대신 병행성 유틸리티를 이용하라
규칙 70 스레드 안전성에 대해 문서로 남겨라
규칙 71 초기화 지연은 신중하게 하라
규칙 72 스레드 스케줄러에 의존하지 마라
규칙 73 스레드 그룹은 피하라

11장 직렬화

규칙 74 Serializable 인터페이스를 구현할 때는 신중하라
규칙 75 사용자 지정 직렬화 형식을 사용하면 좋을지 따져 보라
규칙 76 readObject 메서드는 방어적으로 구현하라
규칙 77 개체 통제가 필요하다면 readResolve 대신 enum 자료형을 이용하라
규칙 78 직렬화된 객체 대신 직렬화 프락시를 고려해 보라

부록 초판과의 규칙 대조표
참고자료
찾아보기
[교보문고에서 제공한 정보입니다.]