최근에 제가 간단한 프로젝트를 하고 있던 중에. UI 개발이 필요한 부분이 있었습니다.

 

웹 UI 로 하기에는 귀찮고 빠른 개발을 필요로 했기 때문에 때문에 java와 eclipse 기반의 UI builder 종결자가 필요했었습니다. 직접 사용해보니. 확실히 20-30% 정도 생산성이 늘어난 것 같습니다.

 

StackOverflow에 보니 WindowBuilder Pro 이클립스 플러그인이 java UI Builder 라고 추천이 되어 있어서 사용하게 되었습니다. 혹시나 저처럼 빠름 개발을 위해서 또는 데모를 위해서 UI 개발이 필요한 사람에게 도움이 될까 해서 내용을 작성해 봅니다.

 

WindowBuilder Pro는 구글이 내놓은 구글 자바 개발 툴 4개 중의 하나입니다.

(나머지 3개는 WindowTester Pro, CodePro AnalyiX, Goolge web toolkit 입니다.)

 

저는 기존의 Swing/AWT를 개발 경험이 있었던 지라, 학습은 2-3시간 정도만 했더니 쉽게 이해할 수 있었습니다.

UI 개념을 이해한 상태라면, 빨리 익숙해질 수 있는 UI 를 가지고 있습니다.

 

단순히 Swing/AWT 뿐 아니라, GWT, Swing, SWT UI를 제공하고 있습니다. 따라서 이클립스 플러그인의 UI 화면을 설계할 수 있지요. 구글이 정리해주니까 좋긴 하네요. 전에는 이런 툴을 10불 주고 샀었습니다. ^^;;'

 

 

 

 

큰 기능을 먼저 말씀드리면, UI와 소스 뷰를 동시에 제공하기 때문에 design된 화면과 소스를 동시에 전환하면서 개발할 수 있습니다. UI component를 붙이면 자동으로 소스가 생성하고, 그 생성된 소스를 수정하면 바로 desing UI에 반영하는 형태를 가지고 있습니다.

 

또한자바의 ResourceBundle 클래스를 이용해서   i18n(internationlization)을 제공합니다.

 

 

 

 

코드에 팩토리 패턴을 추가할 수 있습니다.

 

 

 

그리고, 제가 좋아했던 이벤트 핸드러를 쉽게 지정할 수 있습니다.

button에 더블 클릭하면 ActionListener를 상속받은 anonymous class가 생성되고 바로 이벤트 처리를 할 수 있는 코드가 생성됩니다.

 

마우스 오른쪽 UI를 통해서면다양한  event를 쉽게 넣을 수 있습니다. 기존에는 이런 api들을 일일이 알고 습득하고 시행착오를 겪으면서 사용했어야 할 api들이 바로 개발툴을 통해서 쉽게 개발이 가능하게 됩니다.

 

 

 

 

메뉴 추가도 그리 어렵지 않습니다. drop&drag 형태로 추가를 할 수 있습니다.

 

 

 

깜짝 놀랜 점은 Layout이 잘 지원하고 있다는 것입니다. 이 부분은 SWT, Swing, GWT 의 Layout을 잘 알고 있을 때에만 쉽게 쓸 수 있다는 한계가 있긴 하지만. 상당히 도움이 되고 있습니다.

Swing의 경우는 FlowLayout이 디폴트 layout이지만.. 빠른 개발을 위해서 Null Layout(Absolute Layout)을 사용하면 진짜 빨리 개발이 가능합니다. 제가 이렇게 해서 좀 덕을 봤습니다.

 

 

 

 

 

 

 

 

Google Web ToolKit과 연동이 쉽습니다.

GWT Application의 테스트 케이스, 어플 실행, 이미지 번들, 리모트 서비스등 다양한 연동이 가능합니다.

 

 

 

UI  적인 요소 외에 Data Binding을 지원합니다. Model-View를 bind해주는 기능을 Swing, JFace, SWT, EMF에 지원하여 좀더 멋진 코디가 가능하게 됩니다.

 

 

 

이런 Design 툴의 큰 약점은 바로 소스 generation시 상당히 지저분 코드로 나온다는 점입니다.

Visaul cafe라던가 Borland JBuilder를 써보신 분은 아마도 치를 떨었던 부분이지요. 특히나 JBuilder는 custom java component가 추가되면서 상당히 불편한 점이 있었습니다.

 

이런 부분에 대해서 고민했는지. WindowBuilder Pro 에서는 Preference를 제공합니다.

 

 

 

코드가 생성될 때, 어떤 코드로 만들어질지를 선택할 수 있습니다.  디플트가 아마도 block 모드라서 처음에는 지저분할 수 있는데, flat모드로 바꾸면 됩니다.  그렇다고 해서 아주 깨끗한 코드는 만들어지지는 않습니다.

다만 주관적인 특성상, 기존 망했던 제품보다는 훨씬 나아보입니다.

 

 

flat 모드

 

block 모드

 

 

flat mode

 

block mode

 

 

마지막으로 이 제품은 튜토리얼이나 시작 문서가 있으니. 대충 써보면 감을 잡고 쉽게 사용가능합니다.

http://code.google.com/intl/ko-KR/javadevtools/wbpro/quick_start.html

http://code.google.com/intl/ko-KR/javadevtools/wbpro/tutorials/index.html

Posted by 김용환 '김용환'