저는 작년 어느 즈음부터 이클립스 (Eclipse) 기반 vs MFC와의 갈등을 경험하게 되었습니다.
어찌 어찌 하다 개발 프로젝트의 언어 및 전체적인 방향을 결정에 큰 영향을 줄 위치에 있게되었습니다. 아무튼..
저는 주로 C/C++과 MFC에 익숙했고 (그래서 평범하겠죠?) 이클립스도 1년여 동안 IDE로 사용을 해본 경험도 있긴했습니다. 이클립스를 1년 정도 쓰다 다시 Visual Studio 환경으로 오니 황무지에 낙타 한마리와 동행하는 느낌이 들긴했지만 어느 새 적응이 되었습니다.
(그래도 STL와 code guru, code project, devpia가 있는데 왜 Rich한 Java가 부럽냐라고 반론을 제기하는 사람이었습니다)
어찌되었던 작년 가을 정도와 올해 초 그리고 지금 (세 번이군요) 이클립스 기반이냐 MFC와 Win32기반이냐로 의견이 분분하고 신중한 결정을 내려야 하는 계절이 있었고 지금도 그러고 있습니다.
이클립스 편 – Eclipse
단적으로 이클립스로 가야한다는 쪽의 주장을 들어보고 분석해보면 아래와 같습니다.
■ 막강한 Plugin Model과 RCP
손쉽게 Eclipse Plugin으로 component 기반 개발 (CBD)를 할 수 있음
(이 것은 단순히 DLL을 이용해서 잘 만든 윈도우즈 기반 프로그램을 훨 씬 뛰어넘는 수준이겠죠)
그리고 3.2부터인가 나온 RCP (Rich Client Platform)는 IBM의 같은 프로젝트인 OSGi Framework 위에서 환상적인 많은 것들을 제공하고 있습니다.
■ Rich Environment
수 많은 Powerful한 Plugin (TPTP나 여러 가지…)을 비록한 유용한 지원 도구를 사용할 수 있음
■ OS Indenpendent (including GUI throught JVM, SWT, JFace)
무엇보다도 OS Independent할 수 있음
(저희 과제는 다양한 OS환경을 고려해야 했습니다. 다양한 OS에 올라가야 하는 것은 아니었지만)
특히 SWT와 JFace의 Look and feel은 swing과는 비교도 할 수 없을 것입니다.
그리고 Eclipse의 배포 정책에는 여러 다양한 환경 (OS를 포함한)을 지원하고 있습니다.
의 이유로 주창을 했고
Win32 및 MFC
C/C++로 GUI가 있는 호스트 부분은 MFC와 Win32로 가야한다는 쪽의 주장과 분석을 들어보면 아래와 같습니다.
■ JVM이 필요 없음
최소한 윈도우만 고려한다면 JVM을 위해 JRE를 설치하지 않아도 된다
(이상한 나라의 엘리스 처럼 들릴 수도 있고 민감한 부분으로 인식할 수도 있는 문제인 것 같습니다)
※ 물론 VC6.0 이상은 .net framework을 설치해야하겠죠?
■ 빠르다
(Eclipse가 속도가 개선되었다고 하지만 JVM으로 여러 OS를 고려해야 하고 Windows 경우는 JNI를 통해서 system control을 해야 하며 Eclispe 및 Eclipse RCP (Rich Client Platform) 자체가 lazy binding이라 Win32와 MFC를 따라 올 수는 없습니다.
■ Eclipse로 간다면, JNI를 사용해야 하는 경우가 있다.
가끔 Win32 api를 이용해야 하는 경우 JNI를 이용해야 하는데, 이 것은 한 프로그램이 이질 언어도 작성됨으로써 디버깅이 힘들게 되고 Eclipse의 OS Independency를 잡는 경우도 있습니다.
(물론 linux로 간다면 JNI DLL의 내용을 porting하면 되겠죠)
■ 많은 것들을 핸들링할 수 있다.
흔히들 (GUI이든 engine이든) MFC와 Win32를 이용해서 (돌아가든, 바로가든) 불가능 한 것은 거의 없다 라고 합니다.
※ 하지만 이 것은 잘 생각해봐야할 문제인 것 같습니다. OS Independent하니 Eclipse 기반으로 가는 것은 어느 정도 한계를 가질 수 있습니다. 하지만, 정말 그렇게 인터페이스나 기능을 고쳐야하는게 맞는지 잘 생각해봐야 할 것입니다.
■ 유지 보수할 인력들이 더 많다.
저희 회사의 경우는 Eclipse 기반 개발자 보다는 아닌 개발자가 더 많았습니다.
※ 이 문제는 단순히 Java를 할 수 있는 인력이 아니겠죠? C++을 잘한다해도 MFC를 배워야겠지만 Eclipse는 더 많은 것을 (RCP 등을 제대로 사용하려면) 이해해야할 것입니다.
※ 위에서 거론한 것 보다 더 많은 장.단 점이 있을 것이고 거론 한 것들도 잘 못 될 수도 있을 것입니다.
그리고 위의 문제는 많은 논쟁점을 가지고 있고 어떤 프로젝트냐에 따라 장점이 단점으로 단점이 장점으로 변경될 것입니다.
중요한 것은 프로젝트 (개발한 소프트웨어?)에 무엇이 맞는지 (버릴 것과 얻을 것을 생각해서) 심사숙고해서 검토해야 할 것입니다.
단순히 많은 세계적인 소프트웨어 (JBuilder, OSGi, ClearQuest, 기존 C/C++을 위한 도구들도)들이 Eclipse 기반의 플러그인이나 RCP 모델로 간다고 해서 무작정 따라가는 것은 맞지 않을 것입니다.
