90년대 말, 증권사에서 Pro-C로 개발을 처음 시작하면서부터 여러 개발 언어에 관심이 많아 

Java/JSP, PHP, Perl, VB/ASP, C#/ASP.NET, C++ 등 이것저것 다양하게 이용해보다가 

2000년대 중반 이후 이른바 "자바만 전문가들"에게 자리를 내어주고 Java 개발은 거의 손을 놨었고,

안드로이드 플랫폼이 생기면서 그나마 다시 한번 접해본 것도 상당히 오래전(7~8년 전) 일이었다.


그 때 처음 Eclipse를 사용했었는데, 아마 그때 버전이 Indigo 였던가?

아직도 그때 만든 최초 안드로이드 자작 앱 TextReplace가 내 컴퓨터에 소스코드 그대로 남아 있다.

당시 모토로라 아트릭스Motorola Atrix로 무협, 판타지 등 각종 텍스트 이북e-book을 닥치는 대로 보던 때라 

눈에 거슬리던 오타들을 실시간으로 고쳐가면서 읽기 위해서 직접 앱을 만들었었다.

간단하면서도 강력한 텍스트 치환 기능! 지정한 문구를 파일 전체에서 찾아서 일괄 치환한 뒤 저장하는 그런 기능 말이다. 왜 그런 것이 당시 구글 마켓에는 없었을까? (지금은 있을까???)

그런 이유로 직접 만들어서 꽤 오랫동안 잘 썼었다...


이후 다시 Java를 쓸 일이 없었는데 몇 년 전부터 또 Java로 개발할 일거리가 생겨서 

Eclipse Mars버전(4.5)을 설치해서 다시 사용하기 시작한 이후 지금까지 계속 버전업 없이 쓰고 있다.

(현재는 Oxygen버전인 것 같은데, 굳이 버전업을 할 이유를 아직까지는 못느끼고 있다.)




본론으로 들어가서,


Eclipse의 장점이라면, 무료인데다 수많은 플러그인들이 있어서 원하는 대로 만들어 쓸 수 있다는 점인데,

뒤집어 보면 이것이 그대로 단점이 되기도 한다. 

무료 도구이다 보니, 지금이야 거의 없지만, 상용 제품에서는 볼 수 없는 어이없는 버그들도 많았고,

비슷비슷한 수많은 플러그인들 중에서 내가 쓸 것이 무엇인지 선택하기 대단히 어려운 점,

그에 따라 같은 Eclipse를 쓰고 있으면서도 개발자마다 전혀 다른 환경이 만들어진다는 점 등이 그렇다.

똑같은 소스코드로 작업해도 결과가 제각각, 심지어는 빌드도 되지 않는 경우가 많다.

즉, 동일한 개발/테스트 환경을 만들기 위해 불필요한 노력을 많이 해야 한다는 점이 가장 단점.


더 골때리는 것은,

이건 Eclipse의 문제라기보다 Java 개발 환경 자체의 문제라고 해야 할 것 같은데,

수많은 빌드 도구에 수많은 개발 프레임워크가 난립하고 있어서 Java라는 개발언어만 알아서는 

실제로는 전혀 모르는 것과 같다는 점!!


이것은 Javascript 언어 하나로 수많은 플랫폼과 수많은 프레임워크, 라이브러리들이 난립하고 있는

현재 웹 스크립트 분야의 과도기 현상과 상당히 비슷하다고 볼 수 있겠다.




굳이 비교해 보자면 이렇다.


.NET 웹 개발 환경은 딱 이렇다.


Windows + Visual Studio + IIS Express + SQL Express


물론 세밀하게 보면 Windows의 버전이 저마다 다 다를 수 있고,

Visual Studio의 버전도 차이가 날 수 있고,

사용하는 DB도 SQL Express 대신 mySql이나 Oracle을 사용할 수도 있다.


그렇지만, 그렇다 하더라도, 그럼에도 불구하고

대부분의 경우 프로젝트 파일 수준의 컨버전(자동)만 거치면 99% 완벽하게 동일한 작업환경이 된다.

바로 빌드해서 바로 테스트에 돌입할 수 있다. 환경 구성을 위해 노력을 기울일 필요가 사실상 거의 없다. 

오직 개발언어에 집중하기만 하면 된다.




Java 웹 개발 환경은 이와는 완전히 딴판이다.


가장 먼저, 개발 도구(IDE)의 선택 문제부터 고민이 시작된다.

수많은 개발 도구 중에서 제일 잘 나간다는 Eclipse를 그냥 쓸 것인지, IntelliJ IDEA를 쓸 것인지 

선택을 해야 하는데 어느 것을 선택하는지에 따라 이후 알아야 할 내용이 완전히 달라진다.


웹 개발만 하더라도 Spring을 쓸 지, Spring Boot를 쓸 지에 따라 설치해야 하는 플러그인이 다르고,

빌드 도구를 Ant를 쓸 지, Maven을 쓸 지, Gradle을 쓸 지에 따라 또 설치해야 하는 플러그인이 다르고

각각 알아야 할 기본 지식과 그에 따른 방대한 노하우가 달라진다.


Annotation 처리로 get/set을 자동 생성해주는 lombok 플러그인을 쓸 때와 쓰지 않을 때가 다르고,

Thymeleaf("타임리프"라고 발음해야 한단다, 뭐냐... 시간여행도 아니고)라는 요상한 이름의 웹 템플릿 프레임워크를 쓰려면 또 많은 노력을 해야 한다. ASP.NET MVC에서는 기본 제공되는 기능인 것을...

Java 개발 환경에서는 이런 것이 전혀 기본이 아니다. 다 선택/설치 옵션인 것이다.


또, Mybatis로 데이터베이스 관련 코딩을 하려고 해도 버전에 따라, 또 상황에 따라 작성 방식이 달라서

일일이 해당 내용들을 다 익히고 있어야 하거나 적어도 그 차이점들을 알고 있어야 한다.


또, 디버깅 환경으로 Spring Boot 웹 서비스를 사용할 것인지, 별도 Tomcat 서버를 설치하고 해당 플러그인을 설치한 다음 연동해서 디버깅 할 것인지에 따라서도 알아야 할, 해야 할 작업들이 많다.


여기까지가 대충 기본 개발 환경 구성인데, 이것을 모두 하고 나서 개발언어는 그 다음이다.

(물론 이미 다 알고, 쓰고 있는 사람의 입장에서는 전혀 문제될 것은 없을 수 있다.)




Eclipse로 Java 개발을 하면서 내가 겪었던 골 때린 경우는

디버깅 때 코드 추적을 하다가 분명히 참조되어 있는 라이브러리 소스코드를 찾을 수 없다며 튕길 때였는데, 이건 결국 내가 사용하던 gradle 플러그인의 문제로 파악돼서... 교체한 뒤 그럭저럭 잘 해결됐는데,

(이건 말이 되냐? ㅆㅂ)


그것보다 더 황당하게, 가장 골 때렸던 경우는

분명히 빌드가 제대로 되었고, 제대로 동작하는 코드가 확실한데, 디버깅하면 엉뚱한 결과가 나타날 때였다.

(이것 때문에 낭비한 시간이 도대체 얼마나 되는지... 헐...)

덕분에 수없이 gradle refresh, clean, war build를 반복하고 또 반복할 수 밖에 없었는데,

오랜 시간이 지나서야 알게 된 것은 바로 Tomcat 웹 서버 캐시 때문이었다는 사실!


Eclipse - Tomcat 플러그인의 캐시 업데이트가 어떤 알고리즘으로 동작하는지는 모르겠지만

한번 반영이 된 후 짧은 시간 내에 다시 수정해서 빌드한 경우에는 웹 서버에 전혀 반영되지 않았다.

그런데, 아무리 해도 안되다가 수정 없이 그대로 다음날 다시 빌드하면 멀쩡히 반영되는 황당함이란... -_-a

(이런 경우에는 Eclipse - Server Tab View의 Publish나 Clean 명령으로도 당연히 되지 않았다.)


원인은 캐시였던 것이다. 일정시간 이내의 변경사항은 반영하지 않고 무시하게 되어 있었던 것.

그래서 이후부터는 디버깅할 때마다 일일이 Tomcat 캐시 폴더를 열어서 확인한 다음, 

빌드된 최신 라이브러리 파일이 반영되어 있지 않으면 직접 복사해넣는 방법으로 해결하고 있다. 아직도!


Eclipse Tomcat Cache 폴더는 아래와 같다.

{프로젝트 루트 폴더}\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

이 폴더 하위에 각 웹 프로젝트들이 있고, 그 다음은 동일하다.

{프로젝트 폴더}\WEB-INF\lib 폴더에 있는 참조 라이브러리(.jar 등등)를 업데이트하면 된다.



한편,

2000년대 중반 무렵이었으니 대략 15년쯤 전에 잠깐 써 보고 안 쓴 IntelliJ IDEA를 최근에 다시 설치해봤다. 혹시나 Eclipse에서 겪었던 이런 문제를 해결할 수 있지 않을까 하는 기대에서.


결론부터 얘기하면,

일단 IntelliJ IDEA Ultimate 버전은 좋다. 빠르고 강력하다. 그런데 비싸다.

(무료 버전인 Community 버전은... 쓸 데 없다. 아무짝에도.)


Eclipse 환경과 거의 같게 만들려고 프로젝트(IDEA 용어로는 "모듈") 여러 개를 Import해서 구성도 해보고,

Tomcat 서버와 연동해서 디버깅하는 시나리오로도 테스트해봤는데... 만족스럽게 잘 됐다.

lombok 플러그인이나 Spring 관련 설정, 기본 Settings 등을 조금씩 손보긴 해야 했지만 

Eclipse에 비해서는 훨씬 단순한 조작으로 환경 구성을 쉽게 마칠 수 있는 점도 꽤나 좋았다.




>> 참조: https://www.jetbrains.com/idea/buy/#edition=personal


그런데, 결국은 유료, 그것도 꽤나 비싼 유료라는 점이 발목을 잡았다.

(기업용이 아닌 개인용으로 구입한다 해도 1년에 18만원... ㄷㄷ)


개발이 안되거나 상당히 지장이 있으면 모르겠지만, 멀쩡히 적응해서(?) 잘 쓰고 있는 Eclipse를 놔두고

IDEA로 바꾸기에는 역시 무리. 더 좋은 개발 도구 비교 테스트 한번 해본 셈 치고 넘어가기로...


처음부터 개발에 몇 십만원 정도 투자해서 더 쉽고 강력한 도구로 무장하겠다 싶은 개인이나 회사라면

망설이거나 주저할 필요는 없겠다. IntelliJ IDEA Ultimate 강추.





Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]