2008.12.22 13:57

자바와 스프링 프레임워크 사이...

토비님 글을 읽고, 메신저로 잠시 대화를 나누다가 문득 제목과 같은 생각을 해봤습니다.
자바와 스프링 사이에는 무엇이 있을까요?

대한민국 1%의 개발자가 모르는 게 아니라, 99%의 개발자가 모르는 게 스프링 프레임워크라고 생각합니다.
모르는 사람 중에 저도 포함해서 말이죠. 아직은 수박의 껍질만 우적우적 찝어 보았을 뿐이니까요.

아는 척 안하겠습니다. 요즘 물어뜯기 좋아하는 사람들이 많아서~ ^^;
잘 아시는 분도 계시겠지만, 프로 스포츠 선수라고 해도 늘 기초 체력 단련은 하는 거니까,
그런 측면에서 생각해 보자, 함께 얘기해 보자는 것이죠.

소프트웨어 개발자가 되기 위해서 가장 먼저 배우는 것이 프로그래밍 언어이고,
요즘 가장 많은 개발자가 학습하는 언어 중에 자바가 빠지지 않을 겁니다.

프로그래밍 언어 자체를 배우는 건 그리 어려운 일이 아닐겁니다. 그러나, 응용하기는 쉽지 않죠.
자신만의 성과라고 할까요? 작품이라고 할까요. 언어를 배우는 데 걸리는 시간도 꽤 드는데,
언어를 학습하고 나서도 자신만의 작품을 만드는 건 쉽지 않죠.

왜 그럴까 늘 생각해 봅니다. 자바가 아닌 다른 언어로 개발할 때는 그나마 쉽죠.
PHP를 배우고 아파치 웹 서버만 설치하면 웹 사이트 뚝딱 만들고,
Action Script를 공부하면 간단하나마 Flash 어플리케이션을 만들 수 있고,
Visual C++이나 Visual Basic을 학습하면 초기부터 어플리케이션 제작이 가능하죠.

그런데 자바는 그렇지 못하잖아요? 물론 ansi C 언어를 가지고 무언가를 만드는 것보다는 쉽지만 말입니다.
어찌 보면 참 까탈스러운 언어가 아닌가 라는 생각도 들고...
게다가, 프레임워크까지 이해하려면 더욱 험난한 길입니다.

그래서, 자바 개발을 하는 사람을 위해서 로드맵(loadmap)이 제시되어야 할 필요가 있지 않을까 하는
생각을 해봤습니다. 자바에서는 참 배울게 많거든요. 그런데 무엇부터 배워야 할지 나름 오래 공부한
저도 섣불리 얘기하기가 어렵습니다. 여전히 모르는게 더 많으니까요...

하여간, 본론은 별거 없는데 주저리 주저리 늘어놓았네요.
다시 여쭤볼게요. 자바와 스프링 사이에는 무엇이 있을까요?
스프링 프레임워크는 그냥 닥치고 써야 하는 건가요?

[덧]
질문만 냅다 던져놓으니 좀 무책임한 것 같고, 영회님 덧글을 주셔서 제 의견을 하나 추가해 봅니다.

자바 혹은 JDK(Java Development Kit)는 훌륭한 플랫폼(platform)이지만
그 자체로서는 비지니스 시스템을 구축할 수 없습니다.
만들다 만 것이 아니라, 기반 환경(infra system)이라는 개념 자체에 충실한 것이라고 봐야겠죠.
어떤 구체적인 목적을 잘 수행할 수 있는 시스템은 다른 목표 혹은 대상에 적용하기가 어렵기 때문입니다.
예를 들자면 자동차 엔진을 가져다 비행기에 쓸 수 없고, 선박용 엔진을 트럭에 탑재하기 어려운 것처럼 말입니다.
못한다고 선을 긋기는 어렵지만 또 그렇게 쉬운 일도 아닌 것이죠.

글을 쓴 본래의 취지는 이렇듯 자바 혹은 개발 언어를 바라보는 시선을 넓혀보자는 것입니다.
언아가 모든 것을 채워주지 않는 것 같습니다. 프로그래밍 언어는 가장 기본적인 요소만을 제공할 뿐이죠.
스프링 스터디 클럽을 오시는 분들에게는 어쩌면 상식적인 얘기일지도 모르지만,
그런데 현장 그리고 개발자 지망생들은 어떻게 생각하고 있을까요?
자바를 공부한다는 것, 그중에서 자바 언어를 조금 안다는 것은 거의 자바라는 세상을 모르는 것과 같다는 시각.
이런 의견이 상식이 되었으면 좋겠습니다. 그게 가능할지 모르지만 말입니다.

왜 스프링 프레임워크를 사용해야 하는가 하는 질문에 대한 질문자 자신의 생각이었습니다.

Trackback 1 Comment 12
  1. 영회 2008.12.22 14:41 신고 address edit & del reply

    개인의 주관적인 견해 이전에 이미 '자바 위에 스프링이 얹어놓은 것' 혹은 '자바를 가지고 스프링이 해놓은 것'을 둘러보는 것이 답이 되겠죠.
    Rob Harrob이 스프링 서브 기술 중에 최고(?)로 평가했던 JdbcTemplate 등에서 보는 디자인 패턴 구현(스프링은 패턴 구현의 결정체로 보아도 무리가 없죠.), 영문과 수준의 놀라운 작명, JEE 진영 최고의 테스트 기법, 보편적인 웹 애플리케이션 구현 예시(PetClinic 등), 빌드 프랙티스(함께 배포하는 ant, mvn 등), 3rd 파일 솔루션 및 JEE API 연계 방안 제시 등등 모두 열거하기도 힘들군요. :)

    • 곽중선 2008.12.22 14:50 신고 address edit & del

      역쉬~! 일단 감사드리고~

      고전 컴파일러 서적의 표지를 보면,
      개발자를 기사로 표현하고 컴파일러라는
      드래곤을 잡는 상황을 묘사했거든요.

      마찬가지로 현대의 개발자를 게이머라고 간주했을 때,
      자바 그리고, 스프링이라는 다양하고 복잡한 던전을
      어떻게 공략할 것인가? 이게 참 어려운 문제인 것 같아요.

      가장 쉬운 던전은 무엇이고, 가장 어려운 것은 어디다.
      이런 가이드가 있어야 하지 않을까 생각해 봤습니다.

      그런데, 영회님... 일단 가장 어려운 던전들을 나열해 주시는군요! 첫마디에 썼던 감탄사는 너무 한다는 의미였습니다. ^^;

  2. is윤군 2008.12.22 15:41 신고 address edit & del reply

    자바와 스프링 프레임웍 사이는 .. 개발자가 있지 않을까요? 엉뚱한 대답인가요;;ㅋ
    스프링도 자바로 만들어졌으니 둘이 딱히 중간에 끼어든 건 없을것 같고...
    스프링을 배우고 잘 사용하고 싶은 개발자들이 있지 않을까요? ㅡ.ㅡ;;
    "스프링 프레임워크는 그냥 닥치고 써야 하는 건가요?" 이 말은 좀 억지인듯 해요 ;; ㅋ
    무조건 쓰려면 어렵잖아요;ㅋ 수박의 껍질만 우적우적 찝어 먹더라도.. 그렇게 열심히 먹다보면 껍질 다먹고 알맹이도 먹을 수 있지 않을까 생각합니다..
    물론 거기까지 가다가 GG 치시는 분들은 그냥 머 다른거 써야 되지 않을까요??
    저도 아직 껍질만 열나게 먹는 중이긴 헌데;; 스프링 소스 코드를 보면서 자바를 새삼 다시 배울때도 있고.
    배우는 재미로~ 일단 스프링을 사용하는 거에 한표를 던지겠습니다..;; 전 아직 영회님께서 말씀하신 저런것들까지 알지 못하는 초보거든요;;ㅋㅋ

    무튼 결론을 내리자면 자바와 스프링 사이에는 저희 봄싹 스터디원들이 있지 않나 싶습니다..ㅋㅋ
    이상 테러끝입니다!!ㅋ

    • 곽중선 2008.12.22 16:03 신고 address edit & del

      닥치고 쓰라는 말, 어감이 별로 않좋죠?
      그런데 초보 개발자들 입장에서 어떤 프로젝트에
      참여했을 때 - 대게 SI 프로젝트이겠죠 -, 해당 프로젝트의 PL 혹은 PM 들이 우리 프로젝트에서는 어떤 프레임워크를 쓰니까 닥치고 쓰라고 이런 일을 많이 겪게 됩니다.

      또, 독학하려고 여기저기 기웃거리다 보면 스프링, 스트럿츠가 좋다는 말을 접하게 되고 그래서 책도 사보는데 대체 무슨 말하는지 모르는 경우가 많습니다.

      모르니까 GG를 치려니, 자바를 가지고 일을 하고 돈을 벌어야 겠는데 달리 또 할게 없죠. 프레임워크 몇개 GG 치고 나서, 자바로 직접 무언가를 만들 수준도 안되잖아요? 오도가도 못하는 상황이 되는 거죠.

      HeloIS님 말씀대로 자바와 스프링 사이에는 개발자가 있는 건데, 어떤 개발자는 즐거이 자바와 스프링을 학습하는데 어떤 개발자는 둘 사이에서 위험하게 줄타기를 하고 있는 경우도 있어요. 조금 실수하면 밥벌이가 날아갈듯한 불안감에 휩싸여서 말이죠... 람보나 코만도 같은 개발자도 있는 반면에, 참호에 숨어 총 쏘면서 오지마... 오지마... 난 스프링 프레임워크 싫어~ 이러는 개발자들도 있죠. 그럴거면 차라리 개발자 그만둬라 하시는 분도 있고~ 심지어 프레임워크 따위는 왜 쓰냐는 사람도 있습니다.

      스프링을 쓰는 합리적인 근거 정도는 있어도 나쁘지 않을 듯 한데요? 소심한 답글입니다. ^^;

    • 영회 2008.12.22 17:50 신고 address edit & del

      사람의 만들어낸 창조물 사이에 다시 사람이 있다니...
      개발자를 비하하는 건가요? 농담입니다. ^^

      자바와 프레임워크 사이에 개발자(가 스스로 채워야 할 것)라고 말한 것이겠죠?
      HelolS 님의 생각을 보다 정확히 표한하려면 주체와 대상을 구분해서 설명하는 것이 좋을 듯 합니다.

  3. is윤군 2008.12.23 01:38 신고 address edit & del reply

    쓰다보니 길어져서 .. 답글이 글로 승격했습니다.;;;

  4. arawn 2008.12.23 09:28 address edit & del reply

    제 개인적인 생각도 영회님과 비슷한것 같습니다.
    자바라는 끝도 안보이는 바다를 안전하게 다닐수있는 멋진 배(스프링)랄까요? 또는 자바라는 자재로 지어놓은 콜로세움은 같은 멋진 건축물이라는 생각도 드네요.
    글만으로 채워진 이론서적의 수많은 방법론,개념,패턴들이 잘녹아 들어가있는 스프ㅔ링을 접해봄으로서 꼭 스프링이라는 틀에 얽매이지 않더라도 자바를 어떻게 활용 할 수있는지 배울수있어서 실전형 교과서같이 보이기도 합니다 ㅎㅎ
    출근길 핸드폰으로 적느거라 길게는 못적겠네요 (=,.=)

  5. Max. 2008.12.23 09:55 신고 address edit & del reply

    본글은 KSUG에 더 어울릴듯 합니다.
    kenu님 같이 moved 시킬수가...^^;;;;;

  6. 문영식 2009.03.23 04:06 address edit & del reply

    순수 자바로도 매우 복잡한 비지니스 시스템을 만들 수 있죠..
    그렇지만 그런 것들을 아무런 도움없이 처음부터 개발하려면 엄청난 시간과 비용이 필요할겁니다.
    그래서 기본적인 자바의 API 위에 다른 경/중량 플랫폼들이 등장하게 된 것 같습니다.

    이런 플랫폼들은 그 시대에 필요한 어플리케이션이나 개발 트렌드에 따라서 조금씩 변화, 발전하고 있다고 보여지는데요..
    우리가 개발하여야 하는 어플리케이션들이 갈수록 고도화 되고 여러가지 기술둘과 융합 되면서 복잡한 양상을 띄게 되는것과 비례하여 EJB나 Spring 등과 같은 프레임웍들은 갈수록 발전되고 종류도 다양화 될것입니다.

    물론 흔히 얘기되어 지듯 프레임워크나 툴은 '단순히 도구에 불과해!!'라고 말하여 지기도 합니다.
    하지만 더이상 인류가 도구 없이는 지금과 같은 생활을 영위하기 힘든 것처럼, 이제는 개발에 필요한 여러가지 프레임워크나 툴들은 소프트웨어를 개발하는데 없어서는 안될 중요한 필수품이 되어가고 있다고 생각합니다.

    하지만 그런 도구를 활용하기에 앞서 그 도구가 어디에 어떻게 필요한 것인지 또한 왜 써야 하는 것인지에 대한 이해는 반드시 필요하다고 봅니다.
    그런 것에 대한 고민없이 단지 유행에 따라 프레임웍을 사용하여 안좋은 결과가 나타났을 경우 그 화살을 프레임웍로 돌려버리는 경우도 많더군요.
    세상에는 수많은 프레임웍들이 있고 각 개발업무의 특수성에 따라 프레임웍의 적합성과 장단점이 존재 하는만큼 그들을 잘 가려서 쓰는것도 지금의 개발자로서는 중요한 자질이 되고 있다고 생각합니다.

  7. 김의석 2009.04.23 11:26 address edit & del reply

    자바와 스프링 ... 사이에는 그 시간대의 트랜드?
    변할수 없는 것과 변화의 결과물 정도!!
    이상한 사람으로 취급 받겠다.

  8. 스프링 2011.01.19 14:43 address edit & del reply

    loadmap(x)
    roadmap(o)

    • z 2012.12.04 18:42 address edit & del

      z