로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
서평보기
SWT/JFace 인 액션
MATTHEW SCARPINO | 에이콘 | 번역서 | 2006-07-27
종합평점
도서수준
발빠른 SWT/JFace 서적 2007-02-01 오전 4:51:55 
평점
도서수준
조회수 (2330)
공감 (0)
임은천 님의 블로그
벌써 5시가 되어 버렸네..
보통 번역서를 꺼리게 되는 이유는 번역이 안 좋기 때문인데, 이 책에 대해서는 걱정 안 해도 될 것 같다. 번역이 잘 되어 있고 SWT/JFace를 자세하고 깔끔하게 설명하고 있다는 점이 이 책의 최대 강점일 것 같다.
혹여나 SWT/JFace를 통해서 플러그인을 만든다거나 RCP를 만들 때 기본 개념을 잡아 주기 좋은 서적이 바로 이 책이다. 물론 이 책에서 추천하고 있듯이 플러그인에 대한 건 Eclipse in Action(한글 번역본은 번역명이 조금 이상한 요술 램프로 빠져 볼까? 같은 식이었다.)
 
간단히 대략적인 내용을 살펴보면 이러하다.
1장에서는 SWT/JFace의 개념을 잡기 위해서 아주 적은 쪽수로 깔끔하게 요약 설명하고 있다.(5장 남짓)
 
2장에서는 실전 코딩 도입 부분으로 SWT로 작성한 소스와 JFace로 작성한 소스를 보여주는데, SWT 부분은 Windows 32 API 프로그래밍을 간소화 한 것 같다는 생각이 든다. 메시지 펌프에서 가져 오는 부분도 매우 눈에 익숙하다. 24p에서 만들게 되는 WidgetWindow는 이 책 내내 자주 사용되는 기본 껍데기 구현을 보여준다.
 
3장에서는 위젯과 컨트롤에 대해서 설명하고 있다. 30p에 실질적인 위젯과 하위 클래스들을 설명하고 있고, 그 중심에 Control이 있는 것이 보일 것이다. 너무나도 익숙한 버튼과 레이블도 눈에 보이고 말이다. 각 내용들을 적절한 양의 길이를 가지고 있는 예제들로 잘 설명해 주고 있다. 3장부터는 각 내용들을 Compisite로 묶어서 보여주므로 예제를 하나씩 쳐보면 차후에 Composite로 묶어서 CompViewer를 통해서 보도록 하는 구성으로 되어 있다. 그러므로 실제 구동하는 클래스는 별도로 com.swtjface.run이라는 패키지를 만들어서 작성해보는 것도 괜찮을 것이다.
 
4장에서는 이벤트 처리에 대해서 나오고 있는데 이전 Swing과 AWT에서와 크게 다르지 않고, 좀 더 세분화 되었다는 느낌 정도밖에 안든다. 물론 조금 특이한 무형 이벤트를 통해서 소스 코드를 모을 수 있는 효과는 있다. 잘쓰면 코드가 간결해지는 것은 사실이다. JFace의 경우엔 이 이벤트 처리를 좀 더 단순화 해서 Action과 Contribution이라는 개념을 지원한다. Action은 실질적 동작을 가지고 있고, Contribution은 단일 이벤트 핸들러라고 생각하면 된다. 해당 로직은 64p에 깔끔하게 그림으로 보여지고 있다. 이걸 연결할 때는 fill 메서드를 이용한다.(69p 참고)
 
5장에서는 단일한 성격을 지니는 위젯을 위주로 다루게 된다. 기본 Text 위젯, StyledText 위젯(Swing이 생각난다. Plain Document, StyledDocument)은 SWT 쪽이고 JFace에서는 TextViewer와 문서라는 개념이 있다. SWT가 좀더 API와 비슷하기 때문에 JFace의 소스는 좀 더 긴 편이다. 그래서 개인적으로 SWT가 더 맘에 든다. 그외에 Toolbar, Coolbar, Slider, ProgressBar, ProgressIndicator가 나오는데 이 내용을 보면서 Windows 32 API 코드가 잠깐 떠올랐는데, 어쨌든 그 소스 보단 훨씬 단순하다는 생각이었다. 게다가 효과 만점이다!
 
6장은 언제나 빠지지 않는 레이아웃이 나온다. 필, 행, 그리드, 폼, 맞춤 레이아웃이 나오는데, Swing 보다 좀 더 단순해진 느낌이다. 다만, Form Layout이 개념적으로 단순하다고 하는데, 본 독자로써는 오히려 더 번거롭다는 느낌이 든다. 물론 RadialLayout처럼 사용자가 정의하는 레이아웃은 꽤나 재밌었다.
 
7장은 그래픽을 다룬다. Swing과 별 다른 느낌은 없다. 다만, Swing보다 속도가 빠르다는 건 항상 따라다니는 것 같다. 신기했던 건 GIF 부분이었는데, 도무지 animated GIF를 생성하는 부분은 동작하지가 않았다. 뭐가 문제인지 알 수가 없었다
 
8장은 트리와 리스트이다. 프로바이더라는 게 뭐고, 필터와 정렬기는 뭔지를 설명하고 나서  트리와 리스트를 자세히 다뤄주고 있다. 물론 SWT에서는 TreeItem이라는 게 나오고, JFace에서는 다른 곳에서와 마찬가지로 Tree/ListViewer에 대해서 설명하고 있다. 어쨌든 열심히 타이핑을 해보면 책의 내용과 동일한 결과를 얻을 수 있다.
 
9장에서는 테이블과 메뉴를 다루고 있다. 리스트에 비해서 조금 더 복잡해진 정도이다. 왜냐하면 테이블에는 열과 행이 있기 때문이다. 어려운 것은 없고 그냥 쉽다. Swing과 비슷한 부분이 꽤 있다. 메뉴는 많이 접할 수 있는 거고 실제로도 구현이 쉽기 때문에 읽어보고 타이핑 해보고 넘어가면 되겠다.
 
10장에서는 대화창을 다룬다. 책에서도 나오지만 Swing의 JOptionPane이 떠오르는 장이다. 별다른 건 없고, ProgressBar, ProgressIndicator를 사용해서 처리량을 다루는 내용이라던가 사용자가 작성한 대화상자라거나 하는 건 Swing과 비슷하다.
 
11장에서는 마법사를 다루는데, 설치를 한다거나 초기 설정을 한다거나 사용되는 그 화면에 대한 처리를 하는 역할을 한다. 실제 내용은 249p의 소스를 보면 금방 이해될 것이다. 여기에서 기억해야 하는 내용으로는 245p의 DialogSettings 클래스 정도가 있겠다. 여기에 설정이 저장되니 말이다.
 
12장에서는 고급 기능으로 데이터 전송을 위한 드래그&드랍, 클립보드 사용 등을 다루고 있다. 역시 Windows 32 API에서 드래그&드랍 구현한다고 삽질했던 기억이 새록 새록 살아났다. 암튼 그 때 삽질했던 내용이 JNI를 통해서 Wrapping 되어 있다고 생각하게 되었다. 268p에서는 환경 설정 페이지가 나오는데, 이클립스의 preference 메뉴를 눌렀을 때 뜨는 화면을 떠올리면 된다. 그리고 276p의 레이블 데코레이터는 이름에서 느껴지는 것처럼 데코레이터 Pattern으로 되어 있는데 프로바이더에 데코레이터로 전달을 하면 레이블에 추가적인 내용을 표현할 수 있다. 277p를 보면 명확해질 것이다. 281p에서는 Browser 위젯을 다룬다. 아주 쉽게 웹 브라우저를 작성할 수 있다.
 
13장에서는 RCP를 다룬다. 특히 실제 독립형 애플리케이션을 만들어 봄으로써 감각을 익히도록 배려하고 있다. 다만 책 내용과 다르게 3.2에서는 많이 변경된 내용이 있어서 MANIFEST.MF에 작성해야 되는 내용도 조금 있었다. 실제 구동이 잘 안될 수도 있는데, googling을 잘 해보길 바란다.
 
부록 A에서는 실제 구동 환경을 만드는 것을 다루고 있으므로 13장에 잘 안되었다면 이 장 내용도 참고해 보기 바란다.
 
부록 B에서는 OLE와 ActiveX를 SWT에서 사용하는 방법을 다루고 있다. COM에 대한 개략적인 설명을 요약적으로 잘 설명하고 있으며, 내용을 보다가 머리에 쥐가 나는 것 같으면 그냥 341p의 예제나 보면서 그냥 사용하도록 하자. 다만 원하는 내용을 얻으려면, 343p처럼 OLE Viewer로 봐서 내용 확인 후에 결국엔 357p의 소스처럼 작성해야 하지만 말이다. 저렇게 하느니 그냥 ATL이나 MFC를 지원하는 ActiveX를 사용하겠다 -_ -
 
부록 C에서는 Draw2D를 이용한 가변형 GUI를 다루고 있다. 이 장에서는 도형들에 대한 정의와 연결선에 대한 정의를 해서 흐름도를 그리는 프로그램의 기초를 닦고 있다. 다 해보면 드래그&드랍이 가능한 미리 그려진 흐름도가 보일 것이다.
 
부록 D에서는 GEF에 대해서 다루고 있다. 이 장은 상당히 머리가 아픈 장이므로 RCP를 좀 더 만들어 보고 그래픽 Editor를 만들어 보고자 할 때 참고해 보시길 바란다. 내용은 깔끔하고 정리가 잘 되어 있지만, 직접 문제를 해결하면서 코딩하는 것과는 천지차이 이므로 아무리 저자가 어떤 식으로 구동된다고 말을 해주더라도 부딪히기 전에는 알기 힘들 것 같다.
 
이렇게 대략적인 내용들을 살펴봤는데, 아마 자바 개발자라면 많은 관심이 갈 거라 예상된다. 책 내용이 좋고, 깔끔하므로 추천한다.
 
약간 수정해줬으면 하는 내용은 아래와 같다.
63p
Actionb
-> Action
157p
220X120인 이유는 픽셀수가 20이고 numrows가 6, numCols가 11이므로
20X6 = 120
20X11 = 220
174p
정할 수 기회가
-> 정할 수 있는 기회가
변경으로정렬한
-> 변경으로 정렬한
196p
예뢰를
-> 예외를
338p
받아드리고
-> 받아들이고
372p
FreeformLayerdPane
-> FreeformLayeredPane
374p
틀린 건 아니지만
확장성에 흥미가 있다 보단
화면을 확장하는 것에 초점을 맞춰다
라는 식으로 수정하는 게 의미가 좀 더
명확할 것 같다.
405p
추적한다,
-> 추적한다.
 
 
[점수]
통합성 : 100점 / 100점
용어 선정 : 100점 / 100점
주석 점수 : - / -
참고 서적 : - / -(자체가 참고 서적이다)

 
코멘트 0   공감 0
코멘트작성
 
이메일주소수집거부