1. Eclipse RCP란?
이클립스 RCP 응용프로그램은 Eclipse 플랫폼 기술을 기반으로한 독립 실행형 응용 프로그램입니다….라는 것인데
주구장창 설명도 하겠지만 요약해서 말하자면
RCP는 이클립스의 뼈대를 기반으로, 이클립스에서 사용할 수 있었던 기능(코드 작성 에디터, 텍스트 찾기, 프로젝트 관리, 디버그 실행, 컴파일 등)을 개발자의 입맛에 맞게 개발자가 원하는 프로그램을 작성할 수 있도록 기능(플러그인,번들)들을 자유롭게 사용할 수 있게 도와주는 프레임워크를 말합니다.
"어? 코드 작성 에디터가 필요한데? 이클립스의 코드 작성 에디터를 상속받아서 구현하면 쉽게 구현할 수 있잖아?"
이클립스 프레임워크와 같은 프로그램을 제작할 수 있도록 도와주는 것이 RCP입니다.
Eclipse RCP는 Rich Client Platform의 약자로 이클립스 플랫폼을 기초로한 풍부한 기능을 갖춘 독립 실행형 어플리케이션을 뜻합니다.
이클립스 RCP응용프로그램은 기존 사용자 인터페이스와 인터널 프레임워크, 그리고 기존 플래그인과 기능을 재사용할 수 있게 도와주는데,
대표적으로 플러그인의 집합(SWT, JFace, Workbench UI)을 사용할 수 있게 해주며, 이러한 플러그인의 집합을 실행하고 결합하는 런타임(Platform Runtime - based on OSGi)으로 구성되어 있습니다.
예를 들어, 이클립스의 응용프로그램 중 Java Development Tools(JDT)는 자바 응용프로그램 개발 기능에 초점을 맞춘 기능을 제공하는 것처럼, 몇 가지 기본 컴포넌트를 기반으로 다른 컴포넌트들을 사용하고 그것들 위에 확장된 기능을 제공해줍니다.
2. RCP의 아키텍처
위의 아키텍쳐처럼 런타임 계층과 EMF 계층에서 다른 플러그인이나 추가적인 인터페이스 컴포넌트, 데이터 모델 등 의존성을 자체적으로 해결해주고 플러그인을 결합해줍니다.
3. Eclipse RCP의 장점
Eclipse 플랫폼은 자바 IDE의 기초를 베이스로 만들어졌기 때문에 매우 안정적입니다.
기본적으로 빠르고 안정적인 네이티브 사용자 인터페이스 컴포넌트를 제공하는데, 이것은 개발자가 컴포넌트 기반 시스템을 설계 할 수 있도록 강력한 모듈화의 기능을 제공합니다.
IBM, SAP와 Google 같은 회사들은 자사의 제품과 Eclipse 프레임워크를 사용함으로써 유연하고 빠른 퍼포먼스를 보여줍니다.
4. RCP의 핵심 컴포넌트
OSGi는 위의 런타임 계층의 아키텍처에서 본 것 과 같이 컴포넌트 기반 자바 응용프로그램을 개발하기 위한 모듈식 접근을 도와주는 프레임워크입니다.
OSGi의 프로그래밍 모델은 동적 소프트웨어 컴포넌트를 정의하여 OSGi의 서비스를 이용할 수 있습니다.
OSGi는 플러그인(번들)마다 각각의 클래스로덜르 갖도록 클래스 로딩을 나누어서 번들과 번들의 코드를 관리합니다. 번들의 클래스 경로는 Manifest.MF로 지정됩니다.
이키녹스(Equinox)는 OSGi 사양과 이것의 런타임으로서 이클립스 플랫폼을 사용해주는 계층입니다.
이 이키녹스 런타임 또한 필요한 API와 모듈 이클립스 어플리케이션을 실행하기 위한 프레임워크를 제공함합니다.
SWT는 이클립스에 사용되는 표준 사용자 인터페이스 컴포넌트입니다.
JFace는 SWT상위의 몇가지 편리한 API를 제공합니다.
워크벤치는 모든 다른 사용자 인터페이스 컴포넌트를 표시하는 어플리케이션을 위한 프레임워크를 제공합니다.
EMF는 데이터 모델을 모델링하는 기능을 제공하고 런타임시 이 데이터 모델을 사용하는 이글립스 모델링 프레임워크(Eclipse Modeling Framework)입니다.
EMF에 관해서는 추후에 다른 포스트에서 다루겠습니다.
5. Plugin.xml
RCP 프로그래밍에서 가장 중요한 역할을 하는 것이 이 Plugin.xml입니다. 프로젝트의 기본 환경설정을 진행하며 프로젝트에서 사용되는 플러그인(번들)을 정의하고 사용하는 것을 지정하며, 확장과 확장포인트를 추가할 수 있도록 해줍니다.
RCP하면 이 Plugin.xml을 떠올려주시면 됩니다!
사용방법에 관해서는 자세히 다른 포스트에서 다루도록 하겠습니다.
'Java > RCP&GEF' 카테고리의 다른 글
Eclipse 4 RCP 정리 (0) | 2020.09.09 |
---|---|
Eclipse RCP SWT Image Path 지정 방법 (0) | 2020.07.27 |
[GEF] Eclipse GEF 3.11 다운로드 방법 (0) | 2020.04.02 |
Eclipse GEF - Editor를 화면에 띄우는 방법 (0) | 2020.04.02 |
Eclipse RCP - plugin.xml에서 View의 데이터 다른 View로 옮기기 (0) | 2020.04.01 |