본문 바로가기

Java For All/eClipse

Eclipse Platform 시작하기


문서 옵션

제안 및 의견

난이도 : 초급

David Gallardo, 소프트웨어 컨설턴트

2002 년 11 월 01 일

Eclipse Platform을 소개한다. 기원과 아키텍쳐를 비롯하여 Eclipse의 오픈 소스적 특성과 다중 프로그래밍 언어 지원 등을 다룬다. 간단한 프로그램 예제를 사용하여 자바 개발 환경을 보여줄 것이다.

Eclipse란 무엇인가?

Eclipse는 오픈 소스이며 자바 기반의 확장 가능한 개발 플랫폼이다. 그 자체로 프레임웍이며 플러그인 컴포넌트에서 개발 환경을 구현하는 서비스 세트이다. 다행히, Eclipse에는 Java Development Tools(JDT)를 포함한 표준 플러그인 세트가 포함된다.

대부분의 개발자들이 Java IDE로서 Eclipse를 사용할 수 있다는 것은 큰 행운이며 야망은 여기서 그치지 않는다. Eclipse에는 Plug-in Development Environment (PDE)이 포함되어 있는데 Eclipse를 확장하려는 소프트웨어 개발자들이 주로 흥미를 갖고있다. Eclipse 환경과 완벽하게 통합하는 툴을 구현할 수 있기 때문이다. Eclipse의 모든 것이 플러그인 이기 때문에 모든 툴 개발자들은 Eclipse로 확장을 제공하고 일관성 있고 통합된 개발 환경을 제공하기 위해 레벨을 갖추게 된다.

동일함과 일관성은 자바 개발 툴에만 국한되지 않는다. Eclipse가 자바로 만들어졌지만 자바 언어에만 국한된 것은 아니다. 예를 들어 플러그인도 사용할 수 있고 C/C++, COBOL, Eiffel과 같은 프로그래밍 언어에 대한 지원도 포함할 예정이다. Eclipse 프레임웍은 콘텐트 관리 시스템 같은 소프트웨어 개발과 관련 없는 애플리케이션 유형의 기초로서 사용될 수 있다.

Eclipse 기반 애플리케이션의 예로 IBM의 WebSphere Studio Workbench가 있다. 이것은 IBM의 자바 개발 툴 제품군의 기본을 형성하고 있다. 예를 들어, WebSphere Studio Application Developer는 JSP, 서블릿, EJB, XML, 웹 서비스, 데이터베이스 액세스 지원을 추가했다.




위로


Eclipse는 오픈 소스이다!

오픈 소스 소프트웨어는 특정 권리가 사용자들에게 허용는 라이센스와 함께 배포된 소프트웨어이다. 물론 가장 분명한 권리는 소스 코드는 사용할 수 있는 것이여서 모든 사용자들이 자유롭게 소프트웨어를 변경하고 재배포할 수 있도록 해야한다. 사용자들의 권리의 보호는 copyleft 이라고 하는 장치에 의해 수행된다. 소프트웨어 라이센스는 copyright 보호를 요구하고 이러한 권리가 허용되지 않는 사용자에겐 배포를 금지한다. 이 copyright은 또한 모든 재배포 소프트웨어가 같은 라이센스의 보호를 받을 것을 요구한다.

Open Software Initiative는 오픈 소스가 무엇이며 이러한 기준에 부합하는 라이센스를 인증하는 공인된 비영리 조직이다. Eclipse는 OSI-approved Common Public License (CPL) Version 1.0의 라이센스를 받았다.

Eclipse용 플러그인을 개발하거나 소프트웨어 개발 애플리케이션의 기반으로서 Eclipse를 사용하는 개발자들은 CPL 하에서 사용 및 변경된 모든 Eclipse 코드를 배포한다. 하지만 각자 원하는 방식대로 추가사항을 마음껏 라이센싱 할 수 있다. Eclipse부터 온 소프트웨어에 번들된 재산은 오픈 소스로서 라이센싱 될 필요가 없고 소스 코드는 사용가능 하지 않도록 할 수 있다.

대부분의 개발자들은 플러그인을 개발하거나 Eclipse 기반의 새로운 제품을 만들기 위해 Eclipse를 사용하지 않더라도 Eclipse의 오픈 소스 성향은 Eclipse를 무료로 사용할 수 있다는 단순한 사실을 넘어서는 중요성을 가진다. 오픈 소스는 혁신을 장려하고 개발자들에게(상용 개발자 포함)에 인센티브를 제공하여 코드를 다시 공용의 오픈 소스 코드 기반으로 기여할 수 있도록 한다. 이렇게 하는 데는 많은 이유가 있지만 아마도 가장 큰 이유는 개발자들이 프로젝트에 기여할 수록 프로젝트는 가치 있는 것이 된다. 프로젝트가 좀더 유용해지면 더 많은 개발자들은 이를 사용하고 이와 관련한 커뮤니티를 만들 것이다. Apache와 리눅스에 커뮤니티가 형성된 것 처럼 말이다.




위로


Eclipse는 누구인가?

Eclipse.org Consortium은 진행중인 Eclipse의 개발을 관리하고 지휘한다. IBM이 4천만 달러로 Eclipse를 개발하고 오픈 소스 프로젝트에 배포한 후 만든 Eclipse.org Consortium은 Borland, Merant, Rational, RedHat, SuSE, TogetherSoft, QNX등의 많은 소프트웨어 툴 벤더들을 기용했다. Hewlett Packard, Fujitsu, Sybase 등의 다른 기업들도 이후 참여했다. 이들 기업들은 Eclipse 프로젝트의 방향과 범위를 정하는 Board of Stewards를 대표한다.

Project Management Committee (PMC)는 Eclipse 프로젝트를 관리한다. 이 프로젝트는 하위 프로젝트로 나뉘고 각 프로젝트마다 대표를 두고있다. 규모가 큰 하위 프로젝트는 컴포넌트들로 나뉘고 이들 컴포넌트에도 대표가 있다. 현재, 대부분의 관리 역할은 최초로 개발된 Eclipse인 Object Technology International (OTI)에서 온 사람들이 관리책임을 맞고있지만 오픈 소스 프로젝트인 만큼 누구나 참여할 수 있다.




위로


Eclipse Workbench

Eclipse를 처음 열면 다음의 첫 화면을 보게된다:


그림 1. Eclipse Workbench
Eclipse Workbench 

Eclipse Workbench는 view로 알려져있는 여러 패널들로 구성되어 있다. 패널 모음을 perspective라 한다. 기본 perspective는 Resource Perspective인데 이것은 프로젝트를 관리하고 프로젝트의 파일을 검색하고 편집하는데 필요한 기본적인 view이다.

메뉴 또는 툴바 같은 workbench의 다른 기능 대부분은 동종의 애플리케이션과 비슷하다. 한가지 편리한 점이 있다면 스크린의 왼쪽에 보이는 다른 perspective로 가는 "지름길" 툴바이다. Eclipse에는 Eclipse 워크벤치용 사용자 가이드를 포함한 강력한 헬프 시스템과 Java Development Tools 같은 플러그인이 포함되어 있다.




위로


Java Development Environment (JDE)

자바 개발 환경을 시험해보기 위해서, "Hello, world" 애플리케이션을 만들어 실행할 것이다. 자바 perspective를 사용하여 "Hello" 프로젝트의 오른쪽을 클릭하여 그림 2 처럼 New=>Class 를 선택한다. 대화 상자에 클래스 이름과 같은 "Hello"를 입력한다. "Which method stubs would you like to create?" 아래에 있는 항목 중 "public static void main(String[] args)"를 체크하고 Finish를 누른다.


그림 2. Java perspective에 새로운 클래스 만들기 
New Class 

이것은 에디터 영역에 Hello 클래스와 빈 main() 메소드를 가진 .java 파일을 만들것이다.(그림 3). 다음 코드를 메소드에 추가한다:


그림 3. 자바 에디터의 Hello 클래스
Hello Class 

2.1 버전에서 열기 괄호 또는 더블 쿼트를 입력하면 Eclipse는 자동으로 이들의 파트너를 제공하고 그 내부에 커서를 위치시킨다.

Ctrl-Space를 눌러 코드 완료를 호출할 수 있다 코드 완료는 키보드나 마우스로 선택할 수 있는 제안 리스트를 제공한다. 이 제안들은 특정 객체에 해당하는 메소드 리스트 이거나 for 또는 while 같은 다양한 키보드 기반의 코드가 될 수 있다.

신택스 체크는 증가하는 컴파일에 의존한다 코드를 저장할 때 이것은 뒤에서 컴파일되고 신택스 에러를 검사한다. 기본적으로 신택스 에러는 빨간 색으로 밑줄이 쳐지고 하얀색 "X"가 있는 빨간 점은 왼쪽 여백에 나타난다. 다른 에러들은 에디터의 왼쪽 공백에 흐린 벌브(bulb)으로 표시된다. 이들은 Quick Fix라고 하는 기능으로 해결한다.

위 코드 예제는 for 구문 옆에 흐린 벌브가 있다. i 선언이 삭제되었기 때문이다. 벌브를 더블 클릭하면 권장 픽스 리스트가 나온다. 이 경우 클래스 필드 i나 로컬 변수 i, 또는 메소드 매개변수 i를 만드는 것을 제안한다. 이중 하나를 클릭하면 코드가 나타난다. 그림 4는 권장 리스트와 로컬 변수를 권장하는 코드이다:


그림 4. Quick Fix 권장
Light Bulb Help 

권장 항목을 더블 클릭하여 코드의 적당한 위치에 코드를 삽입한다.

그림 5 코드가 에러없이 컴파일 되면 Eclipse 메뉴에서 Run을 선택하여 프로그램을 실행할 수 있다. Launch Configurations 대화상자가 나타난다. 오른쪽 밑에 있는 Run 버튼을 누른다. 새로운 탭이 붙여진 패널이 아래쪽 패널(콘솔)에 나타나면서 그림 5 처럼 프로그램의 아웃풋을 디스플레이 한다:


그림 5. 프로그램의 아웃풋
Hello Output 

자바 디버거에서도 프로그램을 실행할 수 있다. System.out.println() 옆에 있는 에디터 뷰 왼편에 회색 공백을 더블 클릭하여 main() System.out.println()에 중단점을 만든다. Run 메뉴에서, Debug를 선택한다. 위에 설명한 대로 Launch Configurations 대화창이 나타날것이다. Run을 선택하라. perspective는 Debug perspective로 자동으로 바뀐다. (그림 6):


그림 6. Debug perspective
Debug Output 

perspective의 왼쪽 위에 있는 Debug view를 주목해보자. 이것은 콜 스택을 나타내고 프로그램의 실행을 제어하도록 타이틀바에 툴바를 갖고 있다.

오른쪽 위에 있는 패널은 Variables, Breakpoints, Expressions, Display 등의 뷰 탭이 있다. Variables를 클릭하여 i 의 현재 값을 볼 수 있다.




위로


추가 플러그인

애플리케이션의 편집, 컴파일, 디버깅을 위한 JDT 같은 플러그인 외에도 모델링, 구현 자동화, 단위 테스트, 퍼포먼스 테스트, 버전 컨트롤, 설정 관리 같은 완전한 개발 프로세스를 지원하는 플러그인도 사용할 수 있다.

CVS(소스 제어용 오픈소스 Concurrent Versions System)와 작업하기 위한 플러그인이 포함된 Eclipse는 표준이다. Team 플러그인은 CVS 서버와 연결하면서 개발 팀 멤버들이 별다른 변경 절차를 거치지 않고 소스 코드 파일에서 작업할 수 있도록 한다. Eclipse 내부의 소스 제어는 여기서 더이상 다루지 않겠다 .

다음은 다양한 플러그인들이다:

참고자료 참조.




위로


예제: UML 모델링 플러그인

플러그인 예제와 이것이 Eclipse와 어떻게 통합하는지 보려면 OMONDO EclipseUML을 다운로드 하라; 등록을 해야하지만 플러그인은 무료이다. 이 플러그인은 GEF(Graphical Editor Framework) 기반이고 다른 플러그인은 Eclipse용이다. GEF는 Tools 하위 프로젝트의 일부이다. GEF를 다운로드 하려면, Eclipse 웹 사이트(참고자료)에서 "downloads"를 선택한 다음 "Tools PMC downloads page"링크를 클릭한다. OMONDO (GEF version 2.0 for OMONDO version 1.0.2)에서 권장하는 GEF 구현을 다운로드 해야한다.

일단 다운로드 되면 다운로드 파일의 압축을 풀고 콘텐츠를 Eclipse 플러그인 디렉토리에 복사함으로서 플러그인이 설치된다. 이 경우 GEF는 압축이 풀려 Eclipse 디렉토리로 들어가야하지만 EclipseUML은 압축이 풀려 곧바로 Eclipse 디렉토리의 플러그인 하위디렉토리로 들어가야한다. 안전을 위해서 임시 디렉토리에 압축을 풀어 이 디렉토리를 복사한다. Eclipse가 실행중이라면 플러그인이 인식하도록 정지시킨 후 재시작해야한다.


그림 7. Class Diagram 에디터
Class Diagram 

File=>New=>Class
/** Person.java
 * @author david
 */
public class Person {
private String name;
private Address address;

/**
 * Returns the address.
 * @return Address
 */
public Address getAddress() {
         return address;
}

/**
 * Returns the name.
 * @return String
 */
public String getName() {
        return name;
}

/**
 * Sets the address.
 * @param address The address to set
 */
public void setAddress(Address address) {
        this.address = address;
}

/**
 * Sets the name.
 * @param name The name to set
 */
public void setName(String name) {
       this.name = name;
}

}

Person.java Hello.ucd를 저장하고 닫는다.


그림 8. Person 클래스 다이어그램
Person Class 

UML에서 자바 클래스를 만들려면, 클래스 다이어그램 윈도우 상단에 있는 툴바의 "New class" 버튼을 클릭한 후 클래스 다이어그램을 클릭한다. New 클래스 위자드가 열리면, 클래스 이름에 Address를 입력하고 Finish를 누른다.

다이어그램을 바꾸면 다이어그램 밑에있는 Source Editor 윈도우는 변경사항을 반영한다. 마지막으로 Association 버튼을 클릭하고 Person 클래스에서 Address 클래스로 라인을 그리면 클래스 사이의 관계를 도형으로 나타낼 수 있다. 다이어그램은 다음과 같다:


그림 9. Association
Association 

이 UML 플러그인은 Eclipse 플러그인의 전형을 나타낸다. 우선, 툴간의 긴밀한 통합을 나타낸다. 다중의 컴포넌트가 작동하고 있다는 것은 명확하지 않다. Eclipse Platform과 JDT의 통합은 완벽하다. 예를들어, Person 클래스가 만들어질 때, 한 애트리뷰트인 Address가 정의되지 않았기 때문에 신택스 에러를 디스플레이한다. 그들은 Address 클래스가 UML 다이어그램에 만들어지면 사라진다.

또 다른 특징은 EclipseUML이 다른 플러그인 (이 경우 GEF)에서 구현될 수 있다.

또 다른 특징은 EclipseUML 플러그인은 기능별 버전이 다양하다. 클래스 다이어그램을 지원하는 기본 플러그인은 무료이다. 하지만 좀더 나은 버전들은 사용료를 지불해야한다.




위로


Eclipse Platform 아키텍쳐

Eclipse Platform은 JDT와 Plug-in Development Environment 같은 플러그인을 지원하는 강력한 서비스를 갖춘 프레임웍이다. Platform runtime, Workspace, Workbench, Team Support, Help 등의 주요 컴포넌트로 구성되어있다.


그림 10. Eclipse Platform 아키텍쳐
Eclipse architecture 

SWT는 Eclipse의 가장 논쟁거리가 되는 부분임이 증명되었다. SWT는 Swing 또는 AWT 보다는 기본 OS의 원시 그래픽 기능으로 매핑된다. 새로운 GUI API를 사용함으로서 Eclipse workbench의 이동성에 제한을 줄 수 있지만, 가장 대중적인 OS용 SWT 포트는 사용할 수 있다.

Eclipse가 SWT를 사용하는 것은 Eclipse 자체의 이동성에만 영향을 준다. Swing/AWT 대신 SWT를 사용하지 않는 한 Eclipse를 사용하는 자바 애플리케이션에는 영향이 없다.




위로


Eclipse의 미래

많은 사람들이 Eclipse 관련 개발을 하고 있다. 주요 소프트웨어 툴 벤더들은 이를 진행중이고 오픈소스 Eclipse 플러그인 프로젝트의 수는 나날이 늘어나고있다.

이동가능하고 확장가능한 오픈소스 프레임웍은 새로은 아이디어가 아니다. 하지만 강력하고 세련된 디자인 때문에 Eclipse는 전혀 새로운 힘을 불러일으키고 있다. IBM이 4천만 달러 상당의 세계적 소프트웨어를 오픈 소스 분야에 쏟아부음으로서 이러한 현상이 가능해졌다.



참고자료