이미 소장하고 있다면 판매해 보세요.
|
1부 그래픽스와 GUI 기초
1장 데스크탑 자바 그래픽스 API: 스윙, AWT, 자바 2D 추상 윈도우 툴킷 자바 2D 스윙 2장 스윙 렌더링 기초 이벤트 스윙 페인트 비동기식 리페인트 요청 동기식 페인트 요청 스윙 렌더링 paint() setOpaque() 이중 버퍼링 스레드 다루기 스레드 모델 타이머와 이벤트 해석 스레드 SwingWorker를 사용한 간편한 스레드 사용 스레드 관련 내용 요약 3장 그래픽스 기초 자바 2D 렌더링 그래픽스 객체 얻기 그래픽스 상태 이미지 확대축소 관련 힌트 도형 안티앨리어스 힌트 텍스트 안티앨리어스 힌트 그래픽 기본요소 4장 이미지 이미지 타입 BufferedImage 이미지 확대축소 품질과 성능 getFasterScaledInstance(): 더 빠르고 좋은 품질의 확대축소 이미지를 제공하는 유틸리티 5장 성능 클립 사용 호환 이미지 걱정해야 할 것들 관리되는 이미지란? 이미지 호환시키기 관리되는 이미지 DataBuffer 객체 접근 이미지 내의 잦은 렌더링 중간생성 이미지 기본 개념 동작 원리 유의사항 요약 기본 렌더링 최적화 성능 측정 명령행 플래그 렌더링 성능 디버깅 2부 고급 그래픽 렌더링 6장 컴포지트 알파 컴포지트 알파 컴포지트의 12 규칙 Clear Dst DstAtop DstIn DstOut DstOver Src SrcAtop SrcIn SrcOut SrcOver Xor AlphaComposite 생성과 설정 AlphaComposite의 일반적인 사용법 Clear 사용하기 SrcOver 사용하기 SrcIn 사용하기 AlphaComposite 사용시 주의사항 자신만의 컴포지트 작성 Add 컴포지트 CompositeContext 구현 픽셀 합성 요약 7장 그래디언트 이중 선형 그래디언트 정규 그래디언트를 활용한 특수 효과 다단 선형 그래디언트 방사형 그래디언트 그래디언트 최적화 그래디언트 캐시하기 더 똑똑하게 캐시하기 반복되는 그래디언트 최적화하기 8장 이미지 프로세싱 이미지 필터 BufferedImageOp로 이미지 처리하기 AffineTransformOp ColorConvertOp ConvolveOp 커널 구성하기 경계에 대한 작업 LookupOp RescaleOp 사용자 정의 BufferedImageOp 기반 필터 클래스 색조 변경 필터 필터 성능에 대한 이야기 요약 9장 글라스 페인 글라스 페인에 그리기 최적화된 글라스 페인 페인팅 입력 이벤트 가로채기 마우스 이벤트 관련 주의사항 10장 레이어드 페인 레이어드 페인 레이어 사용하기 단일 레이어 내에서 컴포넌트 정렬 레이어드 페인과 레이아웃 여러 레이아웃을 사용해서 JLayeredPane 대체하기 11장 리페인트 매니저 스윙이 너무 똑똑할 때 RepaintManager와 첫 대면 RepaintManager 관리하기 RepaintManager로 구현한 반사상 반사상을 위한 공간 만들기 반사상 그리기 더 바보같은, 그래서 더 똑똑한 RepaintManager 요약 3부 애니메이션 12장 애니메이션 기초 시간에 대해서 기초 개념 프레임 기반 애니메이션 프레임 비율 시간 기반 모션 타이밍(그리고 플랫폼 타이밍 유틸리티) "지금 몇시죠?" "모닝콜을 부탁해요." "다시 불러줘요. 또다시. 또다시." 해상도 System.currentTimeMillis()와 System.nanoTime()의 해상도 슬립 해상도 타이머 해상도 해상도에 대한 해상도 스윙 애플리케이션 움직이게 하기 움직이는 그래픽 움직이는 GUI 요약 13장 매끄러운 움직임 배경: 왜 애니메이션이 어색하게 보일까? 애니메이션이 버벅거리는 원인과 부드럽게 만드는 법 타이밍이 모든 것이다 색상: 차이가 무엇일까? 수직 회기: 동기화된 감각 SmoothMoves: 데모 그래픽스 객체 생성 타이머 실행 렌더링 렌더링 옵션 요약 14장 타이밍 프레임워크: 기초 소개 핵심 개념 Animator 클래스 콜백 지속시간 반복 해상도 시작 동작 보간 가속과 감속 보간자 요약 15장 타이밍 프레임워크: 고급 기능 트리거 개념과 사용법 트리거 상위클래스 내장 트리거 프로퍼티 설정자 PropertySetter 클래스 Evaluator 키프레임 요약 4부 이펙트 16장 정적 이펙트 블러 사용목적 간단한 블러 가우시안 블러 성능향상 기법 반사 사용목적 반사 그리기 블러 적용 반사 드롭 섀도우 사용 목적 간단한 드롭 섀도우 사실적인 드롭 섀도우 강조 사용목적 명도 높이기 스팟라이트 가독성 개선을 위한 텍스트 강조 샤픈 사용목적 단순 샤픈 언샤프 마스크 축소된 이미지에 샤픈 적용 요약 17장 동적 이펙트 움직임 사용목적 갑니다, 갑니다, 넘어갔습니다! 페이드 사용목적 페이드 전략 AlphaComposite 페이드 색상 페이드 크로스페이드 페이드 쉽게 하기 펄스 사용목적 펄스 느끼기 자동 백열 약동하는 펄스 스프링 사용목적 스프링 대활약 모핑 사용목적 버튼 모핑하기 요약 18장 애니메이션 장면전환 애플리케이션 상태를 끊김없이 전환하기 기본 개념 애니메이션 장면전환: 라이브러리 애니메이션 애플리케이션 상태 GUI 상태 API 이펙트 GUI 구조 그림과 이미지홀더 ScreenTransition 애니메이트 장면전환: 스윙에게 대체 어떤 일을 시키고 있을까? 몰래 다음 화면 채비하기 레이아웃을 펼쳐보자: 레이아웃을 서서히 변화시키기 스윙을 춤추게 하자: 성능 요약 19장 멋진 리치 클라이언트의 탄생 에어리스 에어리스의 실행 직접 해보기 작업흐름도 페이퍼 디자인 비전 화면 구성 디자인 목업 목업에서 코드까지 레이어 사용하기 블렌딩 모드 안내선 사용 난 예술가가 아니라구! 알맞은 색상 선택 디자인 서적 읽기 요약 프로젝트 맺음말 자바 사이트 저자의 사이트 (당신의 이름이 들어갈 자리) |
|
멋진 리치 클라이언트 세계에 온 여러분을 환영한다. 이 책은 그래픽 이펙트와 애니메이션 이펙트를 활용해 더 훌륭하고 효율적이고 멋진 데스크탑 애플리케이션을 개발하는 방법을 다룬다. 2006년 자바원(JavaOne) 컨퍼런스에서 성공적으로 세션을 마친 후에 우리는 이 주제로 책을 쓰기 시작했다. 발표한 세션 내용은 애니메이션을 활용하고 고급 2D 이펙트를 구현해 더욱 풍부한 애플리케이션을 만드는 방법에 대한 것이었고 3D 이펙트도 약간 다뤘다. 왜 그런 애플리케이션을 개발해야 하는지, 어떤 기술을 사용하는지, 이펙트를 적절히 활용해 멋진 리치 클라이언트를 개발하는 방법에 대해 며칠이고 발표하고 싶었지만 그럴 수는 없었다.
이것이 바로 이 책을 쓰게 된 동기다. 앞으로 자바의 기초, 스윙, 자바 2D, 그래픽스, GUI, 애니메이션, 성능, 고급 이펙트 등 화려하고 멋진 애플리케이션을 만드는 데 필요한 내용을 함께 배울 것이다. 즐거운 여행에 동참하길 바란다. --- '저자 서문' 중에서 요즘 애플리케이션은 사용자에게 단순히 기능뿐만 아니라 즐거움을 주려고 노력한다. 특히 사용자의 전환이 빠르고 경쟁이 치열한 웹 애플리케이션은 AJAX, 플래시로 이어지며 화려한 UI와 사용자 경험(UX, User eXperience)을 더욱 강조한 RIA(Rich Internet Application)가 어느새 당연한 것으로 받아들여지고 있다. 그만큼 개발환경도 좋아져서 개발 툴에서 몇 번의 조작만으로도 멋진 애니메이션을 만들 수 있다. 심지어 애플리케이션 개발과 애니메이션 구성이 별개 작업으로 이뤄지기도 한다. 하지만 리치 클라이언트에서 애니메이션의 의미는 단순히 눈을 즐겁게 하는 것뿐만 아니라 애플리케이션 전체가 하나의 흐름으로 사용자에게 전달되기 위한 것이다. 이를 정확히 반영하기 위해서는 개발자가 그래픽이나 애니메이션의 기초 원리를 파악하고 애플리케이션 전반에 걸쳐 녹여내야 한다. 단순한 애니메이션의 나열로는 사용자의 호기심은 자극할 수 있을지언정 사용자의 마음을 흔들 수는 없다. 이 책에서는 리치 클라이언트의 선구자인 저자들이 리치 클라이언트 개발의 기본 원리를 기초부터 설명하고, 풍부한 개발 경험과 함께 직접 개발한 그래픽스/애니메이션 라이브러리를 제시하고 설명한다. 자바 2D와 스윙 라이브러리를 기준으로, 그래픽스나 애니메이션의 기초 원리를 개발자 대상으로 충실히 설명한다. 또한 리치 클라이언트로서 가져야 할 기본 원칙이나 이펙트, 수학적인 기초, 성능 최적화 기법 등은 플랫폼에 무관하게 활용할 요소가 많다. 아직은 딱딱해 보이는 이클립스 RCP에 좀 더 활력을 불어 넣을 방안을 모색하기 위해 이 책의 번역을 맡았다. 원래 스윙을 좋아하기도 했지만, '쿨Cool'한 애플리케이션을 향한 저자들의 열정과 노하우가 정말 매력적이었기 때문이다. 이 책이 번역되는 동안, 저자 중 한 명인 쳇은 JavaFX를 개발하다 결국 어도비로 자리를 옮겨서 RIA 플랫폼 개발에 더욱 매진하고 있다. 로메인은 구글에서 안드로이드 UI 개발에 참여하고 있다. 스윙에 많은 기여를 했던 두 사람이 이제는 그 경험을 살려 각자 다른 플랫폼에 기여를 하고 있는 셈이다. 그래픽스나 애니메이션에 대한 기초 지식에 부족함을 느낀 채 툴에 의존해 리치 클라이언트를 개발하고 있는 독자라면, 이 책에서 두 저자가 남겨둔 발자국을 따라가면서 더욱 멋진 리치 클라이언트를 향한 기반을 탄탄히 할 수 있을 것이다. 이 책의 가치를 믿고 한국어판 출간을 지지해주신 권성준 사장님과 김희정 부사장님, 오랜 작업기간 동안 물심양면 도와주신 황지영 대리님 등 에이콘출판사 분들께 진심으로 감사드립니다. --- '옮긴이의 말' 중에서 |
|
멋진 리치 클라이언트란 뛰어난 그래픽을 지녀 정말 멋져 보이는 리치 애플리케이션을 뜻한다. 화려하고 멋진 리치 클라이언트는 사용자를 강하게 끌어들이고 흥분해 손을 뗄 수 없게 만든다. 이 책에서는 더 효율적이고 멋진 애플리케이션을 잘 만들어 사용자 경험을 극대화하는 방법을 제시한다.
리치 클라이언트의 핵심은 그래픽스와 애니메이션 이펙트다. 이들 이펙트를 사용하면 매력적인 GUI와, 애플리케이션을 살아 숨쉬게 하는 역동적인 이펙트, 애플리케이션의 논리적 흐름과 사용자를 연결시키는 애니메이션 장면전환 등을 통해 사용자의 경험을 향상시킬 수 있다. 또한 애플리케이션을 풍부하게 만드는 이펙트를 효율적으로 구현하는 방법도 다룬다. 그래픽과 GUI 기초: 스윙과 자바 2D를 연계해 GUI 애플리케이션을 화면에 출력하는 방법과 내부 구조를 파헤쳐 본다. 이들 라이브러리의 유연성을 극대화하고 효율적으로 사용하는 방법을 배운다. 성능: 책 전체에 걸쳐 설명하는 토론과 팁을 이용해 고성능 GUI 애플리케이션을 개발한다. 이미지: 더 나은 자바 애플리케이션을 만들 수 있는 이미지 생성과 사용법을 알아본다. 고급 그래픽: 화려한 리치 클라이언트에 날개를 달아주는 스윙과 자바 2D 요소에 대해 배운다. 애니메이션: 애니메이션의 일반적 개념과 함께 자바 플랫폼에서 사용하는 기능의 사용법을 배운다. 자바 애니메이션을 쉽게 구현할 수 있는 새로운 유틸리티 라이브러리를 소개한다. 이펙트: 정적 이펙트와 애니메이션 이텍트를 만들고 커스터마이즈하는 방법을 배워본다. 자바 언어와 스윙에 대한 경험이 있다면 유용할 것이다. 이 책은 자바와 스윙 입문서가 아니며 자바와 스윙을 어느 정도 알고 있는 독자를 대상으로 한다. 그러나 화려한 리치 클라이언트 제작을 이해하기 위해 중요한 스윙의 렌더링 기초 중 일부는 고급 스윙 프로그래머라 할지라도 어려워할 수 있기에, 스윙과 자바 2D를 함께 사용해 사용자 정의 이펙트를 만드는 방법을 설명하는 데 초반 몇 장을 할애했다. 여기서 만든 이펙트는 책 전체에서 사용한다. 1부. 그래픽과 GUI 기초 1부에서는 책 전반에 걸쳐 사용하는 자바 그래픽과 UI 프로그래밍의 기본 개념을 배운다. 그래픽과 UI 개발에 대해 상세히 설명하는 것은 아니지만 API, 기술 등의 기초에 대해 누구나 이해할 수 있도록 자세히 설명하고 이후 내용들을 활용해 화려한 리치 클라이언트를 개발하는 데 도움이 되는 내용을 다뤘다. AWT, 자바 2D, 스윙을 잘 알고 있다면 이 부분은 진부해 보일 수도 있겠지만, 그래도 기본 개념은 꼭 필요하다. 또한 책 여기저기에는 모든 데스크탑 자바 프로그래머에게 유용한 흥미로운 토막 상식을 많이 담았다. 2부. 고급 그래픽 렌더링 2부에서는 자바 2D와 스윙으로 리치 인터페이스를 만드는 데 유용한 고급 주제들을 다룬다. 2부 전반부에는 컴포지트, 그래디언트, 이미지 프로세싱 등 그래픽 관련 기술을 다루고 후반부에는 글라스 페인, 레이어 페인, 리페인트 매니저 등 스윙 관련 기술을 다룬다. 3부. 애니메이션 화려한 리치 클라이언트는 정적인 것이 아니다. 살아있는 것이다. 그러므로 움직여야 한다. 심장박동 소리로 사용자에게 존재를 알려야 한다. 보기 좋게 만드는 것이 반이고 살아 움직이는 듯 보이게 하는 것이 나머지 반이다. 3부는 애플리케이션에 생명을 불어넣는 애니메이션 기초를 다룬다. 그래픽 애니메이션과 GUI 애니메이션, 애니메이션 개발을 도와주는 자바 SE 라이브러리, 자바 애니메이션 개발을 매우 쉽게 만들어주는 타이밍 프레임워크 라이브러리 등을 다룬다. 4부. 이펙트 4부는 1, 2, 3부 내용을 기반으로 구성됐다. 이펙트는 화려한 리치 클라이언트의 핵심이며 보통 리치 클라이언트와 화려한 리치 클라이언트를 구분짓는다. 이펙트는 두 가지 카테고리로 나눴다. 첫 번째 카테고리는 애플리케이션을 더 멋져 보이게 만드는 정적 이펙트다. 두 번째 카테고리는 GUI를 움직이게 만드는 동적 이펙트, 또는 애니메이션 이펙트다. 책의 웹사이트에서 제공하는 유틸리티 라이브러리를 이용해 애니메이션 이펙트를 구현하는 Animated Transition도 다루고 있다. 맨 처음 디자인 다이어그램에서부터 다양한 이펙트 구현까지 화려한 리치 클라이언트 예제를 개발하는 과정을 소개하며 4부를 마친다. |