2011년 6월 13일 월요일

[SWT] 1.HelloSWT


시간 계획 :

일단 책은 "리치 클라이언트 개발을 위한 이클립스 SWT"로, 성안당에서 나온 책이다.

도서관서 빌려온 책이라 session을 6월 28일까지 마무리 짓는 수 밖에 없다.

일단 강행하고 나면, 자연히 기초실력이 생기고,
프로젝트를 하면서 열심히 googling 하면, 자주쓰는 것들이 익혀지지 않을까 생각된다.

project는 java중에서 가장 흔한 messaging client정도로 만들고,
나중에 android나 cocoa등을 할 때, 비슷한 client를 만들어서 붙여보면 되겠다.

project까지 해서 7월 1일 정도면 정상적인 framework 하나 배우는 시간이라고 볼 수 있다.



SWT?
SWT는 Eclipse에서 사용하고 있는 GUI client이다.
GUI로 java쪽에서 가장 먼저 배우는 AWT와 swing과 별반 다르지 않다.
하지만, system의 resource를 그대로 사용하기 때문에 마치 vc++나 cocoa로 만든 것 처럼 보인다.
물론, 속도도 swing보다는 빠르다.(설마 그 보다 느린 건 없겠지만)


SWT를 고른 이유 :
SWT를 배워보려는 것은, 그동안 html과 js/css를 이용한 가볍고 자유분방한 presentation 계층을 이용하는 웹 개발자는,
rich client를 이해하는데 적절하기 때문이다.
물론 이것은 앞으로 많은 사람들이 (취미삼아) 프로그래밍을 할 android나 iPhone app 등에서의 개발 방법과 사용법 등을 편하게 익히는 데에 도움이 될 것 같다.
또한 java를 이용하기 때문에 익숙하지 않은 java에 익숙해 지는 효과도 있을 것이다.


잠시 쉬어가기 :
iPhone덕에 App의 세상이 재림한 듯 하지만, 게임과 같이 필수적인 분야가 아닌 다음에야 web이 다시 호령할 것이라고 생각된다.
html5가 CSS3등의 지원을 받으면서 MS까지도 windows8에서 vb나 c# 대신 html5를 기본적인 windows app 언어로 사용하겠다고 하고 있다.
그렇다면 당연히 html5 study를 해야 할 테지만, 아직 IDE도 framework도 쓸만하지 않고,
또한 html5 framework도 기본적으로 방법론은 비슷해지기 마련이다.
어쨌건 경계를 허물고 석권하는 쪽은 html5쪽이라고 생각된다.


HelloSWT :
항상 그렇듯이, Hello부터 시작한다.

일단, 

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;

public class HelloSWT {
   public static void main (String[] args) {
      Display display = new Display();
      Shell shell = new Shell(display);
      shell.setText("My Eclipse SWT Window");

      shell.open();
      while (!shell.isDisposed()) {
         if (!display.readAndDispatch()) display.sleep();
      }
      display.dispose();
   }
}

이렇게 치고 실행을 하면... 좋겠지만,
자신의 환경에 맞는 SWT가 필요하다. 물론, eclipse.org의 swt로 가서 (http://eclipse.org/swt/)
Release/Stable의 자신의 환경에 맞는 버전을 download 받은 후 압축을 풀고,
swt.jar를 사용할 수 있는 곳에 놓는 것이 맞겠다.
에러가 난다면, Build path에서 swt.jar를 등록해 주고, Native library location: 에서 swt를 푼 디렉터리를 등록해 주면 될 듯 하다.


code :
위에서 보면 AWT였을 때,
Frame f = new Frame("hello");
f.show();
면 되었던 것이, 웬지 늘어난 code량을 보여주고 있다.
SWT의 Shell은 보다시피 AWT의 farme과 같은데, Display 를 받아서 그쪽으로 표현해 주고 있다.
아마도 Display가 OS와 SWT의 매개체 역할을 해 주고, 각 OS에서 발생하는 이벤트를 적절히 변환시켜 주기도 할 것이다.

또한  vc++이나 cocoa/iPhone 프로그래밍에서 보았던, 무한루프가 보인다.
GUI 프로그래밍에서 보통 저 루프가 빠지기 힘들다. 루프를 도는 동안 별 일이 없으면 쉬고,
뭔가 입력이 있으면, 처리를 하는 것이 기본적인 app 개발이다.


정리 :
ok. 여기까지.
hello world를 하고 나면, 우리는 거의 대부분의 것을 할 수 있다.
적어도 window를 가지고 있고, 거기 안에 무슨 짓이든 (어떤 낙서이든) 할 수 있게 되는 것이다.
하지만 늘 그렇듯이, <form> tag를 배우고, javascript를, form 처리를 배워 나가듯이,
일단, SWT의 주요 목적이 Rich Client이므로, 다양한 form들을 죽죽 만들어 나가 보면 되겠다.

댓글 없음:

댓글 쓰기