시소당
eclipse 의 UI 는 참 이쁘다. 분명히 이건 java의 기본 GUI library인 swing 은 아니다. 물론 swing 도 열심히 조작하면 확확 탈바꿈을 할 수 있지만, 뭔가 근본부터 다른 느낌이라고 할 수 있겠다.
eclipse 의 GUI 부분은 swing이 아닌,
SWT로 되어있고, plug-in 들도 이 SWT 로 구현된다.
왜 Swing 이 아닌 SWT라는 새로운 GUI library를 만들었는지는
SWT Programming with Eclipse의 서두에 나와있다. 짧게 말하자면, AWT 는 platform 마다 동작이 달라서 문제고, Swing은 (비록 sun에서 열심히 뜯어고쳐서 많이 나아지긴 했지만) 무겁고, 또 너무 모양이 native 하지 않다. 외계에서 뚝 떨어진 듯한 외형이라서, 누구나가 "아, 이건 swing으로 만든 application이로구나!" 하고 알 수 있을 정도다.
SWT는 이 두가지 문제를 해결하기 위해 IBM이 만들었고, native로 쓸 수 있는 건 native 것을 사용하고, 없으면 emulate 하자는 컨셉이다. 실제로 SWT library 를 받아서 압축을 풀어보면 swt.jar 와 JNI로 구현된 platform 의존적인 파일들( 윈32 에서는 dll 파일들)이 존재한다.
SWT의 Widgets들은
SWT - widgets에서 볼 수 있다.
간단히 둘러보고, 실제 코딩해보고 느낀 점은 아래와 같다.
- OLE 객체를 쉽게 embed 해서 사용할 수 있다.
- 기존 java 의 표준 GUI 인 AWT, SWING obj 도 가져다 쓸 수 있다.
- layout 이나 widget 등록방법이 swing과 꽤 다른듯하다. swing으로 개발해 본 지가 3년이 다 되어가니 가물가물하지만, 뭔가 처음엔 손에 무지하게 안익네. 제공하는 layout 중 대부분 formLayout 을 사용하게 되지 않을까 생각한다. swing의 GridBag Layout 보다는 꽤 사용하기 편하다. 손으로 코딩하는데도, 무수히 삽질끝에 조금 익숙해지니, 꽤 강력하다.
- widget 이 뭔가 좀 모자란 듯한 느낌?
- Swing보다 가볍게 돌아가는 듯한 느낌이다.
- 각종 속성을 bit 연산으로 설정할 수 있다. 멋지군!
그런데 문서들이 좀 중구난방이라 깔끔하게 정리된 문서를 찾기가 쉽지가 않네. 공식 홈에서 제공하는
SWT Resources and Links도 그다지 탐탁치가 않다.
Java examples (example source code) » SWT JFace Eclipse - 꽤 많은 예제를 볼 수 있다. 맨땅에 해딩하다가, 많은 도움이 되었다.
Understanding Layouts in SWT- SWT 의 layout 에 대한 정보가 있다.
swing에 만족하지 못하고 새로운 GUI library 를 찾고있다면 한번 사용해봐도 좋을것 같다. 만들어놓고나니 swing으로 한 것보다 더 좋은듯한 느낌(!)이다.
@갑자기 이걸 왜 하게 되었냐면, 숙제 중에 XPath 를 DOM,SAX로 각각 구현하는 Application을 만들어야 하는데, 예전부터 한번 써봐야지 했던 SWT 에 갑자기 삘이 꽂혀버렸다. 일단 껍데기는 만들었는데 Swing 썼으면 반나절이면 할 것을 이틀동안 수없이 해딩했다. T_T
@XML로 기술한 것을 SWT로 변환해 주는 녀석도 있구나. xswt - 아,세상 참 넓구만!