원문 : http://www.eclipse.org/articles/Article-RCP-1/tutorial1.html
이런것을 해보세요 : Eclipse를 아직 본적이 없고 무슨 language로 만들어졌는지 물어보는 친구들과 동료들에게 Eclipse를 보여주십시요. 아마도 VB,C++또는 C#으로 만들어진 것으로 사람들은 추측할 것입니다. 왜냐하면 높은 퀄리티의 client side app를 만드는데 자주 쓰이는 language들이기 때문일겁니다. 그들에게 Eclipse는 Java로 만들어졌다고 말해줬을때 표정을 한번 보세요, 특히 자바 개발자 친구/동료들을 주목해서.
Eclipse의 독특한 오픈소스라이센스 때문에 자신만의 좋은 프로그램을 만들기위해 Eclipse 기술을 사용할 수 있습니다. 3.0 이전 버전에서도 가능했지만 사용하기가 어려웠습니다. 특히 Menu, Layout과 여러 UI 요소들을 Customize하기가 어려웠습니다. 왜냐하면 Eclipse의 "IDE-ness"(?)가 UI 구성원들과 연관성이 크기 때문입니다. 3.0 버전에서 소개된 Rich Client Platform(RCP)는 Eclipse UI의 근본적인 부분을 기본적으로 재구성했고, non-IDE application으로 사용할 수 있습니다. 3.1버전에서 RCP는 새로운 확장성들이 포함되었고 특히 중요한 점은 이전 버전 보다 더 쉽게 Eclipse UI들을 만들 수 있는 새로운 툴들이 포함되었습니다.
각설하고 바로 코드를 보고 싶으면 accompanying zip file에서 파일들을 찾을 수 있다. 이제 RCP application이 어떻게 만들어지는 지 보도록 하자.
RCP application들은 기본적으로 Eclipse 플러그인 구조와 비슷하다. (만약 그렇지 않다고 느껴지면 참고 섹션을 봐라.) 그러므로 main 프로그램을 플러그인으로 생성해야한다. Eclipse의 Plug-in Development Environment (PDE)는 몇가지 간단한 과정을 건너뛸 수 있는 여러 마법사 들과 편집기들을 제공한다. PDE는 지금 여러분들이 사용하고 있는 Eclipse SDK download에 포함되어있다. 시작하기 위해는 다음 단계들을 따라해야한다.
첫째로, Eclipse를 켜고 File>New>Project 를 선택한다. Plug-in Development를 선택해서 Plug-in Project를 더블 클릭하면 플러그인 프로젝트 마법사가 뜬다.표시된 페이지에 여러분의 Java프로젝트를 지칭하는 프로젝트명을 org.eclipse.ui.tutorials.rcp.part1 처럼 입력하고 Eclipse의 버전(3.1 이상)을 선택한다. 그리고 "Create an OSGi bundle manifest" 옵션을 선택한다. 다되었다면 Next> 를 클릭.
Eclipse 3.1을 시작할때 여러분들은 OSGi bundle menifest 덕분에 최고의 결과물을 얻을 수 있다. 이전 버전 과는 다르게 기본으로 제공된다.
마법사의 다음페이지에서 여러분들은 Plug-in ID와 여러 Parameter들을 변경할 수 있습니다. 특히 주의해야할 것은 "Would you like to create a rich client application?" 입니다. Yes를 선택합니다. 만들어지는 플러그인의 class는 옵션 이지만 이 예제에서는 다른 모든 옵션들을 기본값으로 설정합니다. Next>를 클릭해서 진행합니다.
만약 Eclipse의 환경을 Plug-in Development 상태로 변경할 것인지를 묻는 창이 뜬다면 "Remember my decision"을 선택하고 Yes를 누릅니다. (이것은 선택 입니다. 맘대로하세용~ ㅋ)
Eclipse 3.1을 시작하면 RCP application을 맛볼 수 있는 몇가지 예제들을 제공합니다. 우리는 가장 간단한 예제를 사용해서 RCP application이 어떻게 동작하는지 볼 것 입니다. "Create a plug-in using one of templetes"가 체크되어있는지 확인을 하고 "Hello RCP" 예제를 선택합니다. 이것이 RCP의 "Hello, world" 입니다. Finish를 클릭하고 모든 기본값들상태로 프로젝트를 생성합니다. (그림 1 참고). Eclipse는 Plug-in Menifest 편집기를 열게됩니다. Plug-in Menifest 편집기는 여러분의 RCP application을 설정하는 다양한 설정 파일들을 익숙한 형태로 보여줍니다.

그림 1. PDE마법사가 "Hello World" RCP 프로젝트를 만들었다.
RCP application들을 실행하려면 몇가지 귀찮은 작업들이 있다. launch configuration을 만들어야하고 정확한 application을 넣어야하고 포함된 일부 플러그인들을 수정해야한다. 하지만 고맙게도 PDE가 이 모든 것들을 처리해준다. 여러분들이 할것은 단지 Plug-in Menifest 편집기의 Overview 화면에서 "Launch an Eclipse application"을 누르는 것 뿐이다. 누르면 내장된 Workbench가 나타나다. (그림 2 참고)
그림 2. 템플릿을 사용하면 RCP applicatoin을 몇분안에 실행할 수 있다.
product - (제품 이라고 해석할 수 있지만 RCP에서 마지막 export하는 것을 product라고 칭하니 고유명사처럼 이건 그냥 쓰겠다.)
Eclipse에서 "product"는 여러분의 application, 그와 연관있는 모든 플러그인들. application을 실행하는 command (Native Launcaher라고 부른다.(ex:exe파일)) 그리고 여러분의 application을 구분 짓는 상표(아이콘 등) 등 모든 것을 말한다. 비록 우리는 "product"를 정의하지 않고 RCP application을 실행해 보았지만, Eclipse외부 프로그램을 실행하기 위해 아주 쉽게 만들어진 것이다. 이것이 RCP개발을 위해 Eclipse 3.1이 가져온 아주 큰 혁신이다.
더 복잡한 여러 RCP 템플릿들은 product 정의를 가지고 있지만 Hello RCP 템플릿에는 들어있지 않다. 그래서 우린 product 정의를 하나 해야만한다.
Product를 만들기 위한 가장 쉬운 방법은 프로젝트에 product configuration 파일을 추가하는 것이다. Plug-in project에서 오른쪽 클릭을 하고 New > Product Configuration 을 선택한다. 그리고 configuration 파일의 part.product 같은 새로운 이름을 넣는다 . 다른 옵션들은 기본으로 해두고 Finish를 클릭한다. 그러면 Product Configuration 편집기가 표시된다. 이 편집기는 모든 플러그인들과 상표들을 포함한 여러분의 product가 만들어지도록 정확하게 제어한다.
새로운 product extension을 만들기 위해 Overview 페이지에서 New...버튼을 누른다. Defining plug-in에 (org.eclipse.ui.tutorials.rcp.part1)이라고 치거나 선택한다. product라고 Product ID란에 치고 Product Application은 org.eclipse.ui.tutorials.rcp.part1.application을 선택한다. Finish 를 클릭한다. Overview 페이지로 다시 돌아가서 Product Name에 새로운 이름을 입력한다 예를들어 RCP Tutorial1 같은.
만약 Eclipse 3.1.0을 사용하는 분들중에 Product Name을 작성하기전에, Problems view에 애러가 표시된다.이 애러는 입력이 시작되면 없어진다. 이것은 이미 알려진 버그로 새버전에서는 수정되었다. 여러분들이 사용하는 Eclipse 버전의 최신 수정 릴리즈를 항상 사용해라!
Configuration 탭을 선택하고 "Add..." 를 누른다. 그리고 여러분이 생성한 플러그인(org.eclipse.ui.tutorials.rcp.part1)을 선택하고 Add Required Plug-ins에서 클릭한다. Overview 페이지로 돌아와 Ctrl+S 또는 File>Save를 눌러 작업을 저장한다.
만약 여러분의 Application이 실행중 결정할 수 없는 플러그인(예를들어 tomcat 플러그인)이 필요하다면 그때는 직접 Configuration tab에 추가해주어야한다.
이떄 여러분들은 product가 정확히 동작하는지 테스트 해봐야한다. Overview 페이지에 있는 Testing 섹션에서 Synchronize를 누르고 Launch the product를 클릭한다. 제대로 진행이되면 예전처럼 Application은 동작할 것이다.
Overview 페이지에서 여러분들은 product configuration이 plug-in 기반인지 또는 features 기반인지를 말해주는 옵션을 보았을 것이다. configuration의 가장 간단한 종류는 plug-ins를 기반으로 한것이다. 그래서 이 튜토리얼에서 사용하였다. 만약 여러분의 product를 자동적으로 업데이트하거나 Java Web Start 제공이 필요하다면 configuration이 features를 사용하도록 변경해야합니다. 그러나 일단 내 말에따라 우선 그것들(features)을 생각말고 product를 동작시켜라.
이 모든 것들은 사용자들이 내부에서 사용되어진 Java와 Eclipse code에대해 알필요없이 독립형 application들을 배포하고 실행할 수 있게하기 위한 것이다. 여러분들은 아마도 Install Shield 또는 NSIS와 같은 설치 프로그램에 의해 생성된 실제 프로그램이 자체적으로 실행되기를 원할 것이다. 어쨌든 저것들은 이 글과는 동떨어진 이야기이다. 그래서 우린 좀 더 단순히 해야한다.
Eclipse plug-in loader는 어떤 레이아웃안에 있기 위한 것들을 예상한다. 그래서 우리는 Eclipse의 버전을 단순화한 설치 디렉토리를 만들어야한다. 이 디렉토리는 실행프로그램, 설정파일, product와 연관된 모든 플러그인들을 포함해야한다. 다행히도 우리는 PDE에게 이 모든 것들을 처리할 수 있는 충분한 정보를 주었다.
Product Configuration 편집기의 Exporting 섹션에서 "Use the Eclipse Product export wizard." 를 클릭한다. root 디렉토리를 RcpTutorial1로 설정한다. 특정 디렉토리에 배포하기위해 옵션을 선택하고 C:\Deploy와 같은 임시 저장소를 입력한다. 만약 여러분들이 오픈 소스 프로젝트들을 만들고 있다면 소스포함 옵션을 체크한다. Finish를 눌러 빌드하고 프로그램을 내보낸다.
소스와 class파일의 호환성을 위헤 Eclipse Product export wizard에 있는 컴파일러 옵션은 여러분들의 프로젝트 또는 global preferences에 설정한 옵션으로 덮어씌워질 것이다.내보내기 과정중에 일부의 플러그인은 옵션들을 사용한 Ant 스크립트에 의해 재컴파일된 코드이다.
이제 application은 Eclipse 외부에서 실행될 준비가 되었다. 여러분들이 작업을 마치면 여러분의 배포 디렉토리는 다음과 같은 구조가 된다.
RcpTutorial1
| .eclipseproduct
| eclipse.exe
| startup.jar
+--- configuration
| config.ini
+--- plugins
org.eclipse.core.commands_3.1.0.jar
org.eclipse.core.expressions_3.1.0.jar
org.eclipse.core.runtime_3.1.2.jar
org.eclipse.help_3.1.0.jar
org.eclipse.jface_3.1.1.jar
org.eclipse.osgi_3.1.2.jar
org.eclipse.swt.win32.win32.x86_3.1.2.jar
org.eclipse.swt_3.1.0.jar
org.eclipse.ui.tutorials.rcp.part1_1.0.0.jar
org.eclipse.ui.workbench_3.1.2.jar
org.eclipse.ui_3.1.2.jar
모든 플러그인들은 jar 파일 형태로 만들어진다는 것을 알아두십시요. 이것은 Eclipse 3.1에서 시작한 추천 format입니다. 그중에 이것은 만들어진 application의 disk space에 저장됩니다.
이 강좌의 이전 버전에서는 여러분들의 RCP 프로그램을 실행시킬때 shell 스크립트 또는 배치 파일을 사용할 것을 추천했었습니다.이것은 이후에 여러분들의 application을 완벽하게 제품화 할 수 없기때문에 좋지 않은 방법입니다. 예를 들어 여러분들은 창을 추가할 수 없고, 내보내기 마법사는 배치 파일을 지원하지 않아 실행파일을 접근할 수 없습니다.
자 이제 해보세요! Eclipse 외부에서 실행파일(기본적으로 eclipse 또는 eclipse.exe)을 실행하고 application이 뜨는지 지켜보십시요. 실행화면의 이름은 product configuration의 branding options 에서 조정할 수 있습니다.
Error : Lanunching failed because the org.eclipse.osgi plug-in is not included...
여러분들이 product를 만들 플러그인들의 리스트를 빠뜨렸다면 테스트할때 위의 애러가 나올 수 있습니다. Product Configuration 편집기에서 Configuration tab을 선택하고 위의 메세지에 나온 플러그인들을 추가하십시요.
만약 2.1버전에서 3.1버전으로 이전을 하려면 주의해야할 점들이 온라인 문서에 쓰여져 있습니다. 만약 3.0에서 3.1의 스탭을 줄이면 그 차이도 줄어듭니다. 더 많은 정보를 보려면 참조를 보세요.
조언 한마디 : plug-in.xml과 MANNIFEST.MF의 정보가 중복되지 않도록 조심하십시요. 일반적으로 MANIFEST.MF를 사용하지 않는 plug-in.xml을 사용하도록 변경하지 않는다면 발생하지 않습니다. PDE를 통해서가 아니라 손으로 파일들을 수정하면 발생할 수 있습니다.
이 part1 강좌에서 우리는 Rich Client 어플리케이션의 뼈대를 만드는데 무엇이 필요한지 알아보았습니다. 다음 강좌는 마법사를 통해 만들어지는 orkbenchAdvisor 클래스와 같은 클래스들을 개발해볼겁니다. 이 강좌의 모든 샘플 코드들은 여기에 있습니다.
RCP Tutorial Part 2
RCP Tutorial Part 3
Eclipse Rich Client Platform
RCP Browser example (project org.eclipse.ui.examples.rcp.browser)
PDE Does Plug-ins
How to Internationalize your Eclipse Plug-in
Notes on the Eclipse Plug-in Architecture
Plug-in Migration Guide: Migrating to 3.1 from 3.0
Plug-in Migration Guide: Migrating to 3.0 from 2.1
To discuss or report problems in this article see bug 104146.