RCP/SWT & JFACE

java GUI 툴 SWT vs Swing vs AWT

반응형

자바에서 사용되는 그래픽 유저 인터페이스(GUI)툴중 대표적인 종류는 3가지이다.


AWT SWING SWT/JFACE 


각각 마다 동작하는 방식이 다르기 때문에 장단점이 다르다.


서로의 특징을 알아보자


1. AWT

- Abstract Windows Toolkit (AWT)는 오리지널 자바의 GUI툴킷

- 자바의 런타임의 일부로 안정되고, 추가 설치가 필요 없음

- 대개의 경우 리소스관리를 프레임워크에서 처리

- UI 쓰레드를 신경쓰지 않아도 됨 (그러나 성능의 문제가 됨)

- 콘테이너 없이 콤포넌트 생성 및 콘테이너 변경 가능

- 풍부한 그래픽 환경 제공

- 각 OS별 최소한의 공통 기능의 wrapper를 구현함으로써 제한적 기능을 제공

- 일반적으로 사용되는 테이블, 트리, 진행 바 같은 것은 애플리케이션 레이어에서 구현해야 함

- "한번 작성하여, 어디에서나 실행되는(WORE)"라기보다 "한번 작성하여, 어디에서나 테스트 하는(WOTE)" 환경이 됨


2. Swing

- 각 OS의 콤포넌트에 대한 의존성을 최소화 (AWT의 단점을 보완)

- 대부분의 콤포넌트는 자바로 구현해 모든 OS에 같은 look & feel로 실행 가능함 (WORE)

- 자바로 구현한 콤포넌트는 각 OS의 원래 콤포넌트보다 느려질 수 있음

- 모델, 뷰, 컨트롤의 분리

- Look & Feel을 컨트롤 할 수 있음

- AWT와 마찬가지로 프레임워크에서 리소스가 관리되며 컨테이너의 전제조건이 없음

- UI 쓰레드가 있으므로, UI 변경은 이 쓰레드에서 이뤄져야 함

- 자바의 일부로 별도의 설치가 필요 없음


3. SWT/JFace

- Standard Widget Toolkit (SWT)는 AWT에 비교되는 콤포넌트 라이브러리

- JFace는 SWT를 기반으로 하는 상위레이어 UI 라이브러리

- SWT는 각 OS의 콤포넌트에 기반하고, 좀더 많은 콤포넌트를 수용함 (OS에서 콤포넌트가 지원되지 않는 경우 자바로 구현함)

- OS에 따른 콤포넌트의 기능, look & feel과 성능을 지원함 (WOTE)

- ContentProvider 등을 통한 MVC 지원

- 애플리케이션이 리소스 관리해야 함 (disposal)

- 콤포넌트는 부모 컨테이너를 지정해 생성해야 하고 변경할 수 없음

- UI는 UI 쓰레드에서 변경되어야 함

- 그래픽 기능이 자바에 비해 약함

- 자바이외에 별도의 라이브러리 설치 및 환경설정 (classpath 및 jni library path)이 필요

반응형