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들을 죽죽 만들어 나가 보면 되겠다.

2011년 6월 8일 수요일

시작하기.

17년동안 바쁜척을 해 온 바쁜척의 달인 Madstorm이 뭔가 study를 시작해 보려 했으나...
역시 시간이 없는 관계로, 일단 blog에 쓰고 메일로 뿌려서 study에 대한 communication을 시도해 보려고 합니다.

물론, mailing list부터 시작하여 cafe, twitter, facebook, cacao tok 등의 많은 방법이 있지만, 워낙 communication에 약하다 보니, 적당한 것을 찾기도 힘드네요.

목표가 슈퍼프로그래머에서 슈퍼백수로 바뀐지라,
시간이 남아 돌겠다고 생각도 해 보았으나,
운동에, 독서에, 여행에, 새로운 언어에, 쓸모없는 자격증까지 따겠다고 하고 있다 보니까,
일단 말이 나온 study를 생각할 겨를이 없었습니다.

1.

처음에는 blog부터 chatting program, collaboration tool까지 하나씩 만들어가는 study를 하면 어떨까 생각을 해 보고, 사실 끄적여도 보았으나,
얼마 지나지 않아, 말도 안되는 공상과학 호러 무비를 찍고 있다는 사실을 눈치채고,
일단, communication 부터 찾으려고 합니다.

뭐가 좋을까요?
역시 cafe? "공상과학호러 프로그래밍 카페" 정도?
어쨌건, code block을 사용할 수 있는 곳 쪽이 좋지 않을까 생각됩니다.

=====================
2.

그 다음 이야기로는, 역시 target인데,
일단, 제가 슈퍼백수를 목표로 하고 있기 때문에 less commercial한 목표가 어떨까 생각합니다.
벌어먹든 빌어먹든은 알아서들 해결하시고,
일단 수준급의 프로그래밍이 가능한 base를 키우는 정도가 좋지 않을까 생각합니다.


======================
3.

역시 language and tool 차례인데,
물론 한국이고, 많은 분들이 java를 애용하다 보니, 초반에는 jsp + spring 같은 것으로 시작하는 것이 대세이겠지만,
또한 회사에서 학원에서 계속 만지던 것을 또 만진다고 하면 진저리를 치는 사람도 있을 것 같습니다.
이왕 java기반이라면 기초가 탄탄해지도록 presentation 계층이 window 기반 app이나 console tool 같은 것을 가는 것도 좋지 않을까 생각합니다.
(일단 그래서 SWT를 끄집어 놓기는 했는데...)

어쨌건, senior 프로그래머가 몇 명은 있으니, 역시 공상과학호러 키메라 프로젝트를 몇 개 시도해 보면 좋지 않을까 생각합니다.