Vaadin Java web Framework과 Spring MVC의 비교
최근 바딘 프레임웍을 연구해 보면서 느낀 소감을 적어볼까 합니다. 일전에도 소개했다 시피, 바딘은 순수 자바코드로 개발하는 웹 프레임웍입니다.
바딘에 대해서 궁금하신 분은 다음 사이트를 참고하세요
vaadin.com
vaadin.com/demo
스프링 MVC로 웹을 개발해본 사람이라면, JSP의 거대화 복잡화 문제를 겪었을 것이다. 어찌보면 스프링 MVC는 자바 개발자로 하여금, 자바가 아니라 JSP 개발자로 전락하게 만든다. 최근 버전의 스프링은 애노테이션을 사용하여 환경 설정을 하지만, 3 버전 초반대의 스프링은 상당히 복잡한 XML 설정을 요구한다. 자바 개발자로 하여금, 자바 코딩은 10%, 나머지 90% 코딩은 JSP와 XML 코드를 작성하도록 강요한다.
보통, 자바 웹 개발을 하려면 JSP 사용법을 알아야하는데, JSP는 그 자체의 문법이 있다. JSP 내장 태그, 개발자가 정의한 TAG, 혹은 서드파티 태그 문법을 알아야 하고, 자바스크립트를 어떻게 삽입하는지, HTML을 알아야 하고, JQuery로 아작스 호출을 어떻게 해야 화면 일부 갱신을 할 수 있는지 알아야 하고, 더욱이 그 방대한 스프링 프레임웍의 사용법을 알아야 한다.
즉 스프링 개발자는 다음과 같은 지식들을 익혀야만 웹개발이 가능한데, 언어 체계가 매우 다른, 대략 5개의 언어들을 배워야 한다..
Java, Spring Framework, JSP, Javascript, HTML, CSS, Ajax 호출 등
이는 엄청난 러닝 커브(Learning Curve, 학습에 대한 부담)를 요구한다. 웹개발의 역사가 매우 오래 되었음에도 불구하고, 아직도 웹 개발자들은 정말로 많은 것을 학습해야만 홈페이지를 만들 수 있나 보다. 나는 웹개발을 하면서 == 인지 equals인지, === 인지 헤깔릴 때가 종종 있다. 심지어 이클립스에서 자바 소스에 자바스크립트 코드를 삽입하는 실수도 저질러봤다. JSP 이던 PHP 이던, 그 내부는 앞서 언급한 잡다한 것들로 스파게티 코드가 되어 버린다. 웹 개발의 최고 삽질이 바로 이 스파게티 코드다. 여러 언어를 동시에 사용해야만 웹 개발이 가능하다는 것은 개발자로 하여금 엄청난 컨텍스트 스위칭(대뇌의 언어별 전환 ) 부담을 준다.
바딘은 자바 코드 90%로 웹 개발을 가능하게 한다. 어떤 경우 100% 자바로도 가능하다. 현대의 웹 개발은 바딘 방식이 맞는 것 같다. 왜 개발자가 저렇게도 많은 지식을 익혀야만 개발이 가능한가? 웹개발 역사가 그렇게 오래되었음에도 불구하고 웹개발환경은 여전히 과거 어셈블리 언어같다는 느낌이 든다. 프로그램 개발을 하기 위해서, OS API나 기계어까지 배워야 할 필요가 없듯이, 바딘은 개발자로 하여금, 뭘 만들까에 집중하게 하지, HTML, CSS, 자바스크립트 같은 잡다한 스크립트 언어를 배워야 하도록 강요하지 않는다.
자바로 웹개발이 가능하다는 것은 이클립스 같은 IDE의 모든 기능을 사용할 수 있다는 것을 의미한다. 예를 들면 리팩토링, 인텔리센스, 자동문법 오류 체크 기능 등등이다. 자동 오류 체크는 대단히 개발자를 편하게 해준다. 예를 들어, JSP에서 자바스크립트 코딩을 하다보면, JSON 형태의 문자열을 자주 사용해야 하는데, JSON은 중간에 콤마(,)와 따옴표를 매우 복잡하게 요구한다. JSON 문자열이 매우 긴 경우, 콤마든 따옴표든 중간에 빼먹으면 이를 찾아내기가 매우 어렵다. 심지어 오타 찾기도 매우 어렵다.
이클립스 같은 자바 IDE는 자바 코드의 대부분 오류를 즉각 찾아준다. 개발자로 하여금 이상한 문법 오류 때문에 헤메게 하지 않는다. 자바스크립트는 자바에 비하면 디버깅이 매우 어렵다. 반면 자바는 디버깅이 매우 쉽다. 여러 언어보다 단 하나의 언어로 개발하면 매우 편하다는 것은 많은 개발자들이 잘 알고 있다.
바딘으로 간단히 게시판을 만들어 보았는데, 간단한 로그인 과정과 함께 대략 600 라인의 순수 자바코드로 만들 수 있었다. 이는 바딘 매뉴얼을 약 벗삼아서 일주일 정도 소요되었다. 예전에 이것과 동일한 게시판을 스프링 MVC 로 만들어봤는데, JAVA 단은 뺴고서라도, JSP 파일의 코드량은 끔찍헸다. JSP 파일의 수도 상당했던 것 같은데, 바딘으로는 단 4개의 자바소스만으로, 다시말해 4개의 클래스만으로 가능했다.
과거 스프링 mvc로 만들 때 가장 골치 아팠던 것이, 로그인 권한에 따라서 게시물 읽기, 쓰기, 삭제 버튼을 활성/비활성화하는 것이었는데, 바딘은 이 처리가 한마디로 거저였다. 결론인즉, 바딘을 전혀 사용해보지 않았다면 반드시 사용해 보시라. 바딘 매뉴얼 열라 두껍지만, 튜토리얼, 레이아웃과 서버 콤포넌트 챕터만 보면 대충 게시판 하나를 만드는데는 충분했다.
왜 그렇게 배우기도 사용법도 어려운 스프링 mvc가 국내에서 독주하는지 이해가 안된다. 예전에 JSF를 사용해봤는데, JSP보다 훨씬 더 나았다. 바딘은 이 JSF보다 더 배우기 쉽다는게 나의 소감이다.
이 바딘 매뉴얼을 열심히 번역하고 있는데, 아.. 정말로 양이 장난 아니다. 참고로 바딘은 문서가 매우 잘되어 있다. 기본 매뉴얼 말고도 정말 체계적으로 이런 저런 문서가 많고, 게시판도 잘 되어 있다.