Eclipse의 개념

Eclipse는 처음부터 통합된 웹 및 응용프로그램 개발 도구를 빌드하도록 설계되었습니다. 설계상 대부분의 일반 사용자가 사용할 수 있는 기능을 제공하는 플랫폼은 아닙니다. 이 플랫폼은 플러그인 모델을 기반으로 한 통합 기능의 신속한 개발을 가능하게 한다는 점에 그 가치가 있습니다.

Eclipse는 도구에 대한 작업을 위해 공통 UI(User Interface) 모델을 제공합니다. Eclipse는 각 주요한 OS와의 강력한 통합을 제공하면서 다중 운영 체제에서 실행되도록 설계되었습니다. 플러그인은 Eclipse 이식 가능 API에 대해 프로그램할 수 있으며, 지원되는 모든 운영 체제에서 변경되지 않고 실행할 수 있습니다. 

Eclipse의 코어에는 플러그인의 동적 발견, 로드 및 실행을 위한 아키텍처가 있습니다. 플랫폼은 올바른 코드를 찾아 실행하는 논리를 처리합니다. 플랫폼 UI는 표준 사용자 탐색 모델을 제공합니다.  그러면 각 플러그인이 소수의 타스크를 수행하는 데 초점을 맞출 수 있습니다. 타스크 유형에는 다음과 같은 사항이 있습니다. 정의, 테스트, 애니메이팅, 출력, 컴파일, 디버깅, 다이어그램...등과 같이 다양한 종류의 타스크가 있습니다.

개방 아키텍처

Eclipse 플랫폼은 각 플러그인 개발 팀이 전문 분야에 초점을 맞출 수 있도록 개방 아키텍처를 정의합니다. 저장소 전문가들이 백엔드를 빌드하고, 가용성 전문가들은 일반 사용자 도구를 빌드합니다. 플랫폼이 제대로 설계되면, 다른 도구에 영향을 주지 않고 중요한 새 기능과 통합 레벨을 추가할 수 있습니다.

Eclipse 플랫폼은 공통 Workbench 모델을 사용하여 일반 사용자의 관점에서 도구를 통합합니다. 사용자가 개발하는 도구는 확장점이라는 잘 정의된 후크를 사용하여 Workbench에 플러그인할 수 있습니다.

플랫폼 자체는 플러그인 계층에 빌드되며, 각 플랫폼은 하위 레벨 플러그인의 확장점에 확장을 정의하고 추가 사용자 정의를 위해 고유 확장점을 정의합니다. 이 확장 모델을 사용하면 플러그인 개발자가 기본 도구 플랫폼에 다양한 기능을 추가할 수 있습니다. 파일 및 기타 데이터와 같은 각 도구의 아티팩트는 공통 플랫폼 자원 모델을 통해 조정됩니다.

플랫폼은 사용자에게 도구에 대해 작업하는 일반적인 방법을 제공하고 플러그인을 사용하여 작성한 자원에 대한 통합 관리를 제공합니다.

플러그인 개발자들도 이 아키텍처의 지원을 받습니다.  플랫폼은 서로 다른 환경(예: 서로 다른 운영 체제 또는 작업 그룹 서버 환경)의 복잡도를 관리합니다.  따라서 플러그인 개발자들은 이런 통합 문제에 신경쓰지 않고 그들의 당면 타스크에 집중할 수 있습니다.

플랫폼 구조

Eclipse 플랫폼 자체는 하나 이상의 플러그인으로 구현되는 서브시스템으로 구성됩니다. 서브시스템은 소규모 런타임 엔진 위에 빌드됩니다. 아래의 그림은 단순화된 보기를 나타냅니다.

기능 추가 플러그인 그룹이 있는 런타임 기본 플랫폼

서브시스템으로 구성된 플러그인은 플랫폼에 작동을 추가하는 확장점을 정의합니다. 다음 테이블은 하나 이상의 플러그인으로 구현되는 플랫폼의 주요 런타임 컴포넌트를 설명합니다.

플랫폼 런타임

확장점과 플러그인 모델을 정의합니다. 플러그인을 동적으로 발견하고 플러그인 및 확장점에 대한 정보를 플랫폼 레지스트리에 유지보수합니다. 플러그인은 사용자의 플랫폼 조작에 따라 필요 시 시작됩니다. 런타임은 OSGi 프레임워크를 사용하여 구현됩니다.

자원 관리(작업공간)

도구에 의해 작성되어 파일 시스템에 보관되는 자원(프로젝트, 파일, 폴더)을 작성하고 관리하기 위해 API를 정의합니다.

Workbench UI

플랫폼을 탐색하기 위한 사용자 조종석을 구현합니다. UI 컴포넌트(예: 보기 또는 메뉴 조치)를 추가하기 위한 확장점을 정의합니다. 사용자 인터페이스를 빌드하기 위한 추가 툴킷(JFace 및 SWT)을 제공합니다. UI 서비스는 UI 플러그인의 서브세트가 자원 관리 및 작업공간 모델과 관계 없는 리치 클라이언트 응용프로그램을 빌드하는 데 사용될 수 있도록 구성됩니다. IDE 중심 플러그인은 자원을 탐색하고 조작하기 위한 추가 기능을 정의합니다.

도움말 시스템

도움말 또는 기타 문서를 찾아볼 수 있는 서적으로 제공할 수 있도록 플러그인에 대한 확장점을 정의합니다.

팀 지원

자원을 관리하고 버전화하기 위해 팀 프로그래밍 모델을 정의합니다. 

디버그 지원

디버거와 실행기를 빌드하기 위해 언어와 상관없는 디버그 모델 및 UI 클래스를 정의합니다.

기타 유틸리티

기타 유틸리티 플러그인은 자원 탐색 및 비교와 같은 기능을 제공하므로 XML 구성 파일을 사용하여 빌드를 수행하고 서버에서 플랫폼을 동적으로 갱신합니다.

완벽한 기능

완벽한 기능 - 기본 플랫폼은 모든 작업을 통합하여 수행할 수 있는 IDE(Integrated Development Environment)라고 할 수 있습니다.

Workbench 창

플러그인이 플랫폼의 궁극적 기능을 결정합니다. 따라서 Eclipse SDK는 SDK의 기능성을 향상시키기 위해 추가 플러그인을 함께 제공합니다.

플러그인은 추가 자원 유형(예: Java 파일, C 프로그램, Word 문서, HTML 페이지, JSP 파일 등)을 편집하고 조작하기 위한 지원을 제공할 수 있습니다.