GUI 에디터의 효용성

sugarlessgirl의 이미지

안녕하세요,

저는 초보 프로그래머입니다.
요즘 Java 의 Swing 을 공부하고 있는데요.

연습삼아 간단한 프로그램을 만들면서,
GUI는 NetBeans 의 GUI 에디트 기능을 이용해서 만들고 있습니다.

그런데 GUI 에디트 기능을 사용하면서,
그 효용성에 의문을 제기하게 되었습니다.

첫째로..
자신이 만든 커스텀 컴포넌트는 GUI 에디트 기능을 이용해서 추가하기가 어려워 보입니다.

둘째로..
직접 코드를 변경해야 할 경우.. 코드 변경이 어렵고,
그것이 바로 GUI 에디트 화면에 반영되지도 않습니다.
(직접 코드를 변경할 필요가 없을 정도로 GUI 에디트 기능이 완벽하지도 않은 것 같습니다.)

GUI 에디트 기능을 쓰는 것은 나타날 프로그램의 GUI 를 미리 보면서
디자인 할 수 있기 때문에 쓰는 것인데.. 저렇다면 GUI 에디트 기능을
쓰는 의미가 없습니다.

셋째로..
자신이 만든 FACADE 클래스를 적용하기가 어렵구요,
GUI 에디터는 대체로 객체지향을 완전 무시한 난잡한 코드를 생성해 내는 듯 합니다.

GUI 배치도 Layout 관리자에 의해 배치시키고,
타이핑의 불편함도 코드 자동 완성 기능이 해결해 주기 때문에..

차라리 직접 코드를 작성하는 것이 오히려 더 부드러운 개발을 할 수 있을 거란 생각이 듭니다.

제가 GUI 에디팅을 지원하는 개발툴을 많이 접해보지 못해서,
성급한 결론을 내린 건지도 모르겠습니다..

여러분들은 GUI 를 작성할때,
직접 코딩하시나요? GUI 에디터를 사용하시나요?
그리고 그 효용성에 대해서는 어떻게 생각하시나요?

dakrink의 이미지

PHP, JAVA같은거 편집할때는 GUI보다는 그냥 일반 텍스트 에디터 쓰는게 편하더라구여..

처음부터 그렇게 사용해서 그런건지

일단 에디터 사용의 경우도 처음에 어떤 에디터를 접했는가가 중요한거 같더군여.. :D

fender의 이미지

음... 제가 볼 때 말씀하신 문제는 꼭 GUI 디자이너의 문제는 아니라고 봅니다. 프리젠테이션 관련 코드와 비즈니스 관련 코드를 분리하는 문제는 어떤 툴로 만들었나보다는 설계에 따라 좌우되지 않나 싶습니다.

물론 많은 디자이너가 좀 코드가 난잡해지는 경향은 있지만 그나마 넷빈즈의 경우 상당히 양호한 편입니다.

차라리 위와 같은 문제 해결을 위해서는 XUL 같은 쪽을 알아보시는 게 현명할 것 같습니다. 스윙 같은 경우 luxor나 jelly를 추천해 드리고 싶군요.

그럼~

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

sDH8988L의 이미지

Hmmm...

만일에 Java에 국한해서 말씀하시는 거라면, 글쎄요...

Java가 Desktop Application 부분에서 힘을 쓰지 못하고 있기 때문에

GUI Editor가 좋지 않은 거라고 봅니다...

뭐... SUN에서 RAVE라는 Tool을 만들고 있는 거 같던데,(고슬링도 이 팀의 일원으로 알고 있습니다...)

그건 좀 제대로 된 GUI Editor가 있는 거 같아 보이기는 합니다...

아직 자유로운 GUI Editor는 없는 거 같습니다... Java에 한해서는요...

만일, 말씀하시는 GUI Editor가 Java에 국한되는 것이 아니라면, 당연히

GUI Editor를 써서 GUI를 만듭니다...

MS Tool들은 그런 것에 있어서는 타의 추종을 불허하지 않습니까...

특수한 GUI를 제외한다면, GUI를 만들어 내기 위해서는 상당히 좋죠...

물론, Borland 제품도 좋고요...

사실, 아직까는 그리 큰 필요성을 느끼지 못해서 그렇다고 할 수도 있겠지만,

Java IDE들이 제대로 된 GUI Editor를 만들지 않은 것은 정말 이해할 수 없는 일입니다...

많은 초보 개발자들이 간단한 GUI를 만들고 그에 해당하는 Action을 익힘으로써 어떤 개발 환경을 접하는 걸로 볼때, 좋은 GUI Editor 없이 많은 개발자들을 끌어 들일 수는 없는 일일텐데요...

뭐... Desktop부분의 개발 환경이 너무 않좋아서 그냥 한 마디 해봤습니다...

fender의 이미지

sDH8988L wrote:

MS Tool들은 그런 것에 있어서는 타의 추종을 불허하지 않습니까...

특수한 GUI를 제외한다면, GUI를 만들어 내기 위해서는 상당히 좋죠...

물론, Borland 제품도 좋고요...

사실, 아직까는 그리 큰 필요성을 느끼지 못해서 그렇다고 할 수도 있겠지만,

Java IDE들이 제대로 된 GUI Editor를 만들지 않은 것은 정말 이해할 수 없는 일입니다...

음... 좀 논란의 여지가 있겠지만 MS 비주얼 스튜디오의 GUI 디자이너가 자바 IDE의 디자이너에 비해 '타의 추종을 불허할 정도'로 뛰어나다고 보지 않습니다. 오히려 레이아웃 개념이 없는 한 세대 뒤떨어진 개념이라고 생각하는데요...

아마 비주얼 스튜디오를 이용해 국제화된 폼이나 자유롭게 크기를 변경할 수 있는 윈도우를 디자인해 보셨다면 어떤 문제가 있는지 아실 것입니다. GTK나 자바 스윙 등은 레이아웃 관리자의 개념을 도입해 이런 문제를 해결 하고 있지만 파워포인트 처럼 절대좌표에 찍어 넣는 것만을 지원하는 경우 이런 문제를 해결하기 어렵습니다.

참고로 최신 자바 IDE들의 GUI 디자이너를 소개해 드립니다. (넷빈즈의 경우도 절대 뒤떨어지지 않습니다 :))

Oracle JDeveloper 10g:
http://www.javalobby.org/thread.jsp?forum=61&thread=9275

V4ALL GUI-Builder (Eclipse plugin):
http://v4all.sourceforge.net/index_start.html

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

sugarlessgirl의 이미지

오오.. JDeveloper
스크린샷만 봐도 압박이군요.

실제 프로그램은 어떨지 모르겠습니다만..

제가 VS.NET 로 asp.net 공부하면서 그 편리성에 감탄했는데,
(이것도 깊게 공부한건 아니라.. 깊게들어가면 또 어떤 불편함이 있을지도 모르겠습니다. 그냥 넘어가주세요~ ^^; )

생긴게 비슷해서 그런지.. 왠지 VS.NET 을 연상시키네요.

툴 사용에 익숙하지 못해서 그런지도 모르겠습니다만..
지금은 GUI 작업을 넷빈스로 하던걸 Eclipse 로 옮겨서 직접 타이핑하고 있습니다.

자주 사용하는 것들을 Facade 패턴적용해서 따로 빼서 사용하구요,
GUI 요소들을 쪼개서 각각의 객체로 만들어서 (주로 JPanel 을 상속)
관리하도록 하는 편이 일단 귀찮기는 해도 훨씬 깔끔한 방법 같네요.

좀 더 실력이 쌓여서 그럴싸한 프로그램을 개발하게 될때는 또 어떻게 될지 모르겠습니다.

그나저나 주제랑은 별 상관없는 말이지만 Borland Together 정말 좋더군요..
다이어그램만 그리면 코드가 쫙쫙 만들어지니..

그나저나 fender 님 덕에 신기한 것 많이 알게되네요.

p.s 토론 게시판은 재미있어요. :D

sDH8988L의 이미지

물론, VS에서 사용하는 것과 같은 절대 좌표 개념이 Resizable Application을 만드는데에 걸림돌이 되는 것은 사실입니다...
그리고 Layout Manager의 개념이 좀 더 발달한 개념이라는 것도 사실입니다.

그렇지만, 중요한 것은 위에 있는 제 글의 마지막 부분에서도 말씀 드렸다시피 얼마나 많은 초보 Level의 개발자들을 잡을 수 있을 것인가 하는 겁니다...

사실, 처음 접하는 사람들한테 Layout Manager이런 거 이야기 하면 좋을 것은 없겠죠...

밖에서 보는 것처럼 개발자들이 사실 뭔가 아주 독창적인 대단한 것을 하는 것은 아닙니다...
다들 아시다 시피, 대부분의 개발자들은 단순한 작업들을 많이 하고 있죠...
특히 GUI에 해당하는 작업을 담당하는 부분이 그렇습니다...
물론, 특수한 GUI라면 해당될 문제가 아니지만, 많은 개발자들이 포진하고 있는기업업무용과 같은 Application들의 GUI작업들은 단순한게 사실입니다...
(Resizable Application 조차 많지는 않습니다...)

그렇다면, 접근의 용이성이 무엇보다 중요해지는 거 아니겠습니까...

물론, 제가 최근에는 Java용 GUI Tool들을 많이 써보지는 않았습니다만, 아직은 VS.NET에 대응해서 '이정도면 비슷하다고 할 수 있다'까지 온 제품은 보질 못했습니다... 동작의 유연성과 완성도를 포함해서 말이죠...

SUN에서 RAVE를 만드는 이유 중의 하나도 그런 것이라고 생각합니다...

지금까지의 Java는 솔직이 간단한 GUI하나 만드는데에도 뭐 이런저런 말이 많을까 하는 식입니다...

마치 예전에 VB가 나왔을 때처럼 아무 설명없이 버튼이나 다른 GUI Component들이 들어가 있는 GUI를 초보자들도 만들어 낼 수 있는 수준은 되어야 하지 않겠습니까?

fender의 이미지

저도 sDH8988L님의 말씀에 동감하는 바가 있습니다. 사실 그런 부분이 한 때 전세계 개발자의 60%가 VB 개발자라는 말이 나올 정도로 VB를 유명하게 했던 부분이지요...

GUI 디자이너만 떼어 놓고 본다면 그런면에서 VS 시리즈의 완성도는 높은 편입니다. 물론 앞에서 말씀드린 대로 레이아웃 관리 개념이 없는 것이 문제가 되지만 모든 어플리케이션이 국제화나 크기조정을 필요로 하는 것은 아닙니다.

하지만 어느 정도는 감안 해야 하는 것이, 최근 자바 IDE 들의 디자이너들의 경우 대부분 VS 같은 절대 좌표 기반의 레이아웃 관리자를 지원하기 때문에 그런 면에서의 단점은 거의 없는 편입니다.

오히려 클라이언트 보다는 웹UI 쪽에서 VS.NET이 앞서가는 부분이 있고 이는 자바 진영에서도 Java Server Faces나 이클립스의 웹 개발 플랫폼 등이 따라가는 과정에 있다고 보입니다. (UI 쪽에 국한된 이야기입니다 :))

하지만 개인적으로 클라이언트 어플리케이션의 UI를 디자인하는데 있어서도 VB가 유행했던 시절과 비교하기엔 이미 어떤 패러다임의 변화가 일어나고 있는 것 같습니다.

VB가 유행하던 시절에 조차 개발툴과 언어가 묶여 있고 프리젠테이션에 비즈니스 로직을 종속시키는 경향으로 인해 많은 문제가 있었습니다. 더구나 요즘 같이 국제화가 필수로 인식되고 다양한 형태의 어플리케이션이 요구되는 때에 UI 개발에 있어서도 어떤 변화가 필요하다고 봅니다.

제 생각에 클라이언트 어플리케이션의 미래는 XUL이 아닐까 생각합니다. 예를들어 XUL 뒷단에 SWT나 wxWindows 같은 크로스 플랫폼 툴킷을 붙이면 언어와 플랫폼에 독립적인 개발이 가능하지 않나 싶습니다.

HTML의 경우도 수많은 위지위그 편집기가 있었지만 결국 xhtml이니 css니 하는 방향으로 움직이듯이 클라이언트 UI 개발도 초보 개발자들의 편의성을 위해 바람직하지 못한 설계나 벤더 종속을 가져오는 방향으로 변해가지는 않으리라는 믿음이 있습니다.

VS.NET에 대한 sDH8988L님의 의견을 반박하기 위한 내용이 아니라 평소 관심있게 보던 부분이라 좀 자세하게 제 생각을 적어봤습니다 :) 말씀하신 RAVE도 한번 봐야 겠군요...

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

aero의 이미지

저도 Swing으로 프로그램 짤일이 있어서 Netbeans를 써봤는데요.
GUI editor를 사용하여 각종 Component들을 붙여서 UI를 만들고
코드를 보니 바로 써먹기에는 왠지 마음에 안들더군요.
어차피 모든 경우에 대해 표준적으로 코드를 구현하려면 피할 수 없는
부분이기도 하고. 요즘엔 Swing 자체의 MVC모델이 마음에 안든다고
개선된 HMVC, MVP모델등을 사용하여 프로그램을 작성하는 경우가
많은데 그런경우엔 더더욱 자동 생성된 코드를 사용하기가 좀 그렇지요.

그리고 JAVA GUI Editor들 대부분이 절대좌표를 기준으로 Component를
배치하기 위한 확장 class들을 제공하기 때문에 나중에는 그걸 달고
다녀야 됩니다. 물론 Grid layout이나 등등 Swing에서 기본적으로
제공하는 Layout을 쓰면 문제 없지만요.
그래서 저는 그냥 GUI editor로 UI를 만들고 생성된 코드를 보고
필요한 부분만 Copy&paste하는 식으로 카피해와서 쓰는식으로 작업했지요

자바진영에서도 그동안 GUI가 느리고 무겁다는 평을 듣고 개선하기
위해 많이 노력하고 있는걸로 압니다.

http://www.javadesktop.org 에 가보면 이런 평을 불식시키기 위한
많은 프로젝트들이 커가고있습니다.
XUL과 유사한것도 있고 skin기능을 넣는것도 있고 java native한
윈도우메니져도 있고 다양한 프로젝트들이 있습니다. 찾아 보시면
쓸만한 것을 찾을 수 있을겁니다.

위 싸이트에는 등록이 안된것들 중에도.
http://locutus.kingwoodcable.com/jfd/java/ale/ale.html
이것도 괜찮아 보이더군요.
각 Component들을 생성하고 이벤트만 정의한다음에
마치 윈도우즈의 Resouce파일처럼 따로 작성해서 지정만해주면
동적으로 잘 배치시켜줍니다.

M.W.Park의 이미지

fender wrote:
프리젠테이션에 비즈니스 로직을 종속시키는 경향으로 인해 많은 문제가 있었습니다.

맞습니다.
지저분한, 언제든지 변경 가능성이 있는 놈과, 그렇지 않은 놈은 분리시켜 놓아야 인생이 좀더 편해지죠. :)

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂