logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

쓰디쓴 자바

쓰디쓴 자바

(자바 안티패턴 이야기들)

브루스 테이트 (지은이), 최현덕 (옮긴이)
인포북
20,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 로딩중
yes24 로딩중
교보문고 로딩중
11st 로딩중
영풍문고 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

쓰디쓴 자바
eBook 미리보기

책 정보

· 제목 : 쓰디쓴 자바 (자바 안티패턴 이야기들)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 자바
· ISBN : 9788980545001
· 쪽수 : 393쪽
· 출판일 : 2003-01-20

책 소개

대부분 실패로 끝나는 소프트웨어 프로젝트에서 교훈을 얻어 좀 더 성공적으로 프로젝트를 진행할 수 있도록 돕는데 목적이 있다. 자바로 프로그래밍 도중에 빠질 수 있는 위험한 함정들을 예제 코드들을 통해서 보여준다. 그 다음 해당 예제 코드를 리팩토링한 새로운 코드를 보여주고, 이 새로운 해법이 안전한 이유에 대해서 설명한다.

목차

용어 대역표

Part I 기본 지식

Chapter 1 안티패턴이란 무엇인가?
1.1 자바 프로젝트의 실패
1.1.1 삶 속에서의 안티패턴
1.2 디자인 패턴을 사용함으로써 긍정적 측면을 강조한다
1.2.1 온라인에서 찾을 수 있는 디자인 패턴 소스
1.2.2 UML은 패턴을 위한 언어를 제공한다
1.3 안티패턴-과거의 실수로부터 배운다
1.3.1 잘 알려진 몇 가지 안티패턴들
1.3.2 실제 상황에서의 안티패턴
1.3.3 안티패턴 관련 자료들
1.4 안티패턴 개념은 새로운 것이 아니다
1.4.1 업계로부터 배운다
1.4.2 탐문 작업
1.4.3 안티패턴을 리팩토링하기
1.5 이 책을 읽어야 하는 이유는 무엇인가?
1.5.1 이 책에서 사용하는 접근 방식
1.5.2 이 책에서 사용하는 도구들
1.5.3 이 책의 구성
1.5.4 이 책을 읽어야 하는 사람들
1.6 앞으로

Chapter 2 인터넷 환경에서의 안티패턴들
2.1 안티패턴을 위한 비옥한 토양
2.1.1 계층 모델의 이점
2.1.2 계층화의 단점
2.2 인터넷 기반 기술들
2.2.1 인터넷 구성 방식은 어플리케이션에 영향을 끼칠 수 있다
2.2.2 엔터프라이즈 계층들은 보안성과 함께 오버헤드를 증가시킨다
2.2.3 공개된 표준들은 다양한 계층들을 추가함으로써 인터넷을 가능하게 한다
2.2.4 TCP/IP는 저수준 통신을 제공한다
2.2.5 HTTP는 어플리케이션 수준의 전송을 제공해 준다
2.2.6 HTML과 XML
2.2.7 미니 안티패턴 : 지나치게 많은 웹 페이지 요소
2.3 객체 기술들과 안티패턴
2.3.1 캡슐화는 각각의 모듈을 개별적으로 변경할 수 있도록 해준다
2.3.2 상속은 일반적인 행동 양식들을 정의해서 객체들 사이에 공유시킬 수 있도록 해준다
2.3.3 다형성은 유연한 재사용을 가능하게 한다
2.3.4 미니 안티패턴 : 지나친 계층화
2.3.5 자바를 위한 무대
2.4 자바 기술들은 많은 안티패턴을 해결해 주었다
2.5 폭포수 모델(Waterfall model)의 주된 문제점
2.5.1 나선형 모델(Spiral model)
2.5.2 미니 안티패턴 : 불완전한 프로세스 전이
2.5.3 프로그래밍의 지향점 : XP 프로그래밍(eXtreme Programming)
2.6 이번 장에서 살펴본 내용들
2.7 이 장에서 다룬 안티패턴들

Part II 서버 측 자바 안티패턴

Chapter 3 서블릿과 관련 안티패턴들
3.1 잘못된 길에서 벗어나라
3.1.1 초기 안티패턴 : 매직 푸시버튼(Magic Pushbutton)
3.1.2 MVC 모델을 사용한 구축
3.1.3 모델과 뷰의 분리 실패
3.1.4 모델을 분리하자
3.2 안티패턴 : 매직 서블릿
3.2.1 우리가 서블릿을 모델로서 사용할 수 있을까?
3.2.2 매직 서블릿 함정에 빠져 비틀거리다
3.2.3 매직 서블릿의 원인
3.3 해법 : 커맨드를 사용한 리팩토링
3.3.1 모델을 분리하라
3.3.2 모델을 커맨드 객체를 사용하여 감싸기
3.3.3 모델 로직의 분리
3.3.4 반환 과정의 분리
3.3.5 반환 과정에 JSP를 사용하기
3.4 요약
3.5 이 장에서의 안티패턴

Chapter 4 JSP 관련 안티패턴들
4.1 아직 갈 길이 멀다
4.1.1 위험 신호 인식하기
4.2 안티패턴 : 단조로운(Monolithic) JSP
4.2.1 이 프로그램에는 모델-뷰 분리가 사용되지 않았다
4.2.2 해법 : MVC 디자인 패턴을 사용한 리팩토링
4.3 안티패턴 : 복합적(Compound) JSP
4.3.1 여러 개의 JSP를 하나로 합치는 것이 좋을까?
4.3.2 두 개의 인터페이스를 결합하는 예제
4.3.3 해법 : JSP를 분리한다
4.3.4 컨트롤러 서블릿에서 결정한다
4.4 미니 안티패턴 : 조잡하거나 지나치게 세세한 커맨드
4.4.1 하나의 그룹 내에 지나치게 많은 커맨드가 존재하는 경우
4.4.2 해법 : 적합한 커맨드 단위를 위한 리팩토링
4.4.3 커맨드 단위를 결정하기 위한 팁
4.5 미니 안티패턴 : 비대한 커맨드(Fat Command)
4.6 JSP 안티패턴의 검토
4.7 이 장에서 사용된 안티패턴들

Chapter 5 캐싱 관련 안티패턴들
5.1 캐시가 필요해!
5.2 안티패턴 : 캐시리스 카우(Cacheless Cow)
5.2.1 캐시가 없는 형편없는 게시판 시스템
5.2.2 ShowBoard를 위한 모델-뷰-컨트롤러 구축하기
5.2.3 ShowThread를 위한 MVC 아키텍처 구축
5.2.4 AddPost를 위한 MVC 아키텍처 구축
5.2.5 성능 문제들
5.3 해법 : 캐시의 사용
5.3.1 첫 번째 해법 : 하드웨어 캐시의 사용
5.3.2 두 번째 해법 : 캐시 커맨드
5.3.3 게시판 시스템에 캐시 추가하기
5.3.4 커맨드 캐시를 사용한 개선
5.4 캐시 관련 미니 안티패턴들
5.4.1 정적 캐시로의 동시 접근
5.4.2 끊임없이 자라나는 캐시
5.5 안티패턴 : 동기화된 읽기/쓰기 병목
5.5.1 읽기 작업들이 충돌하는 경우 성능이 감소할 수 있다
5.5.2 읽기/쓰기 락은 정확한 공유 접근을 허가한다
5.6 캐시리스 카우 요리하기
5.7 이 장에서 설명한 안티패턴들

Chapter 6 메모리 관련 안티패턴들
6.1 메모리 누수, 그리고 안티패턴의 이해
6.1.1 메모리 관리하기
6.1.2 가비지 컬렉션의 이해
6.1.3 참조 카운팅(reference counting)
6.1.4 도달 불가 노드
6.2 C++에서 자바로
6.2.1 자바 메모리 누수를 일으키는 환경
6.2.2 자바 메모리 누수 찾기
6.3 안티패턴 : 제거되지 않은 리스너
6.3.1 몇몇 위험한 실제 상황들을 살펴보자
6.3.2 해법 1 : 리스너를 명확하게 제거한다
6.3.3 해법 2 : 루트 저장소의 생존 주기 단축
6.3.4 해법 3 : 약한 참조(weak reference)의 사용
6.3.5 참조 객체들은 메모리 관리를 단순화한다
6.4 안티패턴 : 메모리 누수 컬렉션
6.4.1 캐시와 세션 상태로부터 야기되는 문제점들
6.4.2 해법 1 : 일반적 경고 신호의 검색
6.4.3 해법 2 : 추가와 제거를 적극적으로 짝지운다
6.4.4 해법 3 : 캐시를 위한 유연한 참조(soft reference)의 사용
6.4.5 해법 4 : 약한 참조를 갖는 컬렉션의 사용
6.4.6 해법 5 : finally 블록을 사용하라
6.5 메모리 누수를 사냥하자
6.5.1 메모리 누수가 존재하는지 확인하자
6.5.2 해당 메모리 누수가 고쳐져야 하는지 결정하라
6.5.3 문제를 분리시켜라
6.5.4 원인을 찾아내고 문제를 수정한다
6.5.5 문제점의 재발 방지
6.6 미니 안티패턴 : 작은 두더지들(Little Hogs)
6.6.1 문자열 처리
6.6.2 컬렉션
6.6.3 상속 체인
6.7 요약
6.8 이 장에서 설명한 안티패턴들

Chapter 7 커넥션 관련 안티패턴들
7.1 커넥션 만들기
7.2 안티패턴 : 커넥션 쓰레싱(Connection Thrashing)
7.2.1 매번 데이터베이스에 접속했다가 연결을 끊는 방식
7.2.2 해법 : 풀을 사용한 커넥션의 재사용
7.2.3 게시판 예제를 커넥션 풀링을 사용해 리팩토링해 보자
7.2.4 getPooledConnection 메소드 사용하기
7.2.5 J2EE 커넥션 아키텍처의 사용
7.3 안티패턴 : 스플릿 클리너(Split Cleaners)
7.3.1 예외가 스플릿 클리너를 발생시키기도 한다
7.3.2 해법 : finally 절을 사용하여 커넥션과 마무리 코드를 짝지운다
7.4 안티패턴 : 지나치게 밀접한 시스템간의 커넥션
7.4.1 통신 버퍼
7.4.2 지나치게 이른 바인딩
7.4.3 해법 1 : XML 메시징를 사용한 시스템 분리
7.4.4 해법 2 : 웹 서비스를 사용한 바인딩 늦추기
7.5 미니 안티패턴 : XML 오용
7.5.1 XML의 황금 망치(Golden Hammer)
7.5.2 XML 번역의 잘못된 사용
7.6 미니 안티패턴 : 융통성 없는 XML
7.6.1 이름 충돌(Name Collision)
7.6.2 융통성 없는 구조
7.6.3 제한적인 변수-컨텐츠 컨테이너
7.6.4 XML 버전 붙이기
7.7 요약 : 잘못된 커넥션을 보다 나은 방식으로 바꾸기
7.8 이 장에서 설명한 안티패턴들

Chapter 8 EJB 관련 안티패턴들
8.1 간략한 EJB 리뷰
8.1.1 컴포넌트 기반 분산 아키텍처
8.1.2 EJB의 타입들
8.2 EJB를 사용한 이전 게시판 예제의 리팩토링
8.2.1 EJB 어플리케이션의 구성요소
8.2.2 리모트 인터페이스 구축하기
8.2.3 홈 인터페이스 생성하기
8.2.4 빈 클래스 구현하기
8.2.5 프라이머리 키 정의하기
8.2.6 배포 기술자 생성하기
8.2.7 모델 사용하기
8.3 안티패턴 : 왕복 통신
8.3.1 분산 배포의 비용 계산
8.3.2 수다스런 인터페이스(Chatty interfaces)
8.3.3 해법 : 왕복 통신을 Facade 디자인 패턴을 사용하여 함께 그룹 짓는다
8.3.4 왕복 통신의 근원
8.3.5 Facade를 사용한 게시판 예제 리팩토링
8.4 안티패턴 : 사각형 구멍 안의 동그란 콩
8.4.1 미니 안티패턴 : 빈에 의해 관리되는 조인
8.4.2 해법 : 뷰, 맵퍼, 빈에 의해 관리되는 조인
8.4.3 미니 안티패턴 : 중요하지 않는 부분에 사용되는 엔티티 빈
8.4.4 미니 안티패턴 : 읽기 전용 엔티티
8.4.5 미니 안티패턴 : 쓰기만 하고 읽지 않는 엔티티 빈
8.4.6 스크롤 가능한 리스트의 문제점
8.4.7 전체 해법 : 해당 작업을 위한 올바른 빈을 선택하라
8.5 미니 안티패턴 : 모든 것이 EJB
8.6 EJB 그리고 캐싱
8.6.1 Facade를 사용한 캐시의 구현
8.7 EJB 안티패턴 대체 방법
8.8 이 장에서 설명한 안티패턴들

Part III 좀 더 넓은 시야로 바라본 안티패턴

Chapter 9 건전한 프로그래밍 습관
9.1 건전한 프로그래밍 습관을 배워야 하는 이유
9.1.1 XP를 위해서는 건전한 프로그래밍 습관이 필요하다
9.1.2 안티패턴으로부터 보호하기 위한 코드 작성 표준
9.2 미니 안티패턴 : 가독성이 나쁜 코드
9.2.1 이름의 중요성
9.2.2 이름에 대한 표준
9.2.3 괄호와 들여쓰기
9.2.4 주석
9.2.5 탭과 스페이스
9.2.6 에디터
9.3 미니 패턴 : 구조와 가시성
9.4 미니 안티패턴 : 구조
9.4.1 객체지향의 기본 철학
9.4.2 저수준 설계시 고려할 사항
9.4.3 예외(Exception)
9.5 미니 패턴 : 누수와 성능
9.6 테스팅에 관한 관례들
9.7 좋은 스타일 가이드 만들기
9.7.1 살 것인가? 빌릴 것인가? 아니면 훔칠 것인가?
9.7.2 Contextual, Inc에서 사용한 스타일 가이드의 예
9.8 코드 작성 표준 요약

Chapter 10 시스템 확장성 관련 안티패턴들
10.1 성능에 좋은 토폴로지들
10.1.1 하드웨어를 동일한 그룹으로 계층화하기
10.1.2 그밖의 토폴로지들
10.2 안티패턴 : 성능 고려 부재
10.2.1 성능 계획없이 개발하기
10.2.2 몇 가지 실제 사례들
10.2.3 해결책 : 성능 계획 미리 세우기 !
10.3 안티패턴 : 왕복 통신(Round-tripping)
10.3.1 해결책 : 캐시와 Facade
10.4 안티패턴 : 부적절한 작업량 관리
10.4.1 해결책 : 작업량 관리
10.4.2 제대로 된 로드 밸런싱
10.5 안티패턴 : 혼란스러운 세션 상태 관리
10.5.1 해결책 1 : 세션 연관성에 따라 디스패치하기
10.5.2 해결책 2 : 분산 상태 관리 서비스 이용하기
10.5.3 커스텀 세션 빈을 이용한 해결책
10.5.4 커스텀 엔티티 빈을 이용한 해결책
10.6 안티패턴 : 쓰레시 튜닝(Thrash-tuning)
10.6.1 해결책 : 좋은 성능 향상 방법론 사용하기
10.7 성능 길들이기
10.8 이 장에서 소개한 안티패턴들

Chapter 11 앞으로 해야 할 일들
11.1 안티패턴은 다양한 부분에서 우리를 도와준다
11.1.1 안티패턴을 연구하는 것은 경력에 도움이 된다
11.1.2 안티패턴을 이해함으로써 프로그램을 한층 더 진보시킬 수 있다
11.1.3 안티패턴을 이해하는 것은 여러분을 좀 더 나은 프로그래머로 만든다
11.2 안티패턴을 프로세스 내에 통합시키기
11.3 다음 단계, 마지막 단계

Appendix A 상호 참조표

찾아보기

저자소개

브루스 테이트 (지은이)    정보 더보기
베테랑 소프트웨어 개발자이자 루비 개발 컨설턴트. IBM에서 13년간 근무하며 데이터베이스 소프트웨어 개발, 객체지향 인프라 구축, 자바 플랫폼 컨설팅 등의 직무를 수행했다. 이후 여러 스타트업에서 클라이언트 솔루션 이사에서 CTO까지 다양한 직책을 역임했다. 국제적인 강연자이며, 저서가 10권이 넘는 저술가이기도 하다. 본서(2011) 및 『Better, Faster, Lighter Java』(2005)로 졸트상을 받았다.
펼치기
최현덕 (옮긴이)    정보 더보기
고려대학교 컴퓨터학과를 졸업하고 한국신용평가정보를 거쳐, 현재는 한국레드햇 GLS 부서에서 RHEL/JBoss 교육을 담당하고 있다. 재학 중 삼성소프트웨어 멤버쉽에서 활동하였고, 여러 벤처기업에서 임베디드 시스템 개발, 스마트폰 애플리케이션 개발, 엔터프라이즈 애플리케이션 등 다양한 분야의 소프트웨어를 개발한 경험을 가지고 있다. '초보자를 위한 JAVA 2 21일 완성'(1998, 인포북), '자바 가상 머신 프로그래밍'(1999, 인포북), '자바 네트워크 프로그래밍' (2000, 인포북), '쓰디쓴 자바: 자바 안티패턴 이야기들' (2003, 인포북) 등 자바와 관련된 다양한 책의 집필과 번역에 참여하였다.
펼치기
이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책