OSX, Linux, Windows 이식 가능한 GUI 프로그래밍...

이한길의 이미지

OSX, Linux, Windows 이식 가능한 GUI 프로그래밍...을 한다는 것이 당연히 나와있는 솔루션도 있고 불가능하지도 않습니다. 언뜻 떠올려봐도 가장 널리 알려진 자바 스윙이나, 이클립스와 함께 개발되는 SWT가 있겠습니다. 자바를 벗어나고 싶다면 모노 프로젝트의 GTK#을 사용할 수도 있겠습니다. 또 XUL이라는 것도 있습니다. 그리고 어쩌면 더 먼저 언급을 하는게 맞았을지도 모를 GTK+나 Qt도 있습니다.

아.. 그리고 리눅스와 윈도우만 사용한다면 D언어와 DWT를 사용할 수 있겠군요. 아쉽게 언제부턴가 OS X용은 없더군요. 해볼려고 했는데, 실력의 부족으로 .. 사실 D언어를 알지 못하고 시도한 탓도 있지만 결국 못했습니다.

그런데 이런 것들을 사용하려고보니 죄다 사용자가 뭔가 설치를 해야만 합니다. 물론 몽땅 묶어서 배포해도 되겠지만 창 몇개 띄우자고 매우 복잡해집니다. 그래서 생각해본것중 하나는 웹 인터페이스를 사용하는 것입니다. 그런데 이렇게 하려고 하니 GUI에도 제약이 있고 이것저것 개발도 복잡해집니다.

물론 제가 하는 일이 이런 개발을 요구하는 것은 아닙니다. 단지 취미로 뭔가를 하려고 할때, 제가 맥과 윈도우를 번갈아가면서 쓰는 경우가 많기 때문에.. 한쪽에만 메이고 싶지 않아서 자꾸 걸려서 고민하는 것입니다만... 좋은 솔루션을 찾고 싶어서 글을 씁니다. 물론 제가 아는게 많지 않기 때문에 이미 좋은 솔루션이 나와 있는데, 이런 고민을 하고 있는 것인지도 모르겠습니다. 혹은 처음부터 아예 가능하지 않은 것을 고민하고 있는 것일 수도 있겠습니다.

그럼 많은 개발자분들의 의견을 부탁드립니다.

Mr. 하늘의 이미지

우선 기분나쁘게 듣지 않으셨으면 좋겠습니다.
제가 볼때는 너무 편한 방법을 찾으시려는것 같은데요.
스윙과 SWT도 검증된 좋은 솔루션이고, 웹은 복잡하다기보다는 알아야 할 것이 많아 발담그기가 힘든것이 사실입니다.
OS제작사들끼리 협력하지 않는 이상 말씀하신 것들 이상의 방법이 가능할지 모르겠군요.
질문하신 것에 대한 답변으로는, 더 좋은 솔루션이 현재까지는 없다는 것이겠지요^^

이한길의 이미지

전혀 기분 나쁘지 않습니다. 편한 방법을 찾고 싶어서 많이 고민했고 그래서 글을 올린 것이니까요.. 사실 웹 프로그래밍은 많이 해 왔기 때문에 발담그기는 전혀 어렵지 않으나, 담그고 나서가 복잡하다는 것은 웹 프로그래밍을 해 보셨다면 잘 아실 것입니다. 사실 생각해본 구조는 아주 작은 웹 서버 프로그램을 만들고 그 웹서버에 자바 스크립트 파서를 넣어서 서버사이드와 클라이언트 사이드를 같은 언어로 작업할 수 있도록 만드는 것이었는데, 이런 작업을 손쉽게 할 만한 언어는 자바고, 그렇다보면 차라리 스윙을 쓰는게 낫겠다는 결론에 이르게 되더군요. 그런데 도무지 한동안 많이 사용한 스윙은 쓰고 싶지가 않으니 별수 없지요..ㅎㅎ 물론 C로 할 수도 있겠지만 배보다 배꼽이 큰 결과를 낳게 될것 같고요..

----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com

snowall의 이미지

wxWidgets는 어떻게 생각하시나요?

http://www.wxwidgets.org/

피할 수 있을때 즐겨라! http://melotopia.net/b

이한길의 이미지

좋은 생각입니다만... 개인적으로는 Qt를 선호하는데, 혹시 wxWidgets이 특별한 이점이 있나요? 전에 Code::Blocks 과 함께 사용하는 아름다운 스크린샷을 본적이 있긴 합니다만... 해보진 않아서 잘 모르겠습니다..

----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com

lazycoder의 이미지

일반적 업무용이라면 filemaker를 강력히 추천하는데..
단점은 iPad, iPhone까지 지원하면서도 리눅스는 지원하지 않습니다.
또.. 결과물이 이쁘긴 하지만 UX가 우리나라 유저들의(회사다니는 약간 컴맹스러운 일반인) 정서에는 잘 안맞는거 같습니다.
그 입맛에 맞추려면 생산성이 낮아져서 매리트가 좀 반감된다는 점..

realbasic도 있는데.. 이건 비주얼베이직 쓰시던 분이라면 쉽게 적응하시겠더군요.
이건 평가판도 설치해 본적이 없습니다. 제가 VB 언어에 알레르기같은게 있어서.. 아예 고려대상에서 제외.. -_-;
회사에서 사주고 시간도 준다면 한두달 파고 들 의향은 있습니다.

c#을 좀 아시면 sliverlight도 괜찮은데.. 맥에선 마땅한 개발툴이 없습니다. 아시겠지만 모노디벨로퍼는 맥에서 한글 입력이 안되죠..

이한길의 이미지

filemaker은 유료군요.. 업무용도 아니고.. 돈을 드리고 싶진 않네요.. 잠깐 살펴봤지만 좋아 보이긴 합니다. 그리고 저도 VB는 알레르기가 있어서 별로고요.. 저 역시도 모노디벨로퍼가 괜찮다는 쪽으로 생각이 기울고 있습니다.. 그리고 맥에서 Gtk#으로 작성된 어플에 한글 입력하는 방법에 대해서는 "http://kldp.org/node/100718"글에 제가 적었던 적이 있습니다. 지금도 되는지는 확인해보지 않아서 모르겠지만.. 아마도 되지 않을까요?

그런데 silverlight를 사용하면 윈도우 외에서는 moonlight를 사용해서 돌리는거죠? 안해봐서.. 한번 해보기라도 해야겠습니다.. ^^*

----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com

lazycoder의 이미지

mono develop에서 한글만 처리된다면 완전 강추인데.. miguleicaza씨는 별개의 문제로 보더라구요.. 트위터에서 본 바로는.. 맥OSX에서는 쉬운 문제가 아닌듯 하더라구요.

그건 그렇고 QT쪽에 이런 움직임이 있던데.. http://qt.nokia.com/qtquick

이한길의 이미지

mono develop으로 만든 gtk#으로 만든 어플리케이션에 한글을 사용하는 것은, 특정 글꼴을 사용하려고 하지 않는다면 큰 문제는 아닌것 같습니다. 위젯들에서 한글 입력은 말씀드린 im-hangul로 잘 됩니다. 하지만 mono develop에서는 해보니까 그 역시 gtk#으로 작성된 것으로 알고 있긴 한데, 에러가 발생하면서 입력이 잘 되지 않네요. ㅡㅡ;

그나저나 소개해주는 Qt가 재미있어 보입니다.. *^^* 한번 살펴봐야겠는데요.. 고맙습니다..

----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com

sabzil37의 이미지

크로스 플랫폼 개발도 해보고, 웹도 해보고 여러가지를 많이 해보면서 느낀점을 말씀드리겠습니다.

UI툴킷 선택은 언어나 라이브러리적 문제보다는 어떤 목적의 서비스를 하를 하고
사용자가 어떤식의 동작을 기대 하느냐가, 툴킷 선택에 있어 많은 비중을 차지했던
것 같습니다.

제가 경험해본건, Qt, wxWidget, Gtk, Extjs, Mootools, FileMaker(^^;)등이 있습니다.
전부 일장일단이 있어서 뭐가 좋다. 대세다 이런건 없었고 개인의 취향은 있었네요

jQuery를 확장한 방식(Mootools)은 페이지 단위의 인터페이스에 적합하고,
어플리케이션 수준의 편의성을 줄려면 꽤 많은 삽질력이 필요했었습니다 (2008년기준)

그래서 ExtJs를 선택했고, 드래그엔 드롭등 윈도 어플과 거의 유사하게 구현할수 있었는데
문제는 DOM 객체가 엄청 많아서, 인터페이스가 복잡할수록 좀 느릴수밖에 없었구요.
(수백명의 스케쥴을 차트로 그렸더니;;;)

웹의 단점이라면, 브라우저 밖의 프로그램을 실행시킬 수가 없다는 것이였는데
커스텀 프로토콜을 이용하면 가능했었습니다. (아이튠즈 방식)

그리고 서버가 필요없는 커맨드향 소프트웨어는 wxWidget과 Qt를 썻었는데.
생각외로 wxWidget가 동적인 구현에서 조금 불안정한(깨지는) 모습이 있었습니다.

동적인 구현이라 함은, 수십개의 옵션이 있고. 옵션을 채크하면
동적으로, 폼에 그 옵션에서 필요한 추가적인 파라메터를 표시하는 것이였는데
많이 할수록 조금씩 위젯들이 깨지더군요. (제가 잘못했을 가능성이 크긴합니다만;)
그리고 OSX로 가져갔을때 룩엔필이 달라지면서, 픽셀단위로 맞춰둔 폼을
새롭게 재배열 해야되더군요..
wxWidget은 각 운영체제의 UI셋을 그대로 사용하기때문에 그런듯 했습니다.

그래서 Qt로 가서 QML이라던지, 테마등을 활용하니 편하더군요..
UI와 상관없는 소소한 명령들도 사용할수 있었구요 (스레드나 기타, wxwidget도 있음)

지금은 CMake+Qt+Python+Swig+Pyside+Vim, Pylons+ExtJS 조합으로 사용하고 있습니다.
(크로스플랫폼으로 개발할려면, IDE도 크로스플랫폼이 되는게 디버깅시 좋으니까요)

애초에 제가 자바 프로그래머가 아니라서 그런 부분도 있으니 감안하시길 바랍니다.

개인적 용무로 DB솝트웨어(억세스같은)용으로는 FileMaker 완전 강추합니다.

이한길의 이미지

다양한 경험을 해보셨네요.. 사실 저는 제대로 해본적은 거의 없고 고민만 하고 있었습니다. 해본건 자바 프로그래밍이 전부고.. Qt는 테스트정도.. 모노도 테스트정도.. 해봤습니다. 사실 자바 + SWT 로 하고, GCJ로 컴파일 해서 네이티브한 결과물을 만들어 내면 생각보다 괜찮습니다. 그런데 요즘엔 GCJ가 제대로 개발이 되지 않고 있어서.. 그다지 쓰고 싶지 않게 되더라구요.. 말씀해주신 조합도 괜찮아 보이긴 하는데요.. 제가 괜히 Python을 좋아하지 않아서.. ^^;; 생각이 조금씩 모노로 가고 있습니다..*^^*

----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com