SWT/JFACE 개발환경 구축하기

zerolism ㅣ 2012. 5. 3. 19:19

SMALL

 

Java 에서 GUI 를 만드는 방법은 크게 두 가지로 설명할 수 있다.

바로 Swing 과 SWT/JFace 이다. Swing 과 SWT/JFace 는 비슷한 외양을 보여주지만 목표와 구현 방법에 차이가 있다.


1. Swing

Swing 의 가장 큰 특징은 OS와 무관하게 일관된 외양을 보여준다는 것이다. 바로 Java의 기본 신념을 가장 잘 표현한 것이 아닐까 한다. 이렇게 이로간된 외양을 보여주기 위해 JVM 은 Swing 의 사용자 인터페이스를 그리는 과정에 전적으로 개입한다.

때문에 이 특징이 Java가 느리다는 편견을 만드는 가장 큰 주범일 것이다.(물론 최근의 고사양의 하드웨어의 발달로 이부분에 대한 성능 저하가 느끼기 어렵다.)

Swing 의 각 컴포넌트들은 상위 수준에서 구현하기 때문에 경량 컴포넌트 라고 부른다. 이는 JVM 이 어떤 OS 위에서 돌아가든 똑같이 보인다. 즉, Swing 은 기본적으로 플랫폼과 무관하게 같은 외양을 보여준다.

하지만 Swing 단점으로는 개발과정이 너무 복잡하고 실행 과정이 느리다는 것이다.



2. SWT/JFace

SWT/JFace는 Java 기반의 플랫폼에 독립적인 GUI 를 만든다는 것은 같다. 하지만 Swing 이 OS 마다 같은 GUI 를 보여주는 것이라면 SWT/JFace 는 각 OS에 해당하는 모양으로 GUI 를 나타낸다. SWT/JFace는 GUI 의 그래픽을 직접 만들기 보다는 OS의 중량 컴포넌트를 그대로 사용한다. 따라서 각 플랫폼에 해당하는 GUI가 만들어 진다.

이것은 Java 의 JNI 에 의존한다. JNI를 사용하여 OS의 네이티브 리소스를 사용하는 것이다.

SWT/JFace의 또 다른 특성은 자동 가비지 컬렉션을 하지 않는다는 것이다. 즉, 사용한 자원을 명시적으로 해제해야한다. 이는 JNI 를 사용하여 얻어온 자원을 자동 가비지 컬렉션을 사용하여 해제하기 상당히 어렵기 때문이다. SWT/JFace를 사용하는 또 다른 이유는 OS에 직접 접근이 가능하다는 것이다.

하지만 OS에 직접 접근하려면 JNI라는 단계를 더 거쳐야 한다.


3. Swing 과 SWT/JFace 의 차이

1) GUI 생성방식

Swing 은 경량 컴포넌트를 사용하여 GUI를 직접 생성한다. (모든 OS 에 같은 GUI 를 보여준다.)

SWT/JFace 는 중량 컴포넌트를 직접 사용한다. (각 OS 에 해당하는 모양으로 GUI를 보여준다.)


2) GC

Swing 은 자동 가비지 컬렉션을 사용하고 SWT/JFace 는 리소스 해제를 직접한다.


3) Layout

- Swing 은 JPanel 을 사용하여 Layout 을 레이어처럽 쌓아놓는 방법을 사용한다. 이러한 방식은 쌓이는 만큼 비효율적으로 자원을 많이 소모하지만 설계는 쉽다.

- SWT/JFace 는 Layout 을 최소화 하기 위해 속성과 수정자를 사용하여 위젯의 위치를 제어한다. 설계시간은 좀더 길어질 수 있지만 자원소비는 적다.


SWT/JFace 는 기본적으로 SDK 에 포함된 라이브러리가 아니다.
패키지명에서도 알 수 있듯이, Eclipse 에서 별도로 만든 plugin 이다.
그래서 몇몇 귀찮은 설정을 아래와 같이 해 주어야 한다.



Reference 추가하기

1. 일단 java 프로젝트를 만듦
2. 프로젝트 우클릭 -> Properties 메뉴 클릭
3. 아래 화면의 메뉴로 접근

 

4. 우측 메뉴의 'Add Variable...' 클릭
5. 하단 'Configure Variables...' 클릭
6. 'New' 클릭
7. 하단의 창이 뜨면, 'Folder...' 클릭

 

 

8. Name은 임의값(예: ECLIPSE_HOME)을, path 에는 이클립스가 설치된 폴더(C:/Program Files/eclipse)를 입력
9. OK 를 눌러서 아래 화면으로 빠져나옴

 

 

10. 방금 추가한 'ECLIPSE_HOME' 을 클릭하고, 오른쪽에 활성화된 'Extend...' 버튼을 클릭
11. 항목에서 'plugins' 의 트리를 확장시킴

 

 

12. 리스트가 나오면 아래 7개의 jar 파일을 추가시킴(뒤에 버젼은 신경쓰지 말것)

 

 




이렇게 하면 swt/jface 사용을 위한 환경설정이 모두 끝이 납니다.
프로젝트를 열어보면, "Referenced Libraries" 에 위 7개 항목이 들어간 것을 확인 하실 수 있습니다.

LIST