Effective Java(이펙티브 자바)
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
이 책은 제네릭, enum, 어노테이션, 자동 객체화, for-each 문, varargs, 병행성 유틸리티 등에 관한 새로운 지침과 객체, 클래스, 라이브러리, 메서드, 직렬화 등의 고전적 주제에 대한 최선의 지침들, 자바의 미묘한 부분에 대한 몰이해에서 오는 문제들을 회피하는 방법, 자바 언어와 그 기본적 라이브러리인 java.lang, java.util, java.util.concurrent, 그리고 java.io에 초점을 맞춘 설명을 담고 있다.
작가정보
저자 조슈아 블로크Joshua Bloch는 1961년 생으로, 카네기멜론대학에서 컴퓨터 과학 전공으로 박사 학위를 취득했으며, Sun에서 자바 플랫폼 가운데 많은 부분의 설계를 주도한 저명한 소프트웨어 엔지니어다. JDK 5.0의 새로운 기능들과 컬렉션(Collection) 프레임워크, java.math 패키지, assert 메커니즘 등이 그의 손을 거쳤다. Google에서는 안드로이드를 비롯한 자바 프레임워크 설계에 참여했으며, Dart 팀에서도 활동했다. 졸트(Jolt) 상에 빛나는 『Effective Java』 이외에도 『Java Puzzlers』(Addison-Wesley, 2005), 『Java Concurrency in Practice』 (Addison-Wesley, 2006) 등의 유명한 자바 기술서에 공저자로 참여했으며, 2004년에는 《Java Developer’s Journal》의 “Top 40 Software People in the World” 가운데 한 명으로 선정되기도 했다.
번역 이병준
역자 이병준은 1972년 생으로, 1998년 서울대학교에서 컴퓨터공학 석사 학위를, 2011년에는 충남대학교에서 컴퓨터공학 박사 학위를 취득했다. 2001년부터 한국전자통신연구원에서 선임연구원으로 네트워크 프로토콜 개발, 네트워크 제어 및 관리 시스템 개발에 종사해 왔다. 『불확실성과 화해하는 프로젝트 추정과 계획』『코딩 인터뷰 완전 분석』『CSS3 : 세상에 없던 가장 꼼꼼한 매뉴얼』 등 10권의 번역서를 냈으며, 최근에는 SDN(Software-Defined Networking) 기술을 연구 개발하는 데 전념하고 있다. 소프트웨어 개발에 관한 블로그 www.buggymind.com을 운영하고 있으며, Floodlight, Loxigen, OpenIRIS, OVSDB 등의 오픈 소스 활동에도 참여하고 있다.
목차
- 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 직렬화된 객체 대신 직렬화 프락시를 고려해 보라
부록 초판과의 규칙 대조표
참고자료
찾아보기
출판사 서평
자바 언어를 더 깊게 이해하고 싶다면? 더 깔끔하고 정확하고 안전하며 재사용이 쉬운 코드를 만들고 싶다면? 바로 이 책 『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 자문 전문가
기본정보
ISBN | 9788966261161 |
---|---|
발행(출시)일자 | 2014년 08월 22일 |
쪽수 | 484쪽 |
크기 |
172 * 225
* 30
mm
/ 801 g
|
총권수 | 1권 |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립