표준 위젯 툴킷

표준 위젯 툴킷(SWT, Standard Widget Toolkit)은 이클립스에서 사용하고 있는 자바기반의 위젯 툴킷(Widget Toolkit)이다. 처음에 이 툴킷은 IBM이 개발되었으나 지금은 이클립스를 개발하는 이클립스 재단(Eclipse Foundation)이 유지 보수하고 있다. 이 툴킷은 이클립스 공중 사용 허가서(Eclipse Public License)에 따라 배포되고 있다.

 자바 GUI 툴킷의 역사 
썬 마이크로시스템즈(Sun Microsystems)에서 1995년 자바 개발 키트(JDK, Java Development Kit) 1.0을 내놓았을 당시 존재한 추상 윈도 툴킷(AWT, Abstract Window Toolkit)은 최초의 자바 GUI용 툴킷이었다. 최초의 AWT는 OS의 메뉴나 버튼 등을 자바로 포장한 형태의 간단한 그래픽 툴킷이었다. 해당 운영 체제의 윈도 시스템을 그대로 이용하므로 윈도 시스템별로 특징적인 형태를 그대로 구현할 수 있으나 자바의 OS 비의존성을 지키기 위하여 각 윈도 시스템별로 공통적으로 지원하는 그래픽 구성 요소(메뉴, 버튼, 문자상자 등)만 이용할 수 있다는 제약 때문에 지원하는 구성 요소가 많지 않았다.

AWT보다 좀 더 다양한 GUI 구성 요소 집합이 제공되기를 바라던 사용자들의 요청에 따라 선에서는 J2SE 1.2 버전을 내놓으면서 차세대 GUI 툴킷으로 스윙(Swing)을 내놓았다. 스윙은 AWT와는 달리 모든 그래픽 구성 요소를 100% 자바로 구성하였으며 따라서 OS의 그래픽 자원을 바로 사용하는 방식이 아니라 Java2D를 이용하여 모든 구성 요소들을 직접 그려서 사용하였다.
이 방식으로 인하여 AWT의 가장 큰 문제점 중 하나였던 OS별(윈도 시스템별) 공통의 그래픽 컴포넌트들만을 지원하는 한계가 해결되었고 추가적으로 다양한 룩 앤드 필(Look and Feel)을 지원할 수 있게 되었다.
그러나 해당 OS 자원을 직접 활용하지 않는 단점으로 인한 이질감(해당 윈도 시스템의 그래픽 구성 요소와 상이한 모습을 보임)과 내부적으로 복잡한 이벤트 처리 및 직접 모든 그래픽을 그리는 데 따른 속도저하는 일반 사용자들이 많이 사용하지 않게 되는 하나의 이유가 되었다.

SWT의 뿌리는 1990년 오브젝트 테크놀로지 인터내셔널(OTI, Object Technology International)이 스몰토크(원래는 OTI 스몰토크였으나, 1993년 IBM이 OTI를 인수하여 IBM 스몰토크가 됨)를 위한 멀티플랫폼, 휴대성을 갖춘 고유의 위젯 인터페이스를 만드는 작업으로 거슬러 올라간다. IBM은 스몰토크 언어로 제작된 비주얼 에이지(Visual Age) 개발 통합 개발 환경(IDE)을 개발하고 있었다. 그들은 마이크로소프트 비주얼 스튜디오와 같은 다른 IDE와 경쟁할 의도로 오픈 소스 프로젝트를 개발하기로 결정했는데, 이는 이클립스의 개발로 이어졌다.

SWT는 그래픽 툴킷으로 실행하는 윈도 시스템 고유의 룩 앤드 필(Look and feel)을 가짐과 동시에 고유의 성능을 발휘하도록 개발되었다.FAQ 왜 이클립스에서 SWT를 쓰는가?
나중에 IBM이 Visual Age를 이클립스로 바꾸면서 오픈 소스화 할 때 SWT도 같이 공개되었다.

 디자인 
SWT는 윈도 시스템에서 제공하는 고유의 그래픽 구성 요소를 자바 네이티브 인터페이스(JNI, Java Native Interface)를 통하여 직접적으로 사용하며 스윙에 비하여 비교적 하위 수준의 간단한 구현을 가진다. 따라서 스윙과 같은 모델-뷰-컨트롤러(MVC, )와 같은 디자인 패턴은 직접적으로 지원하지 못한다. 따라서 좀 더 추상화된 고수준의 패턴 지원을 위해 JFace가 개발되었으며 많은 경우 같이 사용되기 때문에 SWT/JFace와 같이 병기하여 사용하는 경우가 많다.

또한 JNI를 사용하기 때문에 각 운영 체제별 고유의 라이브러리 파일이 있어야 구동 가능하므로 자바가 구동되는 모든 운영 체제/윈도 시스템에서 구동 가능하지는 않다. 따라서 여러 OS에서 사용되어야 하는 프로그램 개발 시에는 지원 OS/윈도 시스템이 지원 가능한지 미리 확인해 봐야 한다.

 스윙과의 관계 
서로 다르면서도 비슷한 특성 때문에 스윙과 SWT간에 호불호로 인한 논쟁이 많이 있어왔다. 그러나 SWT는 스윙과 직접적인 경쟁을 위한 툴킷이라기 보다는 각각의 용도에 따른 또 하나의 대안의 개념으로 사용되고 있다.FAQ SWT가 Swing보다 더 나은가?

그리고 AWT와 스윙, SWT를 동시에 사용하는 방법도 존재한다.FAQ 어떻게 AWT와 Swing을 SWT와 같이 사용할 수 있는가?

 지원 플랫폼 
2010년 1월 현재 이클립스 3.5.1 버전을 기준으로 SWT가 지원하는 플랫폼은 다음과 같다.
 Windows x86 32bit, 64bit(XP, Vista, 7)
 Windows CE(ARM PocketPC J2SE/J2ME)
 Linux(x86/x86_64 GTK2, PPC GTK2, x86/Motif)
 Solaris 10(SPARC GTK2, x86 GTK2, SPARC/Motif)
 HPUX(IA64_32/Motif)
 QNX(x86/Photon)
 AIX(PPC/Motif)
 Mac OSX(Cocoa, Cocoa/x86_64, Carbon)

해당 운영 체제와 윈도 시스템에 맞는 버전을 다운받아야 하며 일부 최신 기능의 경우는 운영 체제마다 조금씩 다를 수 있으므로 개발 문서를 참고해야 한다.

 같이 보기 
 이클립스
 통합 개발 환경(IDE)
 AWT
 스윙
 JFace

 각주 

 외부 링크 
  Standard Widget Toolkit 공식 위키 페이지

분류:자바 라이브러리
분류:자바 API
분류:위젯 툴킷
분류:자바 플랫폼
분류:이클립스 라이선스 소프트웨어
분류:자유 라이브러리
분류:Eclipse (소프트웨어)