Top

이클립스 실전 플러그인 개발

  • 원서명Eclipse: Building Commercial-Quality Plug-ins (2nd Edition) (ISBN 9780321426727)
  • 지은이에릭 클레이버그, 댄 루벨
  • 옮긴이양석호
  • ISBN : 9788960770188
  • 35,000원
  • 2007년 08월 06일 펴냄
  • 페이퍼백 | 856쪽 | 188*255mm
  • 시리즈 : 이클립스 프로페셔널

책 소개

이클립스를 심도 있게 이해하고 싶은 개발자,
이클립스를 확장하려는 중급 이상 개발자 모두를 위한 필독서!


상용 제품 수준의 이클립스 플러그인을 개발하는 과정을 처음부터 끝까지 상세하게 다루고 있으며, 특히 고객의 요구를 만족할 수 있도록 세련되게 다듬는 방법을 강조하고 있다. 이클립스를 처음 사용하는 독자를 위해 잘 요약된 개발도구 사용법을 제공할 뿐만 아니라, 이클립스에 익숙한 독자에게는 이클립스 플랫폼에 대한 다양한 지식이 담긴 참고서 역할을 함으로써 이클립스 기반 제품의 품질 향상을 돕는다.


[ 이 책의 특징 ]

이클립스는 애플리케이션 개발에 있어서 지배적인 위치를 차지했다. 이클립스를 성공시킨 열쇠는 개발자들이 플러그인을 사용해서 기능을 확장할 수 있었다는 점이다.

이 책은 상용 제품 수준의 이클립스 플러그인을 개발하는 과정을 처음부터 끝까지 상세하게 다루고 있으며, 특히 고객의 요구를 만족할 수 있도록 세련되게 다듬는 방법을 강조하고 있다. 이클립스를 처음 사용하는 독자를 위해 잘 요약된 개발도구 사용법을 제공할 뿐만 아니라, 이클립스에 익숙한 독자에게는 이클립스 플랫폼에 대한 다양한 지식이 담긴 참고서 역할을 함으로써 이클립스 기반 제품의 품질 향상을 돕는다.

이 책 1판은 이클립스 플러그인 개발의 여러가지 측면을 실용적으로 상세하게 다루며, 플러그인을 개발하면서 겪게 되는 다양한 문제에 대한 해법을 제시함으로써 독자들로부터 매우 좋은 반응을 얻었던 베스트셀러이다. 2판에서는 순수하게 이클립스 3.1과 3.2 API를 활용하도록 모든 예제 코드를 다시 작성했으며, 관련된 API 설명, 다이어그램, 화면 예시 등을 새롭게 개정했다.

액션, 뷰, 편집기와 같은 이클립스 개념은 크게 바뀌지 않았지만, 각 기능은 점점 규모가 커지고 있다. 더구나 이클립스 플러그인 기반구조와 같은 부분은 OSGi 기반구조로 변경되면서 과감하게 변화됐다. 2판에서는 이렇듯 바뀐 내용을 철저히 반영하고 있다.


[ 이 책의 주요 내용 ]

● 자바 프로그래머를 위한 이클립스 사용 설명서 요약
● 고급 이클립스 사용자를 위한 체계화된 참고서
● 이클립스 플러그인을 개발하는 데 필요한 다양한 개발 도구 소개
● 플러그인과 확장점 구조 등 이클립스 아키텍처에 대한 설명
● SWT와 JFace로 이클립스 UI를 구축하는 실무 과정
● 변경내역 추적, 퍼스펙티브, 마커, 네이처 등을 사용하는 방법 예시
● 다국어 지원, 도움말 시스템, 피처, 브랜드 적용


[ 이 책의 목표 ]

이 책은 이클립스와 IBM SDP(Software Development Platform, IBM의 이클립스 기반 상용 개발 환경)를 위한 상용 품질의 확장 기능을 구축하는 과정과 그와 관련된 상세하고 심층적인 내용을 다룬다. 여기서 ‘상용 품질’이란 ‘상용 수준’ 또는 ‘고품질’과 동일한 의미로 사용된다. 상용 품질의 플러그인을 개발하는 것은 이클립스에 통합시키기 위해 필요한 최소한의 요구사항을 만족시키는 것을 의미한다. 또한 상용 제품을 ‘갈고 닦는 과정’에 기여하는 모든 세부사항에 관련된 것을 의미한다.
이클립스 플러그인 세상에서는 매우 일부의 플러그인만이 상용화를 위한 마지막 과정까지 수행되어 마무리되며 대부분은 오픈소스나 아마추어 플러그인 형태로 남는다. 고품질 플러그인을 개발하는 데 관심이 있는 개발자(십중팔구는 이클립스 기반 제품을 개발하려는 소프트웨어 회사)라면 고려해야 할 세부적인 사항이 많다. 이 책은 플러그인 개발의 전체 과정에 대해 방향을 잡아주고 고품질의 결과물을 완성하기 위해 필요한 모든 부가 사항을 제시한다. 또한 이를 통해 몇 가지 보조적인 목표도 함께 이루고자 한다.
우선 입문자를 위해 이클립스 사용법에 대해서도 간단히 소개한다.
숙련된 이클립스 사용자의 지식을 보완하고 이클립스 기반 제품의 품질을 향상시키기 위한 참고자료를 제공한다.
입문자와 숙련된 사용자 모두를 대상으로 복잡한 이클립스 플러그인의 작성에 대한 상세한 학습서 역할을 한다.


[ 이 책의 구성 ]

처음 3개 장은 이클립스 개발 환경과 간단한 플러그인 개발 과정의 개요를 소개한다. 여기서는 이클립스를 처음 접하는 개발자가 플러그인 개발을 금방 경험해 볼 수 있게 하는 데 목적을 둔다.

특히 1장은 독자에게 이클립스 개발도구 중에서 플러그인 개발을 위해 꼭 필요한 부분을 소개한다. 이는 이클립스 IDE와 관련 도구에 대한 매우 짤막한 개요이므로(제대로 쓰려면 책 한 권 분량이다), 숙련된 이클립스 사용자라면 그냥 넘어가도 상관없다.

2장은 이 책 전체에 걸쳐 사용할 예제를 소개하고 실제 동작하는 플러그인을 구축하는 과정을 처음부터 끝까지 신속하게 살펴본다. 3장은 이클립스 아키텍처와 플러그인, 확장점 구조를 추상적인 관점에서 살펴본다.

4장과 5장은 모든 이클립스 UI를 구성하는 기본 요소인 SWT와 JFace를 다룬다. 이 내용은 독립적인 참고자료로도 활용할 수 있으며 플러그인을 당장 개발하기에도 부족하지 않을 만한 내용을 담고 있다. 책 전체에 걸쳐 UI를 작성하는 데 충분한 지식을 제공하고 그 중 몇 가지는 즉시 사용할 수 있다.

이 책의 대부분을 차지하는 6장 이후 장들에서는 플러그인 개발의 다양한 측면을 각각 다루며 독자에게 관련된 문제 해결 방안에 대한 심층적인 지식을 제공한다. 각 장은 문제의 다른 측면에 초점을 맞추며 개요, 상세한 설명, 문제와 해결책에 대한 논의, 도표, 화면 이미지, 코드 예제, 관련 API 목록, 요약 등으로 구성된다.


[ 이 책의 대상 ]

이 책의 대상 독자는 이클립스와 다른 이클립스 기반 제품에 통합시킬 제품을 구축하려는 자바 개발도구 개발자나 자신의 개발환경을 직접 개선하려는 고급 이클립스 사용자, 그리고 이클립스가 어떻게 동작하는지를 알고 싶은 모든 개발자이다. 1장 ‘이클립스 개발도구 사용법’에서 필요한 기초 지식의 대부분을 소개하고 있으므로, 숙련된 이클립스 사용자만이 이 책을 볼 수 있는 것은 아니다. 이 책은 독자가 이클립스 관련 지식이 충분치 않더라도 자바와 XML을 능숙하게 사용하는 개발자일 것으로 전제하고 집필됐다.


[ 소스코드 ]

책의 예제는 저자들이 직접 운영하는 사이트에서 배포하고 있다.

http://www.qualityeclipse.com/projects/index.html

저자/역자 소개

[ 저자 소개 ]

에릭 클레이버그
에릭 클레이버그는 Instantiations사의 제품 개발 부문 부사장이다. 에릭은 17년간의 상용 소프트웨어 개발 경험이 있으며 그 중 9년은 자바, 6년은 이클립스를 경험해 온 숙련된 소프트웨어 기술자이자 제품 개발자, 기업가, 관리자이다. 또한 윈도우빌더 프로(WindowBuilder Pro), 코드프로(CodePro), 수상작인 VA 어시스트(VA Assist) 제품 계열 등 다양한 상용 자바/스몰토크 확장 기능 제품의 주요 개발자이자 아키텍트이다. MIT 학사, 하버드 MBA 학위를 가지고 있으며 성공적인 소프트웨어 회사인 ObjectShare와 Instantiations의 공동 창업자이다.

댄 루벨
댄 루벨은 Instantiations사의 수석 연구원이다. 그는 17년간 상용 소프트웨어를 개발해 왔으며 그 중 10년은 자바, 6년은 이클립스를 경험해 온 객체 지향 기술 디자인/적용 전문가이며 기업가이다. 그는 jFactor, jKit/GO, jKit/Grid 등 몇몇 성공적인 상용 제품의 핵심 아키텍트이면서 제품 관리자로서 윈도우빌더 프로(WindowBuilder Pro), VA 어시스트(VA Assist), 코드프로(CodePro) 등의 상용 제품 설계와 리더 역할을 맡아 수행한 바 있다. 버크넬 학사 학위를 갖고 있으며 Instantiations의 공동창업자이다.

Instantiations는 어드밴스드 IBM 비즈니스 파트너 중 하나이며 이클립스와 IBM 비주얼에이지(VisualAge), 웹스피어(WebSphere), 래쇼날(Rational) 제품 계열에 대한 다수의 상용 확장 기능을 개발했다. Instantiations는 이클립스 연합의 멤버이며 이클립스 협업 도구 프로젝트(Koi)와 이클립스 폴리네이트 프로젝트(Beehive)를 담당하는 이클립스 오픈소스의 기여자이다.


[ 저자 서문 ]

처음 이클립스를 접했던 1999년 후반을 돌이켜 보면, 우리는 IBM이 해결하려고 시도하던 문제의 규모에 압도되어 있었음을 알 수 있다. IBM은 모든 개발 환경을 단일 코드 기반으로 통합하려고 했다. 그 때 IBM은 C/C++, 자바, 스몰토크가 뒤섞인 혼합 기술을 사용하고 있었다.

수상작인 Visual Age for Java를 포함해 IBM의 주요 도구 중 상당수가 스몰토크로 작성되어 있었다. 스몰토크는 복잡한 도구를 개발하기에 매우 좋은 언어였지만 자바 등의 언어에 의해 시장점유율을 급속히 빼앗기고 있었다. 반면 IBM은 스몰토크 개발자가 세계에서 가장 많은 곳 가운데 하나였지만 IBM 외부에서는 스몰토크에 대한 산업적인 지원이 그다지 크지 않았고, 스몰토크 기반의 부가 기능을 개발할 만한 독립 소프트웨어 벤더(ISV, Independent Software Vender)는 매우 부족했다.

이와 달리 자바는 간편한 이식성과 다양한 플랫폼 지원으로 세계 전역에 걸쳐 개발자들의 마음을 사로잡고 있었고, 최신의 웹 기반 비즈니스 애플리케이션 구축에 필요한 풍부한 API를 제공했다. 무엇보다도 자바는 객체 지향 언어였으므로 IBM은 스몰토크 기반 도구를 개발하면서 늘어난 숙련된 객체지향 개발자들을 적극적으로 활용할 수 있었다. IBM은 그때까지 IBM의 Visual Age Smalltalk와 VisualAge Java 개발환경을 개발했던 OTI(Object Technology International) 그룹을 인수했고, 이 그룹에 자바 기반이면서 확장성이 매우 우수한 IDE의 구축을 맡겼다. 이로 인해 태어난 이클립스야말로 매우 축복 받은 결과물이었다.

OTI는 최고 수준의 객체 지향 기술을 적용해 기능, 유연성, 확장성 측면에서 비할 데 없이 훌륭한 IDE를 만들 수 있었다. OTI는 기존의 스몰토크 기반 IDE에서 유용했던 기능을 대부분 구현해냈고, 그와 동시에 IDE라는 소프트웨어의 한 장르에서 이제껏 볼 수 없었던 예술적인 경지를 이뤄냈다.

따라서 그 이전까지의 자바 세상에서는 이클립스만큼 강력하고 극찬을 받은 제품이 없었지만, 현재는 이클립스가 마이크로소프트의 .NET과 함께 세계에서 가장 인기 있는 개발 환경으로 자리잡고 있다. 자신의 도구를 가능한 한 많은 사람들에게 전하고 싶은 개발자들에게는 이클립스야말로 완벽한 플랫폼이었다. 더구나 이클립스는 완전히 무료인데다 오픈소스라는 이점까지 지녀 도저히 사용하지 않을 수 없는 매력적인 도구였다. 이처럼 개방형의 확장 가능한 IDE가 누구에게나 무료라는 사실은 미래의 도구 개발자들에게 강력한 동기가 되었다.

우리에게도 마찬가지였다. Instantiations에서, 그리고 더 이전의 ObjectShare에서 우리는 다양한 IDE에 대한 확장도구를 구축하는 데 집중하면서 훨씬 의미 있는 시간을 보낼 수 있었다. Digitalk의 Smalltalk/V에 대한 확장 도구를 개발하는 것으로 시작해 이후에는 IBM의 VisualAge Smalltalk를 위한 개발도구로 이전했으며, 마침내는 IBM의 VisualAge Java를 위한 도구(수상작인 VA Assist 제품과 jFactor 제품은 최초의 자바 리팩토링 도구 중 하나)까지 개발하게 되었다. 이와 같은 개발환경은 모두 IDE를 확장할 수 있는 수단을 제공하긴 했지만 문서화나 표준화는 매우 부실했다. 또한 적은 시장 점유율(비주얼 베이직 등과 비교할 때)과 다양한 사용자 기반으로 인해 개발환경뿐만 아니라 우리 자신도 큰 어려움을 겪었다.

우리는 어드밴스드 IBM 비즈니스 파트너로서 IBM에서 이클립스 개발 책임을 맡은 사람들과 길고 신뢰할 만한 관계를 맺을 수 있었다. 이러한 관계 덕분에 우리는 새로운 기술에 대해 전달 받고, 다른 사람들이 이클립스를 접하는 것보다 1년 반 정도 앞서서 이클립스를 사용할 기회를 얻을 수 있었다. IBM은 2001년 중반에 이클립스를 세계적으로 발표했으며, Instantiations의 우리 팀은 IBM이 공개할 첫 번째 데모 애플리케이션을 개발했다. 그해 말 IBM은 최초의 이클립스 기반 상용 도구인 WebSphere Studio Application v4.0(v4.0은 당시 VisualAge for Java v4.0과 버전을 맞추기 위한 것)을 발표했으며, 같은 날 우리의 CodPro 제품은 WebSphere Studio 최초로 상용 확장 기능(이클립스도 지원)으로 등장했다.

현재 CodePro 제품은 이클립스와 다른 이클립스 기반 IDE에 수백 가지 개선사항을 추가하고 있다. 지난 몇 년간 CodePro를 개발하면서 우리는 이클립스 개발에 대해 세부적으로 배울 수 있는 기회를 얻었다. 이클립스에 대해 우리보다 더 잘 알 만한 개발자는 IBM과 OTI에서 이클립스와 함께 먹고 자며 숨쉰 사람들 정도일 것이다. 또한 CodePro는 이 책에서 제시하는 아이디어와 기법을 실험해볼 수 있는 실험실이기도 했으므로, 덕분에 어떤 내용을 써야 할지 생각해 볼 여유를 가질 수 있었다.


[ 역자 소개 ]

양석호
KAIST 전산과를 졸업하고 웹, 모바일, 임베디드, 자바 GUI 애플리케이션 등의 다양한 프로젝트를 수행했으며 현재는 NHN에서 일본 검색서비스 개발 업무를 맡고 있다. 에이콘 이클립스 프로페셔널 시리즈 에디터를 맡아 『이클립스 RCP:설계에서 구현, 배포까지, 자바 GUI 애플리케이션 개발의 모든 것』을 번역하는 등 양질의 이클립스 관련서를 독자들에게 소개하는 데 큰 보람을 느끼고 있다. 또한 2005년부터 네이버 이클립스 플러그인 까페를 운영하며 점점 늘어가는 이클립스 플러그인 개발자들과 함께 이클립스 기술 전파에 노력하고 있다.


[ 역자 서문 ]

지금도 이클립스 플랫폼 개발 관련 서적이 많은 것은 아니지만, 역자가 이클립스 플러그인 개발을 시작할 때는 『Eclipse: Building Commercial-Quality Plug-ins』가 처음 이클립스 플랫폼을 접하는 사람이 참고할 만한 독보적인 책이었습니다. 유일한 책임에도 불구하고 적절한 예제와 상세한 설명, 풍부한 실무 경험이 담겨 있어서 정말 큰 도움이 되었습니다. 돌이켜 생각해 보면 이클립스 플러그인 개발 분야에서 유일하다 싶은 이 책이 매우 훌륭해서 한동안 경쟁서적이 나오지 못한 것은 아닐까 싶습니다.

이클립스 서적을 번역하고자 마음을 먹었을 때 당연하게도 이 책이 첫 번째 후보가 되었습니다만, 당시는 이미 시간이 많이 흘러 이클립스가 기반 플랫폼을 OSGi로 전환하는 크나큰 변화를 겪은 직후였습니다. 이로 인해 OSGi 전환 직후 최신 이클립스 플랫폼의 내용을 훌륭히 담고 출간된 『이클립스 RCP』를 일단 먼저 번역을 시작했습니다. 하지만 곧이어 출간된 『Eclipse Building Commercial-Quality Plug-ins, 2판』은 절대 놓칠 수 없는 책이었습니다. 『SWT/JFace 인 액션』, 『이클립스 RCP』 출간과 더불어 최근 이클립스 플랫폼에 관심을 갖는 개발자 분들이 눈에 띄게 늘어나면서, 『이클립스 실전 플러그인 개발』을 빨리 내놓아야 한다는 압박감도 컸습니다만, 작업을 마치고 나니 가장 뿌듯한 번역서이기도 합니다.

전에도 이미 읽었던 책이지만 직접 번역을 해보니 이 책의 장점을 더욱 크게 느낄 수 있었습니다. OSGi 등 고급 주제에 해당하는 것은 『이클립스 RCP』에 더 많이 녹아 있다고 봅니다만, 이클립스 설치와 SWT/JFace 프로그래밍부터 시작하는 학습과정은 처음 시작하는 개발자에게 큰 도움이 되도록 구성되어 있습니다. 특히 이 책의 최고 장점은 단순히 코딩뿐만 아니라 플러그인 개발자로서 염두에 둬야 할 이클립스 철학과 좋은 GUI를 위한 가이드라인의 제공입니다. 결국 ‘상용 품질(commercial-quality)’이라 함은 개발의 난이도보다는 사용자에 대한 배려니까요. 또한 『이클립스 RCP』는 아무래도 애플리케이션 개발자의 입장이었습니다만, 『이클립스 실전 플러그인 개발』은 플러그인 개발자 입장에서 다른 플러그인과 매끄럽게 상호작용하는 부분을 충실히 설명하고 있습니다.

최근 이클립스는 또 한 번의 큰 변화를 겪었습니다. 이클립스 3.3 기반의 유로파(EUROPA)는 Mylyn이라는 새로운 형태의 UI와 다양한 개발 언어 지원을 추가함으로써 범용 개발 도구로서의 면모를 제대로 보여주고 있습니다.

이클립스 3.2를 기준으로 집필된 책이어서 최근 출시된 이클립스 3.3과는 다소 차이가 있지만, 이클립스 유로파는 이클립스의 기반 플랫폼의 확장보다는 외부 기능을 넓히는 데 중점을 두었습니다. 이 책은 방대해진 이클립스의 영역을 탐험하기 위한 훌륭한 도구가 되리라 생각합니다. 이클립스는 아직 OSGi와 완전히 동화되지 않은 상태이므로 곧 또 한 번의 큰 변화를 예고하고 있습니다. 이 책으로 지금까지 발전해 온 이클립스의 모습을 짧은 시간 내에 파악하고 앞으로 계속될 이클립스의 진화 과정을 함께 즐길 수 있기를 바랍니다.

2007년 7월
양 석 호

목차

목차
  • 1장 이클립스 개발도구 사용하기 1
    • 1.1 시작하기 1
      • 1.1.1 이클립스 얻기 1
      • 1.1.2 설치 3
    • 1.2 이클립스 워크벤치 3
      • 1.2.1 퍼스펙티브, 뷰, 편집기 5
        • 1.2.1.1 Java 퍼스펙티브 7
        • 1.2.1.2 자원 퍼스펙티브 8
        • 1.2.1.3 디버그 퍼스펙티브 10
      • 1.2.2 액션 11
        • 1.2.2.1 최상위 메뉴 11
        • 1.2.2.2 컨텍스트 메뉴 12
        • 1.2.2.3 툴바 13
        • 1.2.2.4 액션의 사용 여부 변경 14
    • 1.3 개발환경 꾸미기 14
      • 1.3.1 워크벤치 환경설정 15
      • 1.3.2 자바 환경설정 17
      • 1.3.3 환경설정 가져오기/내보내기 18
    • 1.4 프로젝트 생성 19
      • 1.4.1 새 자바 프로젝트 마법사 사용하기 19
      • 1.4.2 .classpath 파일과 .project 파일 22
      • 1.4.3 자바 패키지 마법사 사용하기 24
      • 1.4.4 자바 클래스 마법사 사용하기 24
    • 1.5 탐색 25
      • 1.5.1 타입 열기 대화창 26
      • 1.5.2 타입 계층구조 뷰 26
      • 1.5.3 행으로 이동 27
      • 1.5.4 아웃라인 뷰 28
    • 1.6 검색 28
      • 1.6.1 파일 검색 28
      • 1.6.2 자바 검색 30
      • 1.6.3 기타 검색 메뉴 옵션 32
      • 1.6.4 작업 세트 32
    • 1.7 코드 작성 34
      • 1.7.1 자바 편집기 34
        • 1.7.1.1 색상 적용 문법 강조 35
        • 1.7.1.2 사용자 정의 코드 포맷 적용 36
        • 1.7.1.3 자바 가져오기 구문 구성하기 36
        • 1.7.1.4 컨텍스트 감지 코드 자동완성 37
        • 1.7.1.5 ‘빠른 수정’ 문제점 자동 교정 38
      • 1.7.2 템플릿 39
      • 1.7.3 리팩토링 41
      • 1.7.4 로컬 히스토리 44
      • 1.7.5 파일 확장자 연관 46
    • 1.8 CVS를 사용한 팀 개발 48
      • 1.8.1 CVS 시작하기 49
      • 1.8.2 CVS에서 프로젝트 체크아웃 50
      • 1.8.3 저장소와 동기화하기 51
      • 1.8.4 리소스 비교 및 치환 52
      • 1.8.5 CVS 레이블 데코레이터 53
    • 1.9 애플리케이션 실행 54
      • 1.9.1 자바 애플리케이션 실행 54
      • 1.9.2 실행 구성 56
    • 1.10 디버깅 58
      • 1.10.1 중단점 설정 58
      • 1.10.2 디버그 뷰 사용하기 59
      • 1.10.3 변수 뷰 사용하기 60
      • 1.10.4 표현식 뷰 사용하기 60
    • 1.11 단위 테스트 61
      • 1.11.1 테스트 케이스 생성 61
      • 1.11.2 테스트 케이스 실행 62
    • 1.12 요약 63
    • 1.13 참고자료 64
  • 2장 간단한 플러그인 예제 65
    • 2.1 Favorites 플러그인 65
    • 2.2 플러그인 프로젝트 생성 66
      • 2.2.1 새 플러그인 프로젝트 마법사 66
      • 2.2.2 플러그인 정의 67
      • 2.2.3 뷰 정의 69
    • 2.3 생성된 코드 둘러보기 70
      • 2.3.1 플러그인 내역서 70
      • 2.3.2 플러그인 클래스 77
      • 2.3.3 Favorites 뷰 78
    • 2.4 제품 빌드 81
      • 2.4.1 직접 빌드하기 81
      • 2.4.2 아파치 Ant로 빌드하기 83
    • 2.5 제품 설치와 실행 86
    • 2.6 제품 디버깅 88
      • 2.6.1 실행 구성 생성 88
      • 2.6.2 플러그인과 프래그먼트 선택 89
      • 2.6.3 런타임 워크벤치 실행 90
    • 2.7 PDE 뷰 90
      • 2.7.1 플러그인 레지스트리 뷰 90
      • 2.7.2 플러그인 뷰 91
      • 2.7.3 플러그인 종속성 뷰 91
    • 2.8 플러그인 테스트 작성 92
      • 2.8.1 테스트 준비 92
      • 2.8.2 플러그인 테스트 프로젝트 생성 92
      • 2.8.3 플러그인 테스트 생성 93
      • 2.8.4 플러그인 테스트 실행 97
      • 2.8.5 Favorites 플러그인 설치 제거 98
    • 2.9 요약 98
    • 2.10 참고자료 99
  • 3장 이클립스 기반구조 101
    • 3.1 기반구조 개요 101
      • 3.1.1 플러그인 구조 102
      • 3.1.2 작업공간 104
    • 3.2 플러그인 디렉토리와 JAR 파일 104
      • 3.2.1 링크 파일 105
      • 3.2.2 혼합 방식 106
    • 3.3 플러그인 내역서 107
      • 3.3.1 플러그인 선언 108
        • 3.3.1.1 플러그인 ID 108
        • 3.3.1.2 플러그인 버전 108
        • 3.3.1.3 플러그인 이름과 제공자 108
        • 3.3.1.4 플러그인 클래스 선언 109
      • 3.3.2 플러그인 런타임 110
      • 3.3.3 플러그인 종속성 110
      • 3.3.4 확장과 확장점 112
    • 3.4 플러그인 클래스 114
      • 3.4.1 시동과 종료 114
      • 3.4.2 플러그인 이른 시동하기 115
      • 3.4.3 정적 플러그인 리소스 115
      • 3.4.4 플러그인 환경설정 116
      • 3.4.5 플러그인 구성 파일 116
      • 3.4.6 Plugin과 AbstractUIPlugin 118
    • 3.5 플러그인 모델 119
      • 3.5.1 Platform 119
      • 3.5.2 플러그인과 번들 120
      • 3.5.3 플러그인 확장 레지스트리 121
    • 3.6 로깅 122
      • 3.6.1 상태 객체 123
      • 3.6.2 오류 로그 뷰 124
    • 3.7 이클립스 플러그인 124
    • 3.8 요약 125
    • 3.9 참고자료 126
  • 4장 SWT 127
    • 4.1 SWT 역사와 목적 127
    • 4.2 SWT 위젯 130
      • 4.2.1 간단한 독립실행형 애플리케이션 예제 130
        • 4.2.1.1 프로젝트 클래스 경로에 SWT 추가 130
        • 4.2.1.2 독립실행형 SWT 코드 131
        • 4.2.1.3 예제 실행 133
      • 4.2.2 위젯 생명주기 134
      • 4.2.3 위젯 이벤트 134
      • 4.2.4 추상 위젯 클래스 136
        • 4.2.4.1 Widget 136
        • 4.2.4.2 Control 137
        • 4.2.4.3 Scrollable 140
      • 4.2.5 최상위 클래스 140
        • 4.2.5.1 디스플레이 140
        • 4.2.5.2 Shell 142
      • 4.2.6 주요 위젯 143
        • 4.2.6.1 Label 144
        • 4.2.6.2 Button 144
        • 4.2.6.3 Text 146
        • 4.2.6.4 List 149
        • 4.2.6.5 Combo 151
        • 4.2.6.6 Table 154
        • 4.2.6.7 Tree 158
        • 4.2.6.8 Composite 161
        • 4.2.6.9 Group 163
        • 4.2.6.10 TabFolder 164
      • 4.2.7 Menu 166
    • 4.3 레이아웃 관리 170
      • 4.3.1 FillLayout 170
      • 4.3.2 RowLayout 171
      • 4.3.3 GridLayout 174
      • 4.3.4 FormLayout 177
    • 4.4 자원 관리 180
      • 4.4.1 색상 180
      • 4.4.2 폰트 180
      • 4.4.3 이미지 181
    • 4.5 요약 181
    • 4.6 참고자료 182
  • 5장 JFace 뷰어 185
    • 5.1 리스트 지향 뷰어 185
      • 5.1.1 레이블 프로바이더 186
      • 5.1.2 컨텐트 프로바이더 188
      • 5.1.3 뷰어 정렬자 189
      • 5.1.4 뷰어 필터 190
      • 5.1.5 StructuredViewer 클래스 190
      • 5.1.6 ListViewer 클래스 192
      • 5.1.7 TableViewer 클래스 195
      • 5.1.8 TreeViewer 클래스 199
    • 5.2 TextViewer 203
    • 5.3 요약 206
    • 5.4 참고자료 206
  • 6장 액션 207
    • 6.1 IAction과 IActionDelegate 비교 207
    • 6.2 워크벤치 윈도우 액션 209
      • 6.2.1 워크벤치 윈도우 메뉴 정의 209
      • 6.2.2 메뉴 내의 그룹 212
      • 6.2.3 메뉴 항목과 툴바 버튼 정의 212
      • 6.2.4 액션 이미지 214
      • 6.2.5 삽입점 215
      • 6.2.6 액션 위임자 작성 216
        • 6.2.6.1 selectionChanged 메소드 218
        • 6.2.6.2 run 메소드 218
      • 6.2.7 새 액션 직접 테스트하기 219
      • 6.2.8 새 액션에 대한 테스트 추가 220
      • 6.2.9 논의 222
    • 6.3 객체 액션 224
      • 6.3.1 객체 기반 액션 정의 224
      • 6.3.2 액션 필터와 사용 여부 지정 227
        • 6.3.2.1 기본 필터와 사용 여부 지정 227
        • 6.3.2.2 visibility 요소 227
        • 6.3.2.3 filter 요소 229
        • 6.3.2.4 selection 요소 230
        • 6.3.2.5 enablement 요소 231
        • 6.3.2.6 컨텍스트 감지 객체 컨트리뷰션 232
      • 6.3.3 IObjectActionDelegate 233
      • 6.3.4 객체 기반 서브 메뉴 작성 234
      • 6.3.5 새로운 액션 수동 테스트 234
      • 6.3.6 새로운 액션에 대한 테스트 추가 235
    • 6.4 뷰 액션 237
      • 6.4.1 뷰 컨텍스트 서브 메뉴 정의 237
      • 6.4.2 뷰 컨텍스트 메뉴 액션 정의 238
      • 6.4.3 IViewActionDelegate 239
      • 6.4.4 뷰 툴바 액션 정의 240
      • 6.4.5 뷰 풀다운 서브 메뉴와 액션 정의 241
      • 6.4.6 새 액션 직접 테스트 242
      • 6.4.7 새 액션에 대한 테스트 추가 242
      • 6.4.8 뷰 컨텍스트 메뉴 식별자 242
    • 6.5 편집기 액션 244
      • 6.5.1 편집기 컨텍스트 메뉴 정의 245
      • 6.5.2 편집기 컨텍스트 액션 정의 246
      • 6.5.3 IEditorActionDelegate 247
      • 6.5.4 편집기 최상위 메뉴 정의 247
      • 6.5.5 편집기 최상위 액션 정의 248
      • 6.5.6 편집기 툴바 액션 정의 249
      • 6.5.7 새 액션에 대한 테스트 추가 250
      • 6.5.8 편집기 컨텍스트 메뉴 식별자 250
    • 6.6 키 바인딩 251
      • 6.6.1 카테고리 252
      • 6.6.2 커맨드 252
      • 6.6.3 키 바인딩 253
      • 6.6.4 액션에 커맨드 연관시키기 255
      • 6.6.5 키보드 접근성 255
    • 6.7 RFRS 고찰 257
      • 6.7.1 전역 액션 레이블 (RFRS 5.3.5.1) 257
    • 6.8 요약 257
    • 6.9 참고자료 258
  • 7장 뷰 259
    • 7.1 뷰 선언 261
      • 7.1.1 뷰 카테고리 선언 261
      • 7.1.2 뷰 선언 262
    • 7.2 뷰 파트 263
      • 7.2.1 뷰 메소드 263
      • 7.2.2 뷰 컨트롤 264
      • 7.2.3 뷰 모델 265
      • 7.2.4 컨텐트 프로바이더 276
      • 7.2.5 레이블 프로바이더 277
      • 7.2.6 뷰어 정렬자 278
      • 7.2.7 뷰어 필터 281
      • 7.2.8 뷰 선택항목 283
    • 7.3 뷰 액션 283
      • 7.3.1 모델 액션 283
      • 7.3.2 컨텍스트 메뉴 284
        • 7.3.2.1 액션 작성 284
        • 7.3.2.2 컨텍스트 메뉴 작성 285
        • 7.3.2.3 컨텍스트 메뉴 동적 빌드 286
        • 7.3.2.4 선택사항 프로바이더 286
        • 7.3.2.5 원치 않는 액션에 필터 적용 286
      • 7.3.3 툴바 버튼 287
      • 7.3.4 풀다운 메뉴 287
      • 7.3.5 키보드 액션 289
      • 7.3.6 전역 액션 289
      • 7.3.7 클립보드 액션 290
        • 7.3.7.1 복사 290
        • 7.3.7.2 잘라내기 292
        • 7.3.7.3 붙여넣기 293
      • 7.3.8 드래그 앤 드롭 지원 294
        • 7.3.8.1 Favorites 뷰 밖으로 객체 드래그 294
        • 7.3.8.2 Favorites 뷰 안으로 객체 드래그 296
        • 7.3.8.3 전송 타입 직접 정의하기 298
      • 7.3.9 인라인 편집 301
    • 7.4 뷰 연결 306
      • 7.4.1 선택사항 프로바이더 306
      • 7.4.2 적응 가능 객체 306
      • 7.4.3 선택사항 리스너 307
      • 7.4.4 편집기 열기 308
    • 7.5 뷰 상태 저장 309
      • 7.5.1 지역 뷰 정보 저장 309
      • 7.5.2 전역 뷰 정보 저장 312
    • 7.6 테스트 315
    • 7.7 이미지 캐시 315
    • 7.8 테이블 열 크기 자동 조정 317
    • 7.9 RFRS 고찰 319
      • 7.9.1 내비게이션 목적의 뷰 (RFRS 3.5.15) 319
      • 7.9.2 뷰는 즉시 저장한다 (RFRS 3.5.16) 320
      • 7.9.3 뷰 초기화 (RFRS 3.5.17) 320
      • 7.9.4 뷰 전역 액션 (RFRS 3.5.18) 321
      • 7.9.5 뷰 상태 보존 (RFRS 3.5.19) 321
      • 7.9.6 컨텍스트 메뉴 등록 (RFRS 5.3.5.8) 321
      • 7.9.7 뷰에 대한 액션 필터 (RFRS 5.3.5.9) 322
    • 7.10 요약 323
    • 7.11 참고자료 323
  • 8장 편집기 325
    • 8.1 편집기 선언 326
    • 8.2 편집기 파트 330
      • 8.2.1 편집기 메소드 330
      • 8.2.2 편집기 컨트롤 332
      • 8.2.3 편집기 모델 335
      • 8.2.4 컨텐트 프로바이더 341
      • 8.2.5 레이블 프로바이더 342
    • 8.3 편집 344
      • 8.3.1 셀 편집기 344
      • 8.3.2 셀 모디파이어 345
      • 8.3.3 변경 리스너 347
      • 8.3.4 셀 밸리데이터 348
      • 8.3.5 편집과 선택 349
    • 8.4 편집기 생명주기 350
      • 8.4.1 수정사항이 있는 편집기 351
      • 8.4.2 페이지 전환 352
      • 8.4.3 컨텐츠 저장 353
    • 8.5 편집기 액션 354
      • 8.5.1 컨텍스트 메뉴 354
        • 8.5.1.1 액션 생성 354
        • 8.5.1.2 컨텍스트 메뉴 작성 355
        • 8.5.1.3 컨텍스트 메뉴 동적 구성 356
      • 8.5.2 편집기 컨트리뷰터 357
        • 8.5.2.1 전역 액션 358
        • 8.5.2.2 최상위 메뉴 360
        • 8.5.2.3 툴바 버튼 361
        • 8.5.2.4 키보드 액션 361
      • 8.5.3 실행 취소/다시 실행 361
      • 8.5.4 클립보드 액션 369
    • 8.6 편집기 연결 369
    • 8.7 RFRS 고찰 369
      • 8.7.1 편집 또는 열람에는 편집기 사용 (RFRS 3.5.9) 369
      • 8.7.2 편집기 생명주기 (RFRS 3.5.10) 370
      • 8.7.3 전역 액션 접근하기 (RFRS 3.5.11) 371
      • 8.7.4 객체를 삭제했을 때 닫기 (RFRS 3.5.12) 371
      • 8.7.5 외부 변경사항 동기화 (RFRS 3.5.14) 371
      • 8.7.6 편집기 메뉴 등록 (RFRS 5.3.5.2) 372
      • 8.7.7 편집기 액션 필터 (RFRS 5.3.5.3) 372
      • 8.7.8 저장되지 않은 편집기 수정사항 (RFRS 5.3.5.4) 373
      • 8.7.9 변경된 리소스에 접두사 붙이기 (RFRS 5.3.5.5) 373
      • 8.7.10 편집기 아웃라인 뷰 (RFRS 5.3.5.6) 373
      • 8.7.11 아웃라인 뷰 동기화 (RFRS 5.3.5.7) 374
    • 8.8 요약 374
    • 8.9 참고자료 374
  • 9장 리소스 변경 추적 375
    • 9.1 IResourceChangeListener 375
      • 9.1.1 IResourceChangeEvent 376
      • 9.1.2 IResourceDelta 377
    • 9.2 변경 이벤트 처리 379
    • 9.3 변경 이벤트 일괄처리 382
    • 9.4 진행 모니터 383
      • 9.4.1 IProgressMonitor 383
      • 9.4.2 진행 출력에 관련된 클래스 384
      • 9.4.3 워크벤치 윈도우 상태 표시줄 385
      • 9.4.4 IProgressService 386
    • 9.5 지연된 변경 이벤트 387
    • 9.6 요약 388
    • 9.7 참고자료 388
  • 10장 퍼스펙티브 389
    • 10.1 퍼스펙티브 작성 389
      • 10.1.1 퍼스펙티브 확장점 390
      • 10.1.2 퍼스펙티브 팩토리 392
      • 10.1.3 IPageLayout 395
    • 10.2 기본 퍼스펙티브 개선 396
      • 10.2.1 뷰와 위치지정자 추가 398
      • 10.2.2 바로가기 추가 400
      • 10.2.3 액션 세트 추가 402
    • 10.3 RFRS 고찰 403
      • 10.3.1 장시간 소요 작업을 위한 퍼스펙티브 생성 (RFRS 5.3.5.10) 403
      • 10.3.2 기존 퍼스펙티브 확장 (RFRS 5.3.5.11) 403
      • 10.3.3 윈도우 메뉴에 액션 추가 (RFRS 5.3.5.15) 404
    • 10.4 요약 404
    • 10.5 참고자료 404
  • 11장 대화창과 마법사 405
    • 11.1 대화창 405
      • 11.1.1 SWT 대화창과 JFace 대화창 비교 406
      • 11.1.2 주요 SWT 대화창 406
      • 11.1.3 주요 JFace 대화창 407
      • 11.1.4 JFace 대화창 작성 409
      • 11.1.5 대화창 단위 412
      • 11.1.6 기본 대화창 위치와 크기 413
      • 11.1.7 크기 변경 가능한 대화창 413
      • 11.1.8 Favorites 뷰 필터 대화창 415
      • 11.1.9 세부사항 대화창 420
      • 11.1.10 대화창 열기-부모 셸 찾기 427
    • 11.2 마법사 429
      • 11.2.1 IWizard 430
      • 11.2.2 IWizardPage 432
      • 11.2.3 IWizardContainer 433
      • 11.2.4 중첩된 마법사 434
      • 11.2.5 마법사 실행 434
        • 11.2.5.1 마법사 확장점 434
        • 11.2.5.2 마법사 직접 실행하기 438
      • 11.2.6 마법사 예제 438
      • 11.2.7 대화창 설정 439
      • 11.2.8 선택사항 기반 페이지 컨텐츠 440
      • 11.2.9 이전 페이지 기반 페이지 컨텐츠 445
    • 11.3 RFRS 고찰 447
      • 11.3.1 마법사 룩앤필 (RFRS 3.5.2) 447
      • 11.3.2 편집기에서 새 파일 열기 (RFRS 3.5.6) 448
      • 11.3.3 새 프로젝트를 생성할 때 퍼스펙티브 전환 (RFRS 3.5.7) 448
      • 11.3.4 새 객체 보기 (RFRS 3.5.8) 448
      • 11.3.5 단일 페이지 마법사 버튼 (RFRS 5.3.5.13) 448
    • 11.4 요약 449
    • 11.5 참고자료 449
  • 12장 환경설정 페이지 451
    • 12.1 환경설정 페이지 생성 451
    • 12.2 환경설정 페이지 API 453
      • 12.2.1 FieldEditorPreferencePage 455
      • 12.2.2 필드 편집기 456
      • 12.2.3 PreferencePage 459
      • 12.2.4 Favorites 환경설정 페이지 461
      • 12.2.5 검증 462
      • 12.2.6 중첩된 환경설정 페이지 464
      • 12.2.7 탭 환경설정 페이지 466
    • 12.3 환경설정 API 467
      • 12.3.1 기본 환경설정 467
      • 12.3.2 환경설정 접근 468
      • 12.3.3 프로그램에서 기본 값 지정 471
      • 12.3.4 파일에서 기본값 지정 472
      • 12.3.5 Favorites 뷰 연동 472
      • 12.3.6 환경설정 변경 전달 473
    • 12.4 RFRS 고찰 474
      • 12.4.1 환경설정 대화창 사용 (RFRS 3.5.25) 474
    • 12.5 요약 475
    • 12.6 참고자료 475
  • 13장 프로퍼티 477
    • 13.1 프로퍼티 생성 477
      • 13.1.1 FavoriteItem 프로퍼티 477
      • 13.1.2 리소스 프로퍼티 479
    • 13.2 프로퍼티 대화창에서 프로퍼티 출력 481
      • 13.2.1 프로퍼티 페이지 선언 481
      • 13.2.2 리소스 프로퍼티 페이지 작성 484
      • 13.2.3 Favorites 항목 리소스 페이지 작성 486
      • 13.2.4 특성 대화창 열기 487
    • 13.3 특성 뷰에 프로퍼티 출력하기 488
      • 13.3.1 특성 뷰 API 489
      • 13.3.2 특성 뷰에서 Favorite 프로퍼티 출력 491
    • 13.4 특성 페이지를 환경설정 페이지로 재활용하기 493
    • 13.5 RFRS 고찰 495
      • 13.5.1 빠른 접근을 위한 특성 뷰 (RFRS 3.5.21) 495
    • 13.6 요약 495
    • 13.7 참고자료 495
  • 14장 빌더, 마커, 네이처 497
    • 14.1 빌더 499
      • 14.1.1 빌더 선언 499
      • 14.1.2 IncrementalProjectBuilder 502
      • 14.1.3 파생 리소스 509
      • 14.1.4 빌더를 프로젝트에 연관시키기 509
      • 14.1.5 빌더 호출 512
    • 14.2 마커 512
      • 14.2.1 마커 유형 513
      • 14.2.2 마커 생성과 제거 515
      • 14.2.3 마커 속성 517
      • 14.2.4 마커 해결-빠른 수정 520
      • 14.2.5 마커 찾기 525
    • 14.3 네이처 525
      • 14.3.1 네이처 선언 526
      • 14.3.2 빌더와 네이처 연관시키기 527
      • 14.3.3 IProjectNature 528
      • 14.3.4 필수 네이처 530
      • 14.3.5 네이처 충돌 530
      • 14.3.6 네이처 이미지 531
      • 14.3.7 프로젝트에 네이처 연관시키기 531
    • 14.4 RFRS 고찰 534
      • 14.4.1 리소스 변환에는 빌더 사용 (RFRS 3.8.1) 535
      • 14.4.2 기존 빌더 대체 금지 (RFRS 3.8.3) 535
      • 14.4.3 ‘빌드’ 용어 사용 주의 (RFRS 5.3.8.1) 535
      • 14.4.4 생성된 리소스에 ‘파생됨’ 표시 (RFRS 5.3.8.2) 536
      • 14.4.5 정리 빌드 요청에 대한 처리 (RFRS 5.3.8.3) 536
      • 14.4.6 가능한 한 IResourceProxy 사용 (RFRS 5.3.8.4) 537
      • 14.4.7 빌더는 반드시 네이처로 추가 (RFRS 5.3.8.5) 537
    • 14.5 요약 537
    • 14.6 참고자료 538
  • 15장 도움말 구현 539
    • 15.1 도움말 사용 539
    • 15.2 도움말 구현 542
      • 15.2.1 새 도움말 프로젝트 생성 542
      • 15.2.2 플러그인 내역서 파일 547
      • 15.2.3 목차 파일 548
      • 15.2.4 HTML 컨텐츠 작성 550
    • 15.3 컨텍스트 감지 도움말 (F1) 552
      • 15.3.1 컨텍스트 ID를 항목에 연관시키기 553
      • 15.3.2 IWorkbenchHelpSystem API 555
      • 15.3.3 컨텍스트 감지 도움말 컨텐츠 작성 556
      • 15.3.4 컨텍스트 확장점 557
      • 15.3.5 마커 도움말 560
    • 15.4 프로그램으로 도움말 접근 560
      • 15.4.1 특정 도움말 페이지 열기 561
      • 15.4.2 웹 페이지 열기 562
    • 15.5 치트 시트 563
      • 15.5.1 치트 시트 사용법 563
      • 15.5.2 간단한 치트 시트 작성 564
      • 15.5.3 치트 시트 액션 추가 568
    • 15.6 RFRS 고찰 570
      • 15.6.1 도움말 시스템으로 도움말 제공 (RFRS 3.7.2) 570
      • 15.6.2 도움말 시스템을 통해 모든 도움말 제공 (RFRS 5.3.7.1) 571
      • 15.6.3 F1을 사용해 컨텍스트 도움말 활성화하기 (RFRS 5.3.7.2) 571
      • 15.6.4 동적 도움말 구현 (RFRS 5.3.7.3) 571
      • 15.6.5 독립형 도움말 사용 (RFRS 5.3.7.4) 572
      • 15.6.6 추가 문서 사용 (RFRS 5.3.7.5) 572
      • 15.6.7 태스크 흐름 개요 제공하기 (RFRS 5.3.5.34) 572
      • 15.6.8 단 하나의 태스크만 설명하기 (RFRS 5.3.5.35) 573
      • 15.6.9 각 단계마다 도움말 링크 제공 (RFRS 5.3.5.36) 573
    • 15.7 요약 574
    • 15.8 참고자료 574
  • 16장 다국어 지원 575
    • 16.1 플러그인 내역서 구체화 576
    • 16.2 플러그인 문자열 구체화 578
    • 16.3 프래그먼트 사용 586
      • 16.3.1 프래그먼트 프로젝트 작성 587
      • 16.3.2 프래그먼트 내역서 589
      • 16.3.3 프래그먼트 프로젝트 컨텐츠 592
    • 16.4 요약 592
    • 16.5 참고자료 593
  • 17장 확장점 작성 595
    • 17.1 확장점 메커니즘 595
    • 17.2 확장점 정의 597
      • 17.2.1 확장점 생성 597
      • 17.2.2 확장점 스키마 작성 598
      • 17.2.3 확장점 요소와 속성 600
      • 17.2.4 확장점 요소 문법 604
    • 17.3 확장점 구현 코드 606
      • 17.3.1 확장 정보 해석 606
      • 17.3.2 프록시 생성 608
      • 17.3.3 실행 가능 확장 작성 610
      • 17.3.4 클린업 613
    • 17.4 확장점 문서화 613
    • 17.5 확장점 사용 615
    • 17.6 RFRS 고찰 616
      • 17.6.1 확장점 문서화 (RFRS 3.10.5) 616
      • 17.6.2 에러 기록 (RFRS 5.3.10.1) 617
    • 17.7 요약 617
    • 17.8 참고자료 618
  • 18장 피처, 브랜딩, 업데이트 619
    • 18.1 피처 프로젝트 620
      • 18.1.1 새 피처 프로젝트 생성 621
      • 18.1.2 피처 내역서 파일 623
      • 18.1.3 피처 내역서 편집기 624
    • 18.2 브랜딩 630
      • 18.2.1 about.html 파일 631
      • 18.2.2 about.ini 파일 632
      • 18.2.3 제품 브랜딩 634
    • 18.3 업데이트 사이트 636
      • 18.3.1 업데이트 사이트 프로젝트 작성 636
      • 18.3.2 site.xml 파일 638
      • 18.3.3 업데이트 웹사이트 641
      • 18.3.4 피처 내역서 다듬기 642
      • 18.3.5 업데이트 사이트 접근 643
    • 18.4 RFRS 고찰 646
      • 18.4.1 제품 브랜딩 오버라이드 금지 (RFRS 3.1.8) 646
      • 18.4.2 브랜드 적용 피처 출력 여부 (RFRS 5.3.1.9) 647
      • 18.4.3 귀속 정보 포함하기 (RFRS 5.3.1.10) 647
      • 18.4.4 about.html 파일 내용 (RFRS 5.3.1.11) 647
      • 18.4.5 스플래시 화면 제한 (RFRS 5.3.1.12) 648
    • 18.5 요약 648
    • 18.6 참고자료 649
  • 19장 제품 빌드 651
    • 19.1 Ant 간단히 살펴보기 651
      • 19.1.1 프로젝트 빌드 651
      • 19.1.2 빌드 타깃 652
      • 19.1.3 빌드 태스크 653
      • 19.1.4 빌드 프로퍼티 657
        • 19.1.4.1 사전정의된 프로퍼티 658
        • 19.1.4.2 프로퍼티 유효범위 659
        • 19.1.4.3 프로퍼티 가변성 661
        • 19.1.4.4 타깃 외부의 프로퍼티 661
        • 19.1.4.5 명령행 프로퍼티 662
      • 19.1.5 <antcall> 태스크 664
      • 19.1.6 macrodef 666
      • 19.1.7 콘솔에서 Ant 실행 668
      • 19.1.8 Ant 확장 669
    • 19.2 Favorites 제품 빌드 671
      • 19.2.1 자동 생성 빌드 스크립트 671
      • 19.2.2 Favorites 빌드 스크립트 리팩토링 676
        • 19.2.2.1 빌드 매크로와 빠른 중단 678
        • 19.2.2.2 빌드 초기화 679
        • 19.2.2.3 다중 프로젝트 빌드 681
        • 19.2.2.4 개별 프로젝트 빌드 683
      • 19.2.3 빌드 과정에서 직접 컴파일하기 689
      • 19.2.4 단일 바이너리와 다중 바이너리 비교 691
      • 19.2.5 다른 버전의 이클립스로 편집하기 692
      • 19.2.6 다른 버전의 이클립스에 대해 빌드하기 693
        • 19.2.6.1 코드 브랜치 694
        • 19.2.6.2 퍼사드 패턴 694
        • 19.2.6.3 전처리기 695
        • 19.2.6.4 프래그먼트 697
        • 19.2.6.5 이클립스 3.0을 위한 Favorites 예제 698
      • 19.2.7 클래스 경로 도구 700
      • 19.2.8 이클립스 3.0에 대해 빌드하기 702
      • 19.2.9 소스 코드 타깃 변경 704
      • 19.2.10 버전 확인 705
      • 19.2.11 다국어 지원 빌드 706
    • 19.3 요약 707
    • 19.4 참고자료 707
  • 20장 심화학습 709
    • 20.1 고급 프로젝트 검색-참조 709
    • 20.2 내부 코드 접근 710
      • 20.2.1 이클립스 뉴스그룹 711
      • 20.2.2 버그질라-이클립스 버그 추적 시스템 711
      • 20.2.3 내부 코드 접근과 관련된 옵션 712
      • 20.2.4 이클립스와 일반 자바 애플리케이션의 차이 713
      • 20.2.5 관련된 플러그인 713
      • 20.2.6 프래그먼트 사용 714
    • 20.3 어댑터 714
      • 20.3.1 IAdaptable 714
      • 20.3.2 어댑터 사용 715
      • 20.3.3 어댑터 팩토리 715
      • 20.3.4 IWorkbenchAdapter 718
    • 20.4 웹 브라우징 또는 메일 작성 718
      • 20.4.1 IWorkbenchBrowserSupport 718
      • 20.4.2 LaunchURL 720
      • 20.4.3 OpenEmailAction 720
    • 20.5 확장점에 지정된 타입 724
      • 20.5.1 파라미터 적용 타입 724
        • 20.5.1.1 구조화되지 않은 파라미터 725
        • 20.5.1.2 구조화된 파라미터 725
      • 20.5.2 다른 플러그인에서 클래스 참조하기 726
    • 20.6 이클립스를 수정하여 파트 식별자 찾기 727
      • 20.6.1 이클립스 베이스 코드 수정하기 727
      • 20.6.2 전역 액션 작성 729
      • 20.6.3 새 유틸리티 테스트 731
      • 20.6.4 이클립스에 변경사항 제출 731
    • 20.7 레이블 데코레이터 732
      • 20.7.1 레이블 데코레이터 선언 733
      • 20.7.2 ILightweightLabelDecorator 734
      • 20.7.3 장식전용 레이블 데코레이터 736
      • 20.7.4 IDecoratorManager 737
    • 20.8 백그라운드 작업-Jobs API 739
    • 20.9 플러그인 클래스 로더 742
    • 20.10 이른 시동 747
      • 20.10.1 이른 시동 관리하기 747
      • 20.10.2 이른 시동 끄기 748
    • 20.11 리치 클라이언트 플랫폼 748
    • 20.12 결론 749
    • 20.13 참고자료 750
  • 부록 A 이클립스 플러그인과 리소스 751
    • A.1 플러그인 751
      • A.1.1 CodePro AnalytiX와 CodePro PlusPak 751
      • A.1.2 EclipseProfiler 753
      • A.1.3 EclipseUML 754
      • A.1.4 MyEclipse Enterprise Workbench 755
      • A.1.5 WindowBuilder Pro 757
      • A.1.6 XMLBuddy 758
    • A.2 리소스 760
      • A.2.1 Eclipse.org 760
      • A.2.2 Eclipse Plug-in Central 761
      • A.2.3 Eclipse plug-in site 762
      • A.2.4 Eclipse wiki wiki 762
      • A.2.5 EclipseCon 762
      • A.2.6 Eclipse용 ANTLR 플러그인 762
      • A.2.7 Bugzilla 플러그인 762
      • A.2.8 Coloring editor 762
      • A.2.9 Eclipse Easter eggs 762
      • A.2.10 IBM Alphaworks on Eclipse 763
      • A.2.11 IBM Eclipse research 763
      • A.2.12 PHP plug-in for Eclipse 763
      • A.2.13 QNX’s Momentics 763
      • A.2.14 QuickShare: XP programming for Eclipse 763
      • A.2.15 Sangam: XP programming for Eclipse 763

관련 블로그 글

『이클립스 실전 플러그인 개발』이 출간되었습니다!
사무실 곳곳에 듬성듬성 빈 자리도 보이고 뭔가 분주한 여름 휴가 시즌입니다. 비어버린 펌프에 물을 펑펑 샘솟게 하는 건 그저 조그만 한 바가지 물이면 충분합니다. 그동안 열심히 일하셨던 만큼 때로는 작은 비움이 큰 채움을 위한 충전의 힘이 되기도 합니다. 즐거운 휴식이 함께 하기에 더욱 여유로운 이 여름, 한바탕 시원한 비가 아침부터 퍼부은 첫 주의 시작 월요일, 많은 분이 기다려주신 『이클립스 실전 플러그인 개발』이 드디어 출간되었습니다.

2006년 11월 출간되었던 『이클립스 RCP』에 이어 이번에도 번역을 맡은 양석호님이 『이클립스 RCP』 출간파티에 바쁜 결혼 일정때문에 참석하지 못했던 것이 못내 아쉬웠던지 오늘은 출간 소식을 듣고 무더위를 헤치고 득달같이 달려오셨습니다. 역자분들이나 저자분들이 책을 손에 쥐고 뿌듯해 하는 모습을 옆에서 지켜보는 건 책을 함께 만든 편집자로서 정말 가장 보람을 느끼는 순간인 듯도 합니다. 번역이 끝나자마자 다음 책을 열심히 준비중인 석호님이 오늘은 저녁식사를 함께 하며 이클립스로 개발하고 있는 재미있는 번역용 IDE 데모를 보여주셨습니다. :D 조만간 이 프로젝트가 성공하면 에이콘 역자들께는 이 애플리케이션을 무료(!)로 나눠드리게 될지도 모르겠네요. ^^; 막강 최고 실력의 개발자분들이 번역을 맡으시면서 번역이나 출간 작업에 들어가는 편집 시간이나 노력을 줄여주시겠다고 이렇듯 뭔가를 하나씩 만들어내실 때마다 요술방망이를 부리는 착한 도깨비라도 만난 듯합니다. 석호님의 선전을 기대하며. :)

한글판과 영문판 이클립스 사용자를 고려하여 한글과 영문 메뉴명을 병기하며 독자들의 이해를 높이기 위해 애쓰고, 마지막까지 문장을 골라내고 리뷰하느라 열심히 노력한 역자 석호님의 노고에 감사하며, 이 책이 상용 수준의 이클립스 플러그인을 개발하려는 독자들께 훌륭한 가이드 역을 맡아 줄 것을 기대해봅니다.

CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

이클립스 플러그인 개발서 출간 예정!
(에릭 클레이버그 · 댄 루벨 지음 | 양석호 옮김 | 856페이지 |
2007년 8월 6일 출간 | 35,000원)

자바 개발도구라고만 여겼던 초창기 모습에서 벗어나, 지금 이클립스는  C/C++, Ruby, PHP 등 다양한 개발 도구들을 담을 수 있는 범용 플랫폼의 위용을 갖췄습니다. 플러그인이라는, 당시로서는 특이한 아키텍처를 바탕으로 빠르게 발전해온 이클립스는 다양한 언어 지원뿐만 아니라 확장 기능을 제공하는 수많은 플러그인으로 개발 환경의 새로운 패러다임을 만들어 냈습니다.

이클립스 플랫폼 위에서는 누구나 플러그인을 개발함으로써 각자의 개발 용도나 취향에 맞게 개발 환경을 꾸미고 자신의 필요에 따라 기능을 확장할 수도 있습니다. 또한 최근 업계에서도 이클립스 기반 프로젝트나 상용 제품을 만들어내는 회사들이 많아지면서 이클립스 플러그인 개발에 대한 레퍼런스의 필요성이 더욱 더 높아지고 있습니다. 반면 이클립스를 확장하는 플러그인을 비교적 쉽게 개발할 수 있다는 사실조차 잘 알고 있는 개발자들이 아직은 많지 않은 상황이기도 합니다.

2004년 첫 출간된 이후로 2판이 출간되고 지금까지 이클립스 플러그인 개발자들의 완소서적이었던 『Eclipse: Building Commercial-Quality Plug-ins, 2nd Edition』의 번역서가 드디어 에이콘 이클립스 프로페셔널 시리즈의 4번 타자로서『이클립스 실전 플러그인 개발』라는 제목을 달고 곧 독자를 찾아갑니다.

이 책은 이클립스 발표 이후 지금까지 이클립스 기술 상용화에 앞장서 왔던 Instantiations 사가 저술했습니다. 전세계적으로 이클립스 플랫폼 기술 전파의 주된 역할을 해오고 있는 독보적인 책을 국내 이클립스 개발자들에게 선보일 수 있게 되어 저희도 자랑스럽게 생각합니다.

번역을 맡은 양석호님은 2004년 처음 책을 읽고 큰 도움을 받았기에 언젠가 이 책을 번역해서 국내에 꼭 소개하고 싶었다고 합니다. 2005년 네이버 이클립스 플러그인 카페를 만들어 운영하게 되었고 이후 2판이 출간되어 에이콘 이클립스 시리즈 에디터로서 에이콘과 함께 번역서를 기획해 이제 그 결실을 보게 되었습니다.

석호님은 『SWT/JFace 인 액션』의 감수를 맡아 딱 1년 전 7월 여름밤에도 몇 번의 밤샘 작업을 같이 하기도 했고. 작년 혼인을 며칠 앞두고 『이클립스 RCP』를 번역 출간했습니다. 이클립스에 대한 석호님의 열의는 놀랄 만큼 대단하시죠. 그리고 이번 책의 편집을 맡아 열심히 좋은 책 만들어주시고 편집자 필명까지 지은 황우님도 며칠 째 고생이 많으십니다. 좋은 분들과 마무리한 책 손에 들고, 여름이 더욱 뜨겁게 달아오를 8월 6일, 독자분들을 찾아뵙겠습니다. :)

이 책은 지금 교보문고, Yes24, 강컴, 알라딘 등에서 예약 판매를 하고 있습니다. (+ Yes24 링크페이지 업데이트했습니다)

CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

 1쇄 오류/오탈자 

[ p576 첫 번째 코드 ]
5행, 9행 볼드 적용
name="Quality Eclipse"
(중략)
name="Favorites"

[ p576 두 번째 코드 ]
5행 볼드 적용
name="%favorites.category.name"

[ p577 첫 번째 코드 ]
2행 볼드 적용
name="%favorites.view.name"

[ p577 마지막 문장 ]
표준 프랑스어 번역 파일의 이름은 plugin_de.properties이며
→ 표준 프랑스어 번역 파일의 이름은 plugin_fr.properties이며