자바 데스크탑 애플리케이션

IBM Lotus Sametime Screenshot
앞의 이미지는 IBM Lotus 그룹웨어 제품군 중 메신저에 해당하는 Sametime의 스크린샷이다. 이뻐 보이긴 하지만
다른 메신저에 비해 유별나다할 만한 것은 없어보인다. 하지만 겉보기와는 달리 이 제품은 자바 데스크탑 애플리케이션이다.
그중에서도 SWT/JFace, 이클립스 플랫폼을 기반으로 하는 애플리케이션이다. 이미 많은 사람들이 이클립스 IDE를
사용하고 있기 때문에 자바 데스크탑 애플리케이션 자체가 그다지 놀라운 것은 아닐테지만, 이렇게 고급스러운 UI도
갖추게 할 수 있다는 사실은 이클립스 플랫폼이 앞으로 더욱 널리 쓰일 수 있다는 확신을 갖게 한다.
현재 근무중인 회사에서도 Lotus Domino Notes를 사용하고 있긴 하지만 Notes 자체는 아직 Outlook보다 여러가지로
부족하다고 생각한다. (좋은 면도 많지만 일단 속도 때문에…) 하지만 Notes의 시장 점유율은 둘째치더라도
선도적인 이클립스 플랫폼 애플리케이션의 역할은 충분히 하고 있다.
Sametime을 위한 플러그인 개발 문서에서
로터스 노츠가 이클립스 플랫폼을 멋지게 활용하고 있다는 것을 살짝 엿볼 수 있다.
GUI 플랫폼으로써의 이클립스
요즘은 많이 줄었지만, 왜 굳이 네이티브 언어들을 두고 자바로 데스크탑 애플리케이션을 개발하려고 하느냐는 질문을 받는 경우가 가끔 있었다.
(.NET까지 나온 마당에 이젠 논의거리도 안되는 듯 하지만…)
당연히 필자도 자바가 데스크탑 애플리케이션에 최적인 것은 아니라고 생각한다. 하지만 일단 자바에 익숙하고,
클라이언트/서버 구성인데 이미 서버가 자바라면 클라이언트라 자바로 짜면 좋을 것임은 당연하다. 스윙으로
개발할 때는 이러한 이유가 컸다. 이제는 SWT/JFace 덕분에 속도나 룩앤필 땜에 곤란할 이유가 없으니
안될 이유는 더더욱 적어졌다. 항상 최적의 연장을 쓰는 것도 좋지만, 연장을 갈고 닦을 동안은 그럭저럭 입에
풀칠만 할 정도라도 좋지 않은가?
GUI 플랫폼으로써 이클립스의 장점은 두가지로 생각할 수 있다. 첫번째 장점은 기반 플랫폼인 SWT에서 기인하는 것이다. SWT는 OS 고유의 룩앤필을 갖는 멀티 플랫폼 GUI 애플리케이션을 자바로 쉽게 개발할 수 있는 유일한 수단이다. Sun이 주장하는 “Write Once, Run Anywhere”는 바람직한 방향이긴 하지만 OS 고유의 색깔과 기능을 무시한다고 볼 수도 있다. 그런 면에서 SWT는 “로마에 가면 로마법을 따르라”라는 격언을 지키고 있으며, 이로 인해 OS가 제공하는 기능을 더 효율적으로 발빠르게 사용할 수 있다. 물론 이것은 장단점이 있는 부분이다. 스윙과 SWT의 우월성에 대한 논쟁은 대부분 무의미하다. 하지만 개발자의 취향이나 API의 아름다움과 관계없이 현 시점에서 사용자의 눈에 더 그럴듯 해보이고 성능도 더 좋은 것은 SWT일 가능성이 높으며, 앞으로 스윙이 OS와 대등한 수준의 플랫폼이 된다면 스윙 위에 SWT를 탑재하게 될 가능성도 있다고 본다. (최근에 SWT-on-Swing 프로젝트 몇가지가 나타났다.)
두번째 장점은 이클립스 공동체에서 기인한다. 이클립스 RCP는 기여(contribution)라는 철학을 GUI에 철저히 반영한 플랫폼이다. 모든 이클립스 구성요소는 서로 기여하기 때문에, 오히려 독립적으로 발전한다. 서로 협력할 것을 가정한 아키텍처가 잘 되어 있기 때문에 오히려 서로에게 영향을 덜 주고 자신의 일을 할 수 있다. 이로 인해 이클립스 공동체의 훌륭한 결과물들을 자신의 애플리케이션의 일부로 사용하는데 거부감이나 어려움이 적다. 가장 인기있는 서브 프로젝트로 EMF, GEF가 있는데 이와 같은 수준의 라이브러리를 플랫폼에서 지원하는 것은 매우 큰 장점이라 할 수 있다. 이런 라이브러리를 사용하는 것 자체가 다소 어려운 주제일 수는 있지만, 다른 플랫폼의 경우에는 몇몇 개발자의 전유물일 수 있는 수준의 라이브러리들이다. 이런 고수준의 라이브러리들을 표준화하여 많은 사람이 같이 고민하게 만들고 있다는 것 자체로 의미가 있다.

척 보기에도 이클립스다워 보이는 Nomad PIM
SWT/JFace 인 액션
SWT/JFace를 잘 활용하는 것은 이클립스 애플리케이션 개발의 기초일 뿐만 아니라, Sametime과 같이 멋진 UI를 위해서는 훨씬 더 폭넓게 적극적으로 사용할 필요가 있다. 장려할 만한 것은 아니지만 때때로 OS 의존적인 기능을 사용함으로써 더 멋진 애플리케이션을 만들어낼 가능성도 있다. 필자도 한 때 이클립스의 다른 멋진 프레임워크들에 눈이 멀어 SWT/JFace를 경시하였으나, 지금은 SWT/JFace 기초부터 다시 살펴보고 있다. (3.2에서 대폭 기능이 확대된 탓도 있다.)
현재 SWT/JFace 관련 서적은 그다지 많지 않다. 이클립스 환경이 워낙 빨리 변하고 있고 이클립스 플랫폼 자체가 대중적인 관심을 받게 된 것은 그다지 오랜 일이 아니기 때문이다. 오픈 소스기 때문에 플랫폼 자체가 예제 소스인 셈이어서 실제 개발에서는 책보다 소스가 더 유용한 경우도 많다. 하지만 플랫폼이 방대해지면서 이클립스 플랫폼 개발을 새로 시작하는 경우 책이 도움이 된다.
에이콘에서 번역출간한 ‘SWT/JFace 인 액션’은 SWT/JFace에 대해 가장 상세히 다루고 있는 책이다. 다만 책이 이클립스 3.0 버전 기준이므로 현재 버전(3.2)와는 실행환경에 다소 차이가 있다. 매우 아쉬운 부분이다. 하지만 현재 API는 3.0 API에서 기능이 추가되었을 뿐 바뀌지는 않았다. 이클립스에 익숙하지 않은 독자라면 그냥 이클립스 3.0을 설치하여 책의 예제를 공부할 것을 권한다. 물론 가능하다면 이클립스 개발환경에 먼저 익숙해지고, 버전에 맞추어 설정하여 사용할 수 있다면 더 좋다. 이 책은 API 학습서이며, 특성상 실전에 바로 쓰일 수 있는 예제는 거의 없지만 API를 익히기에는 좋은 예제들이다. 책의 예제를 한번쯤 독자가 직접 실행해 본 다음, 주제를 정하여 간단한 SWT 또는 RCP 애플리케이션을 개발해보자. 개발하는 과정에서 예제의 코드를 조금씩 갖다 쓸 수 있을 것이다. 이 책의 내용은 간단하지 않을 수도 있지만, 그 이유는 새로운 길을 가기 위한 첫걸음이기 때문이라는 것을 인식해야 한다. 더구나 이클립스 플랫폼은 너무나 빨리 변화하고 있는 시기이기 때문에(3.2 출시 한달만에 3.3M1이 릴리즈되었다), 책에만 의존해서는 따라잡을 수 없다. API 하나하나의 사용법보다는 기본 디자인 철학을 느끼는데 집중하면 더 좋을 것이다.
자바와 다른 GUI 플랫폼 개발 경험이 있다면 곧바로 SWT 개발을 시작할 수 있다. 스윙 개발 경험이라면 더 좋다. 하지만 어느 플랫폼이나 그렇듯 어떤 문제를 해결할 때 가장 효율적인 길을 찾는데는 어느정도 경험이 필요하다. 필요한 경험을 갖추고 나면 이클립스 플랫폼이라는 강력한 연장으로 뚝딱뚝딱 즐거운 시간을 보낼 수 있을 것이다.