Favorite Java IDE
December 08, 2003
Microsoft 비주얼 스투디오에 익숙한 많은 개발자들이 자바 언어를 접했을 때 가장 어려워하는 부분은 사용하기 편한 IDE 환경이 없다는 것이다. 모두들 다음과 같은 의문을 갖는다.
"도대체 자바 개발자들은 무엇을 가지고 개발하는지 ?!"
자바 개발자들은 대부분 다음과 같이 대답한다.
물론 간혹 JBuilder나 eclipse, Forte를 들기도 한다. 그외에 이름이 기억나지 않지만, 이스라엘에서 만들었다는 비주얼 스투디오와 아주 유사한 자바 IDE도 꽤 사용되기도 한다.
먼저 가장 많이 개발에 사용되는 것들이 단순한 에디터라는 점에서 자바 개발 환경이 얼마나 불편한지를 보여준다. 최근에 제임스 고슬링까지 합세하여 Sun 사에서 비주얼 스투디오와 유사한 툴을 만들겠다고 장담하고 있는 걸 보면, 자바의 미래에까지 불편한 개발 환경이 영향을 미침을 모두 공감하는 단계인 셈이다.
개인적으로는 GNU Emacs를 사용한다. Emacs 역시 IDE보다는 에디터에 가깝다. 처음 사용할 때에는 vi와 유사한 어떤 것이 아닌가 생각들을 한다. 하지만, 확장성 있는 구조는 직접 에디터의 기능들을 확장할 수 있게 되어 있다. LISP라는 언어를 제대로 살펴본 적이 없지만, 웬만한 문제들은 스스로 해결할 수 있다.
Emacs의 자바 개발 환경은 JDEE 패키지이다. jdb나 JPDA 구조를 사용한 통합 디버깅이 가능하다. 워드 프로세서 개발할 때에도 jdb 방식으로 JDEE를 사용하였는데 큰 문제가 없었다. jdb를 콘솔에서 실행하는 것과는 비교할 수 없이 편리하다. 당시 JPDA 방식은 너무 느려서 사용하기 어려웠다. 지금은 어떨지 모르겠다.
J2SE에서 J2EE 환경으로 넘어오면서 디버깅은 더욱 어려워졌다. 솔직히 말하면, 더이상 디버거를 사용하지 않고 로그에 의존하고 있다. 물론 훨씬 비효율적이고 시간 낭비가 심하다. 분명 보다 나은 개발 환경이 개발 기간을 크게 단축함을 의심할 여지가 없다.
현재 사용하고 있는 JDEE 패키지는 2.3.3beta6이다. 가장 좋아하는 JDEE의 기능으로는 EJB 2.x에 맞도록 직접 기능을 확장한 M-x jde-ejb-entity-buffer, M-x jde-ejb-session-buffer 명령이다.
EJB 빈 이름과 패키지 이름을 입력하면 각 인터페이스와 클래스 구현 파일, deployment descriptor 파일의 뼈대를 기본 생성해준다. 자바 2 SDK 1.5와 J2EE 1.5에서 annotation이 지원되면 이렇게 불필요한 파일들을 여러 개 만들 필요도 없어지겠지만, 그 전까지는 아주 유용한 기능이다.
그외에도 몇 가지 wizard 기능이 있다. M-x jde-wiz-get-set-methods 같은 기능은 자바 빈즈의 get/set 메소드를 자동으로 만들어주는 기능이다. 아마 대부분의 IDE에서도 유사한 기능들이 제공될 것이다. 하지만 다른 IDE와 크게 다른 점이 있다. 우선 Emacs의 인터페이스는 윈도우 방식이 아니다. vi에 비하면 마우스 기능을 많이 활용할 수 있게 배려하는 편이지만, 역시 기본은 텍스트 입력 방식이다. 키보드에서 대부분의 명령과 옵션들을 지정할 수 있다.
또, 공개 소스 기반인 점과 그 확장성이 뒷받침해준다. LISP 언어의 간결성은 언어를 전혀 모르는 사람도 쉽게 확장해서 사용할 수 있다.
마지막으로 다른 IDE에 비해 UX(User Experience)가 크게 나은 점은 Responsiveness이다. 일반적인 자바 IDE는 자바 기반임으로 인해 반응이 무척 느리고 메모리를 많이 사용한다. 특히 윈도우를 많이 활용하기 때문에 아주 미묘한 그 약간의 늦은 반응이 개발자들을 무척 피곤하게 한다. 하지만 Emacs는 대화상자 같은 윈도우를 사용하지 않는다. 새 대화상자 윈도우를 만들어서 스크린 앞으로 내보내는 그래픽 연산 같은 건 필요가 없다. 메모리도 아주 효율적으로 사용한다. Emacs JDEE가 절대적으로 다른 IDE보다 마음에 드는 가장 중요한 이유이다.
가끔씩 eclipse나 WebLogic Workshop과 같은 새로운 자바 IDE를 보면 유혹을 느낀다. 화려한 인터페이스와 새로운 기능들... 물론 이미 손에 익어버린 Emacs의 명령들을 버리고 새로운 IDE로 옮겨갈 만한 마땅한 이유를 아직 만나지 못했지만, 조만간 대중적인 인기를 얻을 수 있는 자바 IDE가 나왔으면 하는 바램이다. Emacs는 대중적인 IDE가 필요로 하는 그런 친숙한 얼굴을 가진 IDE는 결코 아니기 때문이다.
Programming in Emacs Lisp at http://www.delorie.com/gnu/docs/emacs-lisp-intro/emacs-lisp-intro_toc.html
JDEE, Java Development Environment for Emacs at http://jdee.sunsite.dk/
Posted by Yoon Kyung Koo at December 8, 2003 11:55 AM
Comments
흐음.. 여전히 emacs로 자바를 코딩하는 분이 계시구나 했는데.. 윤경구님이셨군요.. 제가 처음 emacs를 알게 된 것은 99년 이었습니다. 그리고 본격적으로 프로젝트에서 사용해 본 것은 2000년에 모 증권사에서 였죠.. 그때 우리 팀장님은 볼랜드사의 jbuilder였고, 지금은 애인이 되어 있는 또한분의 과장님은 vi를 쓰시고 계셨었죠…(나머지는 머.. ultra edit) 저혼자 독특하게 emacs를 쓰고 있었는데.. ㅋㅋ 제가 그 희귀한(?) 물건을 쓰게된 이유는 단한가지.. 윤경규님도 잘 아시는 김덕태님이 자바코딩하기에 가장좋은 에디터는 emacs라는 그 말한마디에 정말 각고(?)의 노력을 들여서 사용하게 되었습니다. 그런데.. 혼자서 정말 엄청난 자부심을 가지고 열심히 쓰고 있었는데. 어느날 JBUilder와 이클립스를 알게 되었습니다. 다른건 모르겠는데… 그넘의 code insight(. 찍으면 그 객체의 메소드와 멤버변수 리스트가 나오는 기능)에 중독되어서… 그거 말고도 이클립스는 source safe에 대한 연동이나. 특정한 refactoring은 자동으로 지원(가장 초보적인것으로 클래스 이름바꾸기나. 머 이런것들..)해주고 javadoc template도 자유롭게 변경 가능하고.. 하여간 생각했던 것 보다 너무나 많은 기능들을 아주 visual하고 간편하게 제공해 주던군요.. 그래서 이제는 emacs를 멀리하게 되었습니다. 마지막으로 참여했던 프로젝트에서는 jsp파일 줄맞추는 것 이외에는 거의 emacs를 사용하지 않았습니다. 그래서 너무나 안타까웠어요. 정말 많은 애정을 가지고 있는 에디터인데.. 물론 jdee에서 code insight를 지원 해주기는 하는데.. 리스트에서 점진검색은 안되더군요.(게다가.. bean shell이 잘 작동을 안해요..) 그게 정말 코딩을 빠르고 재밌게 해주는데… 흐음.. 어쩌죠? 윤경구님은 여전히 ejb환경하에서도 이맥스를 쓰신다고 하는데 저도 그랬으면 좋겠습니다. 그런데 이클립스 플러그 인중에 하나인 럼보즈의 새로운 버전에서는 ejb디버그도 가능하다고 하네요.. 이러면 이맥스가 설자리는 정말 없어지는 것일까요? 윤경구님이 emacs를 쓰시는 모습을 꼭 보고 싶어요… Posted by: 류지형 at March 10, 2004 04:01 PM 정말 고민되게 하지 않는 사항입니다. 저는 아예 emacs 에 컬러코딩만 넣고, raw jdb 로 디버깅하던지, 아니면 eclipse 로 하고 있는데, 늘 손에 익어있던 환경인 emacs 를 버리지 못하고 있습니다. 프로젝을 eclipse 로 만들어 놓고도, 급히 손볼때는, emacs 로 열어서, 잽싸게 고치고는 $ javac -g *.java -_-;; 버릇이 무섭습니다.. 하하하. Posted by: 정용섭 at April 16, 2004 12:25 AM