Swing 이 조잡하다구요?

kwon37xi의 이미지

개인적으로 자바 프로그래머를 꿈꿉니다.
서버 사이드가 아니라 Swing 이용한 클라이언트 사이드의 프로그래머가 되고 싶지요.
저는 윈도우가 싫어서 리눅스를 쓰는게 아니라 다양함이 좋아서 리눅스를 사용합니다. 제가 꿈구는 우리나라의 컴퓨팅 환경은 윈도우 없는 나라가 아니라, 리눅스,맥,윈도우, 그 외의 운영체제들이 대등하게 공존하는 것입니다.
그 다양함을 충족시켜주면서 최소한의 노력으로 멀티 플랫폼을 지원하는 클라이언트 사이드 기술로 Swing이 최고라고 생각하기 때문에 요즘 Swing으로 취직하기 어려운걸 알지만 Swing을 공부하고 있습니다.

화려한 스킨 기법과 편리한 이벤트를 통한 GUI 구현등...
툴을 쓰지 않으면서도 이렇게 물흐르듯이 프로그램을 짤 수 있고 미려한 화면을 자유자재로 구현하는게... 다른 언어도 Swing 처럼 쉽게 되나요?(저는 다른 언어로 GUI 프로그래밍을 해본적이 없습니다. 단지 윈도우와 리눅스를 사용하면서 본 것 뿐입니다)

그런데 아래에서 스윙이 조잡하다는 글을 읽었습니다.
Java Swing 의 단점은 속도에 있지, 그 GUI 프로그래밍 구현방식과 화면 구성이 매우 세련되다고 생각하고 있는데, Applet 은 조잡하다고 생각합니다만, Swing 이 어떤면에서 조잡한지 이해가 안됩니다.

다른 분들도 그렇게 생각하시나요?
속도를 제외하고 Swing 의 장단점과 미래에 대해서 생각하시는 바를 들어보고 싶습니다.
속도는, 시간이 해결해 줄것이라 믿기 때문입니다.

neocoin의 이미지

Swing 은 격찬을 보내고 싶지는 않습니다.
더구나, 제임스 고슬링이 초기 Java설계시 함수 포인터의 개념을 빼서
오직 Interface만을 이용해서 Event Driven을 만들어 나가는 부분은
아쉽습니다. 코드가 길어지지요. 일단, Java 의 언어적 보완점은 뒤로 하고
말씀드립니다.

저는 자바 클라이언트 쪽의 전문가는 아닙니다. 하지만, Swing의 MVC 가 아닌
다른 모델로 바꾸면 어떨까 종종 생각합니다.

아시다 시피 Swing 의 Smalltalk의 MVC의 약간 변형된
형태를 취하고 있습니다.

저는 이러한
http://java.sun.com/blueprints/patterns/j2ee_patterns/model_view_controller/
MVC 현재 구조에서

http://www.object-arts.com/EducationCentre/Overviews/ModelViewPresenter.htm
http://c2.com/cgi/wiki?ModelViewPresenter
로 바뀌면 좋겠다는 생각을 합니다.

하지만, 이미 구현되고 적용되고 있는 Swing에게는 이미 늦은 일이겠지요.

MVP 도 제가 지식을 축적하는 단계라서, 아마 좀더 경험을 해야 확신할수
있을것 같지만,
http://www.object-arts.com/Papers/TwistingTheTriad.PDF
에서 현재 Controller가 담당하는 사용자 interaction을 View단으로

옮기면, Windows Event 모델과 어울리고, Test하기 쉽고 속도 역시 개선될
소지가 많다고 생각합니다.

관련된 재미있는 글로는,
http://www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf
http://www.sdmagazine.com/documents/sdm0206b/
를 볼 수 있고 최근에 이런 방향으로 프로그래밍을 하려고 노력합니다.

모든 지식은
http://xper.org/wiki/xp/GuiTesting
http://xper.org/wiki/seminar/GuiProgramming
에서 얻었습니다.
----
여기서 부터 잡설입니다.

ps1.
http://eclipse.org 에서 SWT가 드디어 분리되었습니다. 구조는 역시
MVC이지만 속도는 믿을수 없지요. 빨리 이를 이용해서 작성된 복잡한
gui 프로그램을 볼 기회가 오기를 바랍니다.(eclipse 빼고 ;;)

ps2.
Swing 보다 Java 언어 자체를 개선해야할 여지는 많다고 생각합니다.
http://network.hanbitbook.co.kr/view_news.htm?serial=510
그런 관점에서 예전에 한빛에 번역된 이기사에 공감갑니다.

likejazz의 이미지

Quote:
속도를 제외하고 Swing 의 장단점과 미래에 대해서 생각하시는 바를 들어보고 싶습니다.
속도는, 시간이 해결해 줄것이라 믿기 때문입니다.

1995년 자바가 처음 선보였을때부터 제기되었던 문제입니다 .

다시 8년이 지난다해도 지금과 똑같이 언급할것입니다 . "속도는 시간이 해결해줄것이다 ." 라고 ..

아무리 PC 의 성능이 향상되어도 VB 보다도 느린 Java 의 Swing 을 아무도 선호하지 않을테지요 .

@ 컴퓨팅 환경이 발달할수록 사람들은 더욱 빠르고 최적화된것을 찾습니다 . 참 아이러니 하지요 ?

--
Sang-Kil Park

urstory의 이미지

Quote:
아무리 PC 의 성능이 향상되어도 VB 보다도 느린 Java 의 Swing 을 아무도 선호하지 않을테지요

설마 아무도 선호하지 않기야 하겠습니까? ^^

하나의 예를 들자면, jmsn 같은 경우는 msn의 클론으로써 Swing기반으로

만들어져 있고, 훌륭하게 동작하며 많은 사용자들이 리눅스, 메킨토시,

윈도우즈 시스템에서 사용하고 있습니다.

jmsn 사이트 : http://jmsn.sourceforge.net/

VB가 JAVA의 Swing보다 빨라도 리눅스, 멕에서 실행될 수 있는지

묻고 싶습니다.

JAVA의 Swing은 디자인은 다른 언어보다 나쁠지 모르지만, 그것보다

훌륭한 장점이 멀티플랫폼을 지원한다는 것입니다. (

앞으로 지원할 것이다. 가 아니라. 현재 지원한다는 것이 중요합니다. )

즉, 멀티플랫폼상에서 동작하는 윈도우 프로그램을 작성하기를 원하는

사용자에게는 좋은 솔루션이 될 수 있다는 것이지요.

그리고, Swing이나 JAVA는 속도면에서 (내부적인 기술적인 측면에서)

처음 세상에 등장했을때와 비교하여 엄청나게 속도향상이 있었습니다.

똑같은 Swing으로 만든 프로그램을 똑같은 머신에서 jdk1.3과 jdk1.4

로 실행해보면 속도차이를 실감할 수 있을 것입니다.

( 모 몇몇 프로그램은 비슷하겠지만 말입니다. )

----------
http://sunny.sarang.net
JAVA,Oracle,MySQL,Linux,PHP

thedee의 이미지

저도 잘 모릅니다만...

스윙의 디자인이 조잡하다는 것이 무슨 뜻이죠?
스윙의 외양이 촌스럽다는 것일까요, 아니면 스윙의 언어 디자인이
구리다는 것일까요?
전자라면 어느 정도 동의합니다. 좀 촌스러운 게 사실이죠. 네이티브랑
비교하여 낯설어 보이는 것도 어쩔 수 없다고 봅니다. 그러나 그렇담
좀더 user friendly 하게 외양을 바꾸어 주면 됩니다.

글구 후자라면, 이건 좀 아니다 싶습니다. 제가 아는 한 스윙은 아주
아름답게 디자인되어 있다고 생각합니다. 물론 스윙도 개발된지 꽤
되었으니 후발자의 입장에서 새로운 안목으로 스윙의 디자인에 대해
평할 수는 있습니다. 그러나 그렇다고 스윙의 디자인이 조잡하다는
얘기는 될 수 없지요...

그리고 스윙의 속도나 룩앤필이 문제가 된다면 또다른 GUI 프레임워크를
사용하면 됩니다. 이클립스 프로젝트의 SWT가 그렇지요.
이걸 exe로 만들어 주는 툴도 있구요(상용). 이것들을 사용하면 아주
빠르고 네이티브한 클라이언트 제품을 만들 수 있겠더군요.
AWT를 사용한, 빠르고 네이티브한 애플리케이션도 최근 본 적이
있구요.

또, 스윙을 이용한 상용 제품도 다수 나와 있지 않습니까?
스윙이 좀 느리긴 하지만 그것을 만회할 수많은 장점을 가지고
있으니까 스윙을 GUI 프레임워크로 채택한 거 아니겠습니까?

저는 기본적으로 스윙을 개념이나 표준으로 봅니다.
스윙의 플러거블 룩앤필이 그 예입니다. 스윙은 열심히 추상 룩앤필을
만들어 내지만 개발자들이 정작 찾는 건 네이티브 룩앤필입니다.
그 산물이 SWT일 테구요.
스윙으로 충분하다면 스윙을 사용하면 되고, 구현 언어를 숨겨야
할 정도로 네이티브한 룩앤필이 필요하다면 다른 GUI 프레임워크와
유틸리티들을 사용하면 됩니다.
그리고 표준은 언제나 스윙입니다. 당연히...

스윙의 미래... 잘 모르겠지만... 앞으로도 표준으로서의 추상적 접근을
계속하면서 속도도 빨라지고 기능도 풍부해 지고, 버그도 많이 잡고
그러겠죠?(하나 마나한 얘기를...-.-)

서지훈의 이미지

자바는 지금도 확실한 기능을 지원하는건 없는것 같네요...
마치 모든 java version들이 draft version(좀 심한 표현이지만 참고 들어보세요)인것 처럼.
저도 GUI 환경 작업은 M$랑 Java 들다 써 봤지만...
둘중에 하나 골라서 써라면... 차라리 지우너이 잘되고...
기능 업이 잘 되는 M$걸 써지 java의 swing이니 따른 java package를 써진 않겠습니다.
sun은 자바를 하나의 제품으로 인정치 않습니다.
그저... 이런게 있으니 써보라느 거지...
업이나 패치는 생각지도 않습니다.

제가 한번은 JMI인가를 사용해서 프로젝트를 진행중에...
어떤 기능에 문제가 있어 개발자(sun)들에게 메일을 보냈더니....
답장이라고 온게... 알아서 써라... 는 내용이었습니다.
한마디로 공짜 사용하면서 무슨 요구 사항이 많냐는 거죠...
껄껄껄...
전 그다음부턴 java는 전혀 손되지 않구 있습니다.

그리고 님꺼서 GUI 쪽에 관심이 많은 건지 프로그래밍에 관심이 많은 건지는 모르겠지만...
앞으로 계속 이쪽에서 숟가락 들고 살고 싶다면...
자바는 그냥 취미로 하고...
딴 쪽을 하시는게 모든 면에서 좋으실것 같네요...
참고적으로 말하자면... M$의 최종 목적은...
모든 OS에세 돌아가는 app 작성...
그러니깐 모든 OS의 통합이라고 말할 수가 있습니다.
이런 얘기는 재작년인가... 빌이 한 얘기구...
그리고 저도 그게 맞지 않나... 소심하게 생각을...

그러니 차라리... Swing 같은 draft version 은 그냥 취미 생활로 심심할 때 하시고...
GUI 쪽이면 M$꺼를 공부를 하세요...
이는 적극 추천입니다.

아니면... 계속 사용하시다가 java 욕하면서 전향을 하시든지...
뭐 그건 님 마음이지만...-_-ㅋ

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

추신_그리고 제가 보니깐 VC 나 VB나 Java 요즘엔 그렇게 속도 차이를 느끼기 힘듭니다. 그 차이를 느낀다면... 약간의 돈질 해서 시스템을 표준으로 맞추면은 됩니다. 속도는 요즘 시스템 사양이 빵빵해서 따지는 되도 없구요... 참고하시길.
요즘엔 어떤 프로그램이 빠르냐는 질문을 들은 사람들이 있나요?

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

urstory의 이미지

어플리케이션을 Swing으로만 개발을 하자. 라고 말을 하면

문제가 있다고 생각이 듭니다.

무슨 말이냐면, 프로젝트에 맞춰서 언어가 결정되고 도구가 결정되는

것이지 미리 언어와 도구를 결정한 후 그것에 프로젝트를 맞추는 것이

아니라는 것이지요.

Visual C++로 하는 프로젝트가 있는 것이고 Swing으로 할 수 있는

프로젝트가 있는 것입니다.

다만, 시장에서 자바로 만든 어플리케이션 보다는 Visaul C++이나

delphi등으로 만들어진 어플리케이션을 더욱 원한다면 Swing은

많이 이용되지 않을 수는 있겠지요.

하지만, 저의 경험한 바로는 Swing을 이용하여 프로젝트를 하는 경우를

많이 보아왔고 사용하는 사람도 잘 사용하고 있습니다.

Quote:

참고적으로 말하자면... M$의 최종 목적은...
모든 OS에세 돌아가는 app 작성...
그러니깐 모든 OS의 통합이라고 말할 수가 있습니다.
이런 얘기는 재작년인가... 빌이 한 얘기구...
그리고 저도 그게 맞지 않나... 소심하게 생각을...

위에 분의 말에 대하여 응답을 하나 하자면, 1997년도에 windows nt 4.0
이 나왔을 때 MS는 언론에다가 앞으로 UNIX시장은 죽는다고 엄청
떠들었습니다.

지금은 어떤가 돌아봅시다. UNIX시장은 더욱 커져있다는 것입니다.

시장이라는 것은 하나만 가지고 모두 처리하기는 불가능하다는 것이
저의 확신입니다.

델파이로만 3년을 개발한 아는 형이 Visual c++을 공부할려는 사람에게
이렇게 말하더군요.

"야 그거 하지마라. 그냥 델파이만 해도 다 할 수 있어."

위에 말이 그 분에게는 맞는 말일 수도 있지만, 모든 것에 적용될 수는
없는 것입니다. 그리고, Visual C++이 좋으니 다른 것은 하지말고
Visual C++만 하면되. 라는 것도 마찬가지겠지요.

자신이 바라는 것이 어떤 쪽인지 소신껏 밀고나가시기를 추천합니다.
그런 분들이 많을 수록 Swing은 더욱 아름다운 모습을 가지게 되겠지요.

그런것이 바로 kldp에 오는 사람들의 바람직한 자세가 아닐까요?

----------
http://sunny.sarang.net
JAVA,Oracle,MySQL,Linux,PHP

thedee의 이미지

어느 정도 플레임을 유발하는 글인듯 합니다...

그냥 기술적인 논의만 하면 되지 않을까요?
인생 상담까지 해 줄 필요는 없지 않겠어요?^^

글구...
자바를 드래프트 버전이라구 하는 건 좀 심한 말씀 같네요.
-아직 C++에는 표준이 없다라고 얘기하시는 분도 많던데...^^

글구...
자바 설치할 때 보면 소스도 같이 옵니다. 돈도 안받고 소스까지
그냥 껴주는 데는 이유가 있을 듯 하구요.

좋은 하루 되세요~

aero의 이미지

앞으로의 컴퓨팅 추세는 VM 기반이 주가 이룰것으로 생각되는데요
대표적인 걸로는 JAVA랑 .NET이 되겠죠.

JAVA의 GUI라면 SUN의 AWT,SWING
IBM이 주도하는 eclipse 프로젝트의 파생물인 SWT가 있고

.NET은 WinForm 이란걸 쓰죠?
mono같은 오픈소스 .NET 프로젝트에서는 GTK# 같은걸 만들고 있고

근데 GUI toolkit이라는게 설계가 잘됐다고 많이 쓰이는건 아닌것
같습니다. 많이 사용하는게 많이 쓰이는 거지요.

SWING도 설계가 어떻니 저떻니를 떠나서 규모가 있는 상용프로그램과
오픈소스 프로그램쪽에서도 많이 쓰는거 같더군요 그 퀄러티도 괜찮고요
UML모델링툴인 together도 SWING을 써서 만든거고
오픈소스쪽에 요즘 저도 애용하는 강력한 에디터인 Jedit(www.jedit.org)
도 Swing을 써서 만든건데 아주 만족할만한 완성도와 성능을 보여줍니다.

예전에 제가 GUI toolkit의 선택에 대한 토론주제를 올린적이 있는데
http://bbs.kldp.org/viewtopic.php?t=1452

뭐가 좋다 나쁘다가 아니라 적용환경과 개발환경에 적합한걸 선택해서
쓰는게 최고인거 같습니다.
요즘 프로그래머는 잘 하지도 않는 COBOL이라는 언어가 금액상으로 따지면
꽤큰 마케쉐어를 가지고 있고, 보통 GUI개발 자들이 관심도 잘 안가지는
UNIX의 motif도 아직 금액상으로는 큰 마켓쉐어를 가지고 있지요.
이유야 널리 쓰이지 않아도 적용되는 곳은 건당 큰 금액이 투입되기 때문이겠지요

어짜피 시장의 요구에 맞춰나가는게 정답이라는거죠.

xyhan의 이미지

스윙이라.. 예전에는 자바 느리다고 욕을 많이 했는데..
요즘은 뭐.. 그런것 같고 싸우는 걸 못 봤습미다..
개인적으로 클라이언트 GUI로써는 스윙보다는..
.net이 낳지 않을까 생각합미다.. 그냥 윈도우에선
빠르게 돌아 갈게 확실 하니까..

자바를 하다보면 C언어의 구조가 맘에 안들어 지더군요...

저는 리눅스에서 모노를 이용해 C랭귀지로 프로그램
짜고 싶어요... C로 짠 오픈 소스는 가독성이 떨어지죠...
조금 유연할 필요성이 있지 않을까요..

============================================================

선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-

============================================================

서지훈의 이미지

현재는 그렇지 않지만은...
.NET은 랭귀지 / OS (그렇다고 현존하는 모든걸 지원하기엔 불가능 할 듯) 에 구애받지 않고... 사용할 수 있는 환경을 만들어 주는 것이 아닌가 생각을 합니다.
저는 항상 생각을 하는게...
랭귀지 / OS는 하나의 도구일 뿐이라는 것입니다.
그런데... 어떤일을 함에 있어서...
한가지 도구로 모든 일을 해낼 수 있음...
얼마나 좋을지 생각을 해봅니다.
물론 자바가 안정성과 지원(돈되는 대형 업체것 만 지원하지 말고)을 좀 해주면은... 굳이 .NET 지금 나와봐야 별 빛도 못보고...
할 일도 없을 수 있습니다(빌이 중간에서 농간을 부리지 않는다면..-_-ㅋ).
그러나 이러한 것이 되지 않고 있으니...
그러나 자바는 자바 랭귀지를 사용해야 하는 산은 넘기가 싶지 않을 것 같네요.
그러나 .NET은 어떠한 언어에도 관계없이 된다는 거와...
돈을 내고 사용을 하기 때문에...
지원 문제도 자바보다는 낫지 않나 생각을 합니다.

그리고 제가 사용해본 프로그램 중...에 자바로 된것 몇 개 없었지만...
사용해본것 중에선 항상 실행 할 때 불안감이 들더군요...
이거 뻑나지 않을까?
뭐... 프로그래머의 문제이라고 할 수도 있겠지만...
웬지 꺼려지고...
불안한건 지울 수가 없네요...
이건 oracle을 설치 해보신 분들이라면 아마 아실 겁니다.

그리고 굳이 클라이언트 프로그래머쪽을 하실려면...
M$꺼 않하구...
Java만 가지고 먹고 살 수가 있을지 정말 의문이 드네요...-_-ㅋ
혹시 이걸로만 밥 드시는 분 있으시나요?
자바 클라이언트만 만져서...-_-ㅋ

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

추신_저도 시중에 있는 웬만한 랭귀지는 다 해봤지만...
Java 만큼 잘 뻗는건 솔직히 없는거 같네요...-_-ㅋ
저의 내공이 여전히 부족해서 그런지?

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

kwon37xi의 이미지

서지훈 wrote:

추신_저도 시중에 있는 웬만한 랭귀지는 다 해봤지만...
Java 만큼 잘 뻗는건 솔직히 없는거 같네요...-_-ㅋ
저의 내공이 여전히 부족해서 그런지?

저는 JEdit, JBuilder, JMSN 등 꽤 많은 자바 어플리케이션을 평소에 사용하고 있습니다.
전혀 안 불안합니다. 아주 잘 돌아갑니다.
그리고 수많은 상용 JAVA 어플리케이션들 아주 잘 돕니다.

하지만 문제는 JRE 1.4.1 이 SWING에서 불안한 것은 사실입니다.
1.4.1_2 이상의 버전을 사용하십시오.
아니면 1.3.1을 사용하세요.

JAVA SWING 으로 먹고사는 회사도 꽤 많습니다.
그 중 우리나라에서 대표적인 곳으로,
http://www.thinkfree.co.kr
http://www.techdigm.co.kr
외국엔 훨씬 더 많은거 같더군요.. 일단 JBuilder, Together 같은 대형 프로그램들이 자바로 만들어져있죠..

thedee의 이미지

그런데...
딴 포럼 읽다 보니까 정말 스윙이 조잡하다는 얘기가
있네요...
스윙의 어디가 조잡하다는 건지, 무엇이 조잡하다는 건지
좀 정확히 지적해 주실 분 있나요?
언어 디자인이든 룩앤필이든, 스윙의 고유한 문제든,
자바에게서 상속받은 문제든...

manea의 이미지

SWING정말 괜찮은 프로그램이죠.
생각한건 금방 만들어 낼 수 있습니다.
메모리 관리 걱정 VC++에 비하면 아주 조금 합니다.
JVM이 깔리는 곳이면 어디든 동일한 결과물을 보여줍니다. <-- 이래서 좋은거죠. (JVM 버전에 따른 차이는 제외하시기를 바람.)
내용구성이나 화면 디자인이 생각보다 훨씬 쉽습니다.
상상을 잘하면 화면디자인을 코딩로만 할 수 있습니다. (GUI 툴킷 필요없습니다.)
타 언어특히 VC++에 비해 소스코드의 양이 적습니다.
이것 말고도 좋은거 많죠.

하지만. 디자인 정말 조잡합니다. -> 룩앤필이 있지만 거기서 거기이고, JDK 5.0부터 새로 추가된 룩앤필도 허접하죠. 그런데 이부분은 CDE나 예전 X-Windows를 보면 알수 있듯이 동일합니다. 특히 Solaris CDE랑 너무 똑같죠. CDE에서 돌리면 이게 JAVA인지 아닌지 확인 하기 어렵습니다. Modif 룩앤필 사용하면 윈도화면에서도 유닉스를 사용하는듯한 새로움을 만끽할 수 있습니다. -> 하지만 금방 질리죠.

설계자체의 디자인은 정말 탁월합니다. -> 그 대신 특정 디자인이나 기능을 개선하기가 너무 어렵죠. SUN에서 제어를 확실히 하기때문에 오는 불편함이지만. 그대신에 아주쉽게 해당 기능을 구현할 수 있습니다.

특히 요즘 Windows XP이후의 디자인에 비하면 SWING 룩앤필은 정말 안타깝습니다. 구형 디자인이라 그렇다고 이해해야겠죠.
SWT는 정말 깔끔하긴 하지만 개념적으로 AWT와 얼마나 다른지는 모르겠습니다. 그냥 비슷해 보이기만 하죠.

위엣 분들 .NET에 대해서 말씀하셨는데. 정말로 UNIX에서 .NET을 돌릴 수 있단 말인가요? 아닌거 같은데요. 그냥 코딩 언어에만 자유로운거 아닌가요?

열정!! ^^

열정!! ^^