Eclipse RCP Tutorial 1

작성일: 2010. 10. 27.

원문: http://www.vogella.de/articles/EclipseRCP/article.html Version 5.1

이클립스 RCP

이 튜토리얼은 이클립스 RCP 어플리케이션을 개발하는 방법을 적고있다. 이클립스 3.6(헬리오스)에 기반을 두고 있다.

이클립스 RCP

다음에 나오는 내용은 이미 이클립스 IDE를 사용하는 방법을 안다고 가정하고 있다.

개요

이클립스 RCP 는 개발자가 이클립스 플랫폼을 이용하여 유연하고 확장성있는 데스크탑 어플리케이션을 작성하도록 한다. 이클립스는 플러그인 아키텍처를 기반으로 설계되었다. 플러그인은 이클립스에서 배포와 설치가 가능한 가장 작은 소프트웨어 컴포넌트이다. 이 아키텍처는 이클립스 어플리케이션이 서드 파티에 의해 확장될 수 있도록 한다. 이클립스 RCP 는 독립형 어플리케이션에도 동일한 모듈 개념을 제공한다.

이클립스 IDE의 컴포넌트들은 일반적으로 다음과 같다.

이클립스 RCP 어플리케이션은 이들 컴포넌트들의 부분들을 사용하는 것을 결정할 수 있다. 이것은 양식없는 이클립스 기반의 어플리케이션을 설계하는 것을 가능하게 하고, 단지 런타임만 필요하다. 이클립스 RCP 어플리케이션은 일반적으로 다음을 사용한다.

이클립스 RCP 어플리케이션(UI 포함)을 작성하고 실행하기 위해 필요한 최소한의 플러그인은 “org.eclipse.core.runtime” 과 “org.eclipse.ui” 이다.

OSGI 런타임은 모듈형 어플리케이션을 구동할 수 있는 프레임워크를 제공한다. SWT 는 이클립스에서 사용되는 표준 UI 컴포넌트 라이브러리이고 JFace 는 SWT 위에서 편리한 API 를 제공한다. 워크벤치는 다른 모든 UI 컴포넌트들이 보여지는 어플리케이션의 프레임을 제공한다.

이클립스 RCP 아키텍처

이클립스의 가장 중요한 아키텍처상의 특징은 플러그인 아키텍처이다. 이클립스 어플리케이션은 API와 종속성이의되어 있는 수많은 플러그인으로 구성되어있다. 이 아키텍처는 OSGI 의 참조 구현인 Equinox 런타임 환경을 기초로 하고 있다. 이클립스는 “Plugin” 이라는 용어를 사용하고 OSGI 는 “bundle” 이라는 용어를 사용하지만, 두 용어의 뜻은 같다. OSGI는 이클립스 플러그인이 다음을 정의하도록 한다.

  • their API - 다른 플러그인이 사용할 수 있는 공개된 클래스들
  • their 종속성 - 플러그인이 정확히 동작할 수 있는데 필수적인 패키지나 플러그인들

각 플러그인은 다른 플러그인들을 통해 기능을 기여하는 것이 가능하도록 정의하는 확장점을 정의하고 있다. 플러그인은 확장(이 확장점을 기능적으로 제공하는)을 이용할 수 있다.

확장과 확장점은 plugin.xml 파일에 기술된다. 이 파일은 PDE(플러그인 개발 환경)을 통해 편집될 수 있는 XML 파일이다. PDE 는 이 파일을 편집할 수 있는 사용자 인터페이스를 제공한다. 이 확장들은 이클립스 RCP 어플리케이션이 구동될 때 수집된다. 확장점의 정보는 디스크립터로 불리는 것으로 변환되고 레지스트리에 저장된다.

이클립스 RCP 어플리케이션의 주요 컴포넌트

이클립스 RCP 어플리케이션은 다음의 요소들을 필요로 한다. 컴포넌트의 정의는 이 튜토리얼의 후반부에서 설명될 것이다.

  • 메인 프로그램 - RCP 메인 어플리케이션 클래스는 IApplication 인터페이스를 구현한다. 이 클래스는 표준 자바 어플리케이션을 위한 메인 메소드와 동일하다고 볼 수 있다. 이클립스는 어플리케이션 클래스가 org.eclipse.core.runtime.application 확장점을 통해서 정의되는 것을 기대한다.
  • 퍼스펙티브 - 퍼스펙티브는 org.eclipse.ui.perspective 에서 확장된다.
  • 워크벤치 어드바이저 - 어플리케이션의 외형(메뉴, 툴바, 퍼스펙티브 등등)을 제어하는 보이지 않는 기술적 컴포넌트이다.

설정 파일

이클립스 RCP 어플리케이션은 두 개의 주요 설정 파일을 가진다.

  • MANIFEST.MF - OSGI 설정 정보를 포함한다.
  • plugin.xml - 확장과 확장점에 대한 정보
Share Comments