노무현 대통령 배너
교육과정 개발, 발표, 번역등 정신없이 지내다 보니 3월이후 제대로 책 한권을 읽지 못했네요. 그래서 큰 맘먹고 다른 일을 다 미룬채 인사이트에서 새로 출간된 『프로그래머의 길, 멘토에게 묻다』를 읽었습니다.


책은 판형도 작고 페이지수도 300페이지가 안되어 한 손에 쥐고 소파에 기대 느긋히 보기에 딱 좋게 만들었네요. 게다가 책 앞쪽에 60페이지 정도가 서문에 해당합니다. 이 부분을 제외한다면 본문은 240페이지 정도여서 단숨에 읽을 수 있습니다.

전 맨 앞에서부터 차근차근 읽어가는 스타일이라 서문이나 감사의 글까지 꼼꼼히 보는편인데 이 책은 그런 부분이 좀 많은것 같습니다. 왜 그런지는 본문을 읽다 보니 알거 같네요. 수 많은 사람들의 인터뷰가 각 패턴별로 실려 있다보니 감사할 사람이 많았던거 같습니다. ^^; 게다가 장인정신, 견습과정등에 대한 정의를 깊이 고민했던 흔적이 서문에 잘 나타나 있습니다.

제목에서도 알수 있듯이 이 책은 프로그래머의 견습과정에 대한 가이드를 제시해 주는 책입니다. 근데 왠지 견습생이라는 말을 들으니 도널드 트럼프의 Apprentice에 나오는 말이 떠 오릅니다.
You're fired.
각 패턴은 주제별로 그룹핑이 되어 관련 주제별로 패턴을 살펴보기 쉽게 되어 있으며, 각 패턴들은 여느 패턴들 처럼 자신만의 스타일을 가지고 있습니다.: 상황, 문제, 해결책, 실천방안
이 책이 이 네가지 요소만을 반복적으로 설명했다면 참으로 지루한 책이 되었을거 같습니다. 하지만 각 패턴마다 사람들의 경험이 묻어나는 인터뷰가 실려 있어서 이를 읽다보면 정말 멘토가 충고를 해주는 느낌을 받게 됩니다.
어떤 분야든지 탁월한 이들을 연구하는 데서 많은 것을 배울수 있다.
그런데 패턴의 제목만을 보고 "아 이건 나한테 필요 없겠는데" 하고 넘기지 말라고 충고하고 싶습니다. 원서를 안 봐서 잘은 모르겠습니다만 원서에 충실하다 보니 느낌이 안사는 패턴 제목들이 좀 있습니다. 몇 개 제목을 그냥 제 맘대로 다시 풀어봤습니다.

'예술 보다는 기예'패턴 -> '예술작품을 만들기 보다는 실용적인 도구를 만들어라'
'깊은 쪽'패턴 -> '한 분야를 깊이 파라'
'열정을 키워라'패턴 -> '비록 현실은 막장이어도 열정을 키우기 위해 노력하라.'

이런 생각 때문인지 패턴의 형식을 빌지 않고 조엘온 소프트웨어 처럼 편하게 풀어서 썼다면 더 좋지 않았을까 하는 생각도 들었습니다.

하지만 내용을 읽다보면 도움되는 이야기들이 많이 적혀 있습니다. 특히 열정을 키워라 패턴은 제 후배들이 꼭 봐야 하는 패턴이라는 생각이 듭니다. :-) '구체적인 기술' 패턴에 이런 말이 나옵니다.
우리가 당신을 채용한다면 출근 첫 날 회사에 어떤 기여를 할 수 있나요?
 이력서를 자주 업데이트해야 합니다라는 충고보다, 멘티에게 이런 질문을 하나 던진다면 더 마음에 와 닿을거 같습니다.

역자서문에도 나옵니다만 IT를 3D, 4D로 분류하는 현실은 이미 누구나 다 알고 있습니다. 서울대 컴퓨터 공학과가 근 5년간 정원을 채우지 못했다는 기사를 읽은게 불현듯 생각나네요. 우수한 학생들이 IT를 기피하고, 그나마 잘하던 사람들도 관리자나 다른 업종으로 떠나면서 좋은 개발자 만나기는 정말 하늘에서 별따기처럼 어려워 진거 같습니다. 우수개 소리로 저희 회사 선임은 '산삼'이라고 부릅니다. ^^;

그렇지만 개발이 재밌고 좋아서 이 길을 선택한 사람들이 아직은 많이 있다고 믿고 있으며 저 스스로도 그런 사람이 되려고 노력합니다. 개발자들이 현실속에서 자신이 어떤 길로 나아가야 할지 고민할때, 슥 펴서 읽어보고 힘을 얻는 책이 될거 같습니다. 하지만 패턴이니 그대로 적용해서는 안된다는걸 잊지 마시길.
패턴은 기계적으로 적용하지 않고 자신의 상황에 맞게 변경해도 됩니다.
저도 언젠가는 이런 책을 한권 써야 할텐데...'긴 여정' 패턴이나 읽어야 겠네요. :-)

프로그래머의길멘토에게묻다
카테고리 컴퓨터/IT > 프로그래밍/언어 > 프로그래밍일반
지은이 데이브 후버 (인사이트, 2010년)
상세보기


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG java
생산성 향상이라는 말만 나오면 뭔가 '멋지고 화려한것'을 찾기 쉽습니다. 굳히 No Silver Bulet이란 용어를 언급하지 않아도 그런 것은 없다는걸 이미 짐작 하셨을거 같네요.
오히려 기본으로 돌아가는게 더 현명합니다.

Sqlite와 같은 파일기반 데이터베이스를 사용하자.
Sqlite는 임베디드 DB로 따로 인스턴스를 두지 않고도 애플리케이션 내에 내장해서 사용이 가능합니다.  C로 엔진이 개발되어 빠른 속도를 자랑합니다. 하지만 몇가지 단점도 있습니다.
  - Sqlite 에 대한 JDBC 드라이버가 전혀 업데이트 되지 않고 있습니다. 하지만 동작은 잘 합니다.
  - 파일기반이기 때문에 여기에서 오는 성능저하가 한계입니다. 하지만 SSD와 같은 빠른 하드를 쓴다면
     어느정도 커버가 가능합니다.
  - 참조 URL: Sqlite and Web application , Sqlite web app performace

컨테이너와 개발환경에 대한 동기화를 자동으로 하자.
스프링이 나오면서 lightweight 컨테이너가 많이 쓰이고 있지만 아직도 개발한 소스를 WAS에 배포하기 위해 컨테이너를 재시작하는 일이 많습니다. RoR에서 개발하는 것 처럼 소스에 대한 반영이 쉽다면 편해질거 같습니다.
  - 참조 URL: JRebel

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG j2ee, java

Java 교육과 애자일의 만남

Work & Study/TechTalk 2009/06/24 14:24 posted by k16wire
지난번에 이어 다시 강의를 진행했습니다. 정확히 말하면 'J2EE 개발을 위한 교육'이었는데 간단하게 교육내용을 정리해 봤습니다.
  • 교육의 목적: J2EE 시스템을 잘 개발 할 수 있도록 여러 기법들을 학습하기
  • 대상자: 저희 팀원 23명(이중 반은 Java를 몇년전에 해봤음, 심지어 10년된 분도..)
  • 교육내용:
    • 주어진 문제 영역을 이해한다.
    • 산출물(ex 화면정의, ERD, 클래스 다이어그램 등)을 이해한다.
    • Anyframe 기반으로 시스템을 개발한다.
    • 새로운 기법에 대한 강의를 듣는다.
    • 배운것들을 바로 개발에 적용해 본다.
  • 주요 학습 내용: Spring, SpringMVC, TDD, Refactoring, Scrum, Pair programming, Design patterns, Code review, Retrospective, 등
  • 특징: 이론 학습 + 툴 실습 + 개발 이 혼합되어 진행
이외에도 몇가지 학습의욕을 고취하기 위한 장치들이 있었는데 교육을 계속 진행해야 하기 때문에 여기에 적지 못하는게 아쉽네요. (혹시 수강할 팀원들이 알면 재미가 떨어질까 우려되서..^^)

일주일, 40시간을 진행했는데 기대했던 것 이상으로 많은 효과를 얻었습니다. 크게 세가지로 정리해 봤습니다.

첫째, 교육 자체에 대한 만족도가 매우 높았다.
프로젝트에 힘들게 일하다가 교육에 들어오게 되면 일단 교육 받는것 만으로도 즐거워 합니다.^^ 이런 것을 감안해도 다들 교육과정에 대해 "정말 좋은 교육이다."는 소감을 많이 주었습니다. 그것도 한두명이 아니라 거의 전부가 그랬습니다.

둘째, 학습 성취도가 매우 높았다.
사실 J2EE가 그렇게 쉽지는 않습니다. 그럼에도 불구하고 3일(강의등의 활동을 제외 했을때 실질 개발시간)이라는 짧은 시간에 꽤 많은 화면을 개발해 내는것을 보고 정말 놀랐습니다. 여기에는 페어의 역할이 매우 컸다고 생각합니다.

셋째, 팀워크가 좋아졌다.
저희 팀은 팀원들이 너무 많고 서로 다른곳에서 일하다 보니 팀원간에 끈끈함이 부족합니다. 5일간 정말 많이들 친해지더군요. 개중에는 그렇지 못한 친구들도 몇명 보이는걸 보니 개인성향은 어쩔 수 없는 듯 합니다.

그럼 어떻게 이런 효과가 난 걸까요? 전 이전에도 멀티캠퍼스에서 여러 교육과정을 만들고 강의를 한 경험이 있습니다. 그걸 비춰봐도 이건 잘 이해가 안가는 현상입니다. 그래서 나름 그 원인을 분석해 봤습니다.
  • 교육 자체가 즐겁다. 감정이 풍부한 사람이 기억력도 좋다고 합니다. 기억력이 좋으면 당연히 공부도 잘하겠죠. 이번 과정은 재밌게 만들려고 많이 노력했습니다. 웃고 떠들면서 공부하다 보면 지루한지 모르고 교육을 받게 되고 자연스레 집중을 하는거 같습니다.
  • 자기 주도형으로 학습한다. 과거 방식이 개발 분량을 강사가 할당하는 형식이었다면 이번에는 스크럼을 가르치고 스스로 교육기간에 개발할 분량을 스스로 산정합니다. 그리고 개개인의 책임을 강조하니 자습이나 과제를 따로 요구하지 않아도 팀단위로 토의하며 개발을 진행합니다.
  • 팀단위로 학습하고 평가한다. 모든 액티비티를 팀체제로 운영하니 팀원간에 커뮤니케이션이 많아지고 팀간에 선의의 경쟁을 통해 열심히 하게 됩니다.
저를 포함해서 강의를 진행하는 강사들이 교육과정을 만들고 강의하는것 자체를 즐기다 보니 수강하는 팀원들도 과정 자체를 즐기게 된다고 생각합니다. 앞으로 7~8개 차수를 더 진행해야 하는데 다 끝나고 나면 과연 팀이 어떻게 변할지 저도 궁금합니다.

이 다음에는 일전에 애자일컨설팅 블로그에서 본 커크패트릭 모델(Kirkpatrick Model)을 가지고 성과를 측정해 보려고 합니다. 하지만 쉽지는 않아 보이네요.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
지난 5월 19일 역삼동 멀티 캠퍼스 702호에서 삼성 SDS 자바 커뮤니티 2009년 2차 오픈 세미나가 열렸습니다. 저녁 7시부터 진행된 세미나는 예상보다 한시간 늦은 저녁 10시가 다 되어서야 끝이 났습니다.
사내외 40여명의 개발자들이 참석한 이번 세미나 역시 이전 세미나 처럼 3개 세션으로 진행했습니다.

  • UI 테스트에서 테스트 커버리지 활용하기: 황상철 책임
  • 오픈소스 CI서버, Hudson 프로젝트에 적용하기: 조재혁 선임
  • Introduction to Software Engineering "Requirements & Specification": 전규현(소프트웨어 개발의 모든것 저자)


이번 세미나는 이전 세미나와 몇가지 달랐던거 같습니다.
  1. 내부 직원 참여가 높아짐
  2. 기술이외 영역(요구사항)에 대한 강연
  3. 도서 선물(한빛 미디어 협찬)
  4. 다과 준비
다음 세미나는 7월말에 열릴 예정입니다. 더 많은 사람들이 참석할 수 있도록 OnOff Mix에 등록해서 진행하려 합니다. 이번에 외부에서 참석하신 분들 메일 적은게 없어졌습니다.-_-;; 참석하셨던 분 중 다음번 세미나 공지를 메일로 받고 싶으신 분은 이 글에 댓글로 남겨주시면 되겠습니다.

강의해 주신분, 참석해 주신 분, 책을 지원해 주신 한빛 미디어에 감사드립니다. 첫번째 세션과 두번째 세션의 발표자료를 첨부합니다.


크리에이티브 커먼즈 라이선스
Creative Commons License

2009년 2차 삼성 SDS 자바 커뮤니티 오픈 세미나를 화창한 5월에 아래와 같이 진행하려 합니다.

  • 날짜 및 시간: 2009년 5월 19일, 저녁 7시~9시
  • 장소: 멀티 캠퍼스 702호
  • 내용
    • UI 테스트에서 테스트 커버리지 활용하기: 황상철 책임
    • 오픈소스 CI서버, Hudson 프로젝트에 적용하기: 조재혁 선임
    • Introduction to Software Engineering "Requirements & Specification": 전규현(소프트웨어 개발의 모든것 저자)

이번에도 3가지 주제를 가지고 세미나를 진행합니다. 오픈소스를 활용하여 테스트 커버리지를 측정하고 이를 어떻게 활용하는지설명하며, 요즘 가장 널리 사용되고 있는 Hudson을 활용하는 방법에 대해 알려드립니다.외부 강사로는 소프트웨어 개발의 모든것의 저자 전규현님이 오셔서 요구사항에 대한 내용으로 강연을 해주실 예정입니다.

외부 신청자는 20명까지 받을 예정입니다. 참석을 원하시는 분들은 아래 URL로 신청해 주시기 바랍니다.

https://spreadsheets.google.com/viewform?formkey=clo2MXYxNzM2SW9ER3l0YnF3WFZPSUE6MA..

많은 참여를 기대합니다.

감사합니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
차드호수의 심각한 물 부족 사태
환경운동가로 유명한  앨 고어 전 미국 부통령은 그의 저서 '위기의 지구'에서 아프라키의 말라버린 차드호수를 소개하고 있습니다. '풍부'라는 뜻의 차드호수는 이름과 달리 40여년동안 수량이 96% 줄었고 이제는 거의 바닥을 드러내, 기후변화에 따른 심각한 물 부족 문제를 보여줍니다.
물 부족은 생존의 위기라고 합니다. IT산업의 물은 뭘까요? 개발자가 아닐까요.

전 세계 IT 시장의 개발자 부족 현상
우리나라와 산업구조가 가장 유사한 일본의 경우 IT 시장이 우리에 비해 6배 이상인 1297억 달러로 추산합니다. 하지만 심각한 IT인력 부족 문제으로 2009년 50만명이상의 인력이 부족할 거로 예상되며 이를 외국 인력으로 충원할 계획입니다.

전세계 IT인력 허브라고 하는 인도의 경우도 인력부족 문제는 심각합니다. 2010년까지 연 25% 성장을 예상하지만 영어를 능통하게 구사하는 엘리트 그룹은 전체 인원의 25%밖에 안되서 2010년이면 50만명 정도 기술인력이 부족할거라 예상합니다.

국내 IT 인력 부족 문제
우리나라로 눈을 돌려보겠습니다. 국내 개발자 부족현상도 어제 오늘 일이 아닙니다. 한국소프트웨어 진흥원 이 2008년에 발행한 소프트웨어 산업백서에 따르면  2007년 한해 IT 서비스분야에서 12.4%, 4,800명이 부족하다고 집계했습니다.

2007년 심각한 개발자 부족으로 단기적 임금 급상승이 있었던 적이 있습니다. 하지만 이는 개발자 부족이 낳은 기이한 현상이었을 뿐이지 근본적인 해결책은 아니었습니다.

IT 아웃소싱을 통한 문제 해결
제가 몸담고 있는 회사를 비롯해 국내 대표적 IT회사들은 중국이나 인도에 오프쇼어 개발센터를 세워서 이런 문제를 해결하려 합니다. 하지만 주요 아웃소싱 국가들의 경쟁력을 비교해 본다면 이런 방법도 쉬운 해결책은 아니라는걸 알 수 있습니다.

 

베트남

인도

중국

Project Manager 임금

8,400$

25,000$

15,600$

경력직(5년+) 프로그래머 임금

6,000$

16,000$

10,800$

신규 프로그래머 임금

2,500$

7,000$

4,600$

정부 지원

정부 적극 지원 및 상대적으로 낮은 관료주의

정부 적극지원, 하지만 관료주의 강함.

정부지원 없으나, 다국적 기업 진출 확대

영어 능력

교육수준

적절한 교육수준

수준은 높은 편이나

차이가 심함.

적절한 교육수준

주요 IT 아웃소싱 국가 소프트웨어 산업별 경쟁력 비교[출처]

평균적인 임금 상승률이 아니라 하더라도 문화,언어,시간대,지역등의 차이에서 오는 생산성의 저하는 만만한 문제가 아닙니다.

국내 개발자들이 가야할 길
지금까지 국내외 개발자 부족 현상에 대해 살펴봤습니다. 그럼 이제 어떻게 해야 할까요? 2007년 12월 마이크로 소프트웨어 디벨로퍼 플러스에 실린 인도와 한국 개발자, 그리고 새로운 도전이라는 기사를 보면 인도 소프트웨어 산업의 눈부신 성장을 알 수 있습니다.

작년 한해동안 벵갈로르로 여러번 출장도 다니고 인디아 개발자들과 프로젝트를 같이 진행하면서 느낀것은 우리가 더 유리하다입니다. 기사의 내용처럼 인도의 IT인프라는 정말 열악합니다. 하지만 인도 엔지니어들은 자신이 엔지니어라는 자존심이 대단합니다.(사회적인 대우도 좋습니다.) 
  • SI 프로젝트 위주의 국내 현실을 직시해야 합니다.
  • SW 엔지니어로서의 핵심 역량을 키워 나가야 합니다.
  • 글로벌 경쟁력을 갖춰야 합니다.
전 우리나라 엔지니어들이 전 세계 어느나라 엔지니어와도 어깨를 나란히 할 수 있는 잠재력이 있다고 생각합니다. 그럴 수 있는 인프라도 어느정도 갖추어져 있다고 생각합니다.

개발자 여러분, 열정을 가지고 열심히 노력하면 언젠가는 좋은날이 올거라 믿습니다.


크리에이티브 커먼즈 라이선스
Creative Commons License
현재 국내에서 활동하고 있는 자바 관련 커뮤니티에는 어떤 것들이 있는지 찾아봤습니다. Naver, Daum, Google에서 '자바커뮤니티'로 검색해서 나온 사이트들 중에 자바를 주된 컨텐츠로 하는것들을 추려보니 아래에 정리해 놓은 11개 사이트 정도를 추릴 수 있었습니다.
  • JavaServiceNet(http://www.javaservice.net): 이원영씨가 만든 자바서비스넷
  • 자바스터디(http://www.javastudy.co.kr): 1999년 조대협님이 만드신 커뮤니티
  • OKJSP(http://www.okjsp.pe.kr): 허광남님이 만드신 자바 커뮤니티
  • 자바지기(http://wiki.javajigi.net): 위키형태로 운영되는 박재성님의 자바 커뮤니티
  • 자바모델링(http://www.javamodeling.com): 2006년 고덕한님이 만드신 커뮤니티
  • MOBILEJAVA(http://www.mobilejava.co.kr/):모바일에서 자바로 개발하는 분들의 커뮤니티
  • JCO(http://www.jco.or.kr): 2000년에 설립된 한국 자바 커뮤니티 협의회
  • 자바카페(http://www.javacafe.or.kr): 1999년 설립된 커뮤니티, 꾸준히 활동, JCO 발기인 단체
  • 자바누리(http://www.javanuri.com): (주)데브피아가 운영하는 자바 사이트
  • 애니프레임자바(http://www.anyframejava.org): 삼성 SDS에서 2008년 8월 오픈
  • J2EE Study(http://www.j2eestudy.co.kr): 2008년 10월 이후 활동없음. 거의 관리되고 있지 않음
  • 하나자바(http://www.hanajava.net): 2008년 12월 이후 활동없음.
JCO, 자바누리, 애니프레임 자바는 회사나 단체의 성격이 강해서 제외한다면, 제 사견으로는 커뮤니티 형태로 가장 잘 운영되고 있는 사이트는 상위 3개 - JavaServiceNet, 자바 스터디, OKJSP - 정도 되는거 같습니다. 앞으로도 좋은 활동 많이 하시길 빕니다. :-)



크리에이티브 커먼즈 라이선스
Creative Commons License

Java Coding Convention

Development/기술 2008/03/23 03:16 posted by k16wire
개발할때 코딩 컨벤션 참 중요합니다. 그런데 너무 많으면 오히려 개발자들이 잘 안봐서 문제가 됩니다.
일반적인 자바 코딩 컨벤션은 SUN의 컨벤션입니다.
Code Conventions for the Java Programming Language
하지만 양이 좀 많죠. 한 페이지로 정리한 컨벤션도 있더군요.
Java Coding Conventions on One Page
사용자 삽입 이미지






크리에이티브 커먼즈 라이선스
Creative Commons License
요즘 다양한 시스템에 대해 CI(Continous Integration)를 적용하다 보니 기본적인 사항을 다시 보기 일쑤다. 배포를 자동화 하려고 하는데 웹로직에서 EJB를 배포하는 Ant Target을 찾는데 기억이 안났다.
(개발전선에서 떠난지 얼마나 됐다고 이걸 까먹나..^^)
마침 BEA에서 만들어 올려놓은 문서를 하나 찾았다.




그런데 여기에는 기본적인 사항만 있어서 다시 구글을 뒤졌다. BEA 사이트에 웹로직 서버를 설정하는데 사용가능한 Ant Task를 정리해 놓은 페이지를 찾았다.
Using Ant Tasks to Configure a WebLogic Server Domain

이제 이 Task를 바탕으로 빌드 스크립트만 작성하면 될거 같다.
크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 자동화' 카테고리의 다른 글

빌드(Build)의 종류  (0) 2007/10/15
Ant 표준 타겟(Target)  (0) 2007/09/17
Ant로 웹로직에서 EJB 빌드하고 배포하기  (0) 2007/08/30
환경변수 자동으로 추가하기  (4) 2007/03/29
프로젝트 관리의 자동화  (0) 2007/02/18
Build Server Anthill  (0) 2007/02/05
TAG Ant, java

Spring Framework - SubProjects

Development/기술 2007/05/22 01:05 posted by k16wire
스프링 프레임워크를 단순한 프레임워크으로 보기 보다는 제품을 개발하기 위한 에코시스템으로 보는게 더 맞을거 같다. 현재 스프링을 기반으로 하여 공식적으로 진행되고 있는 서브프로젝트는 12개다.
  • Spring Web Flow
    • 웹화면간의 플로우를 동적으로 정의하여 어떤 웹 어플리케이션에서도 재활용 할수 있게 해주는 웹 어플리케이션을 위한 프레임워크
  • Spring Web Services
    • 문서기반의 웹서비스를 만들수 있게 지원해주는 프레임워크로 궁금적인 목적은 계약을 기반으로 한 SOAp서비스를 만드는것이다.
  • Spring Rich Client
    • 리치 클라이언트 프레임워크, 스윙 어플리케이션을 빨리 만들수 있게 해준다.
  • Spring OSGi
    • OSGI 프레임워크에서 스프링 어플리케이션을 빨리 만들수 있게 지원하는 프로젝트
  • Spring JavaConfig
    • 컨피그 프레임워크
  • Spring .NET
    • .NET 기반의 스프링 프레임워크
  • Spring Batch
    • 배치성 어플리케이션 개발을 위한 프레임워크
스프링은 다양한 부분에서 스프링을 활용할수 있도록 서브프로젝트가 활발하게 진행되고 있으며, 이 서브프로젝트들도 완성도 역시 높기때문에 J2EE 어플리케이션에서 스프링의 중요성은 더 높아질것으로 예상된다.


크리에이티브 커먼즈 라이선스
Creative Commons License

Spring Framework - Modules

Development/기술 2007/05/22 00:59 posted by k16wire
사용자 삽입 이미지
스프링은 그 기능에 따라 모듈을 단위로 구분할 수가 있는데 총 7개의 모듈로 이루어져 있다 -  Core, Context, DAO, ORM, AOP, Web, MVC
모든 모듈은 Core를 기반으로 하며, 이 외의 모듈은 반드시 사용해야 하는것은 아니다. 필요에 따라 사용하면 된다.


  • Core
프레임웍의 근간이 되는 부분으로 Ioc와 Dependency Injection과 같은 스프링의 핵심이 되는 특징을 제공한다. BeanFactory를 통해 실제 로직의 구현과 설정을 분리할수 있게 해준다.
  • Context
JNDI, i18N, 서블릿 컨테이너, 리소스 로딩등과 같은 프레임워크로 제공해야 하는 여러 특징들을 제공한다.
  • DAO
벤더별로 JDBC코딩을 하지 않아도 되도록 JDBC 추상화 기능과 POJO에서 트랜젝션 관리를 할수있는 기능을 제공한다.
  • ORM
J2EE에서 즐겨 사용되는 Hibernate, iBatis, JDO, JPA와 같은 OR 멥핑 API와 연계할수 있는 통합 레이어를 제공한다. 이러한 API들과 연계할수 있는 트랜젝션 서비스도 제공한다.
  • AOP
스프링은 AOP Alliance를 따른 AOP를 제공하며 소스 수준의 메타데이터 프로그래밍을 지원한다.
  • Web
Multipart 파일업로드, 서블릿 리스너를 이용한 IoC 컨테이너등 웹 어플리케이션을 위한 기능을 제공한다. WebWork이나 Struts같은 웹 프레임워크와 통합도 지원한다.
  • MVC
웹 어플리케이션의 MVC 모델을 지원한다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 기술' 카테고리의 다른 글

Windows Vista에서 WCF 개발하기 - Vista와 WCF  (0) 2008/01/07
Spring Framework - SubProjects  (0) 2007/05/22
Spring Framework - Modules  (0) 2007/05/22
Spring Framework - Samples  (0) 2007/05/16
Spring Framework - Installation  (0) 2007/05/08
Spring Framework - Reference  (0) 2007/05/08

Spring Framework - Samples

Development/기술 2007/05/16 00:55 posted by k16wire
  • 스프링 프레임워크 샘플
스프링 프레임워크로 무엇을 할수있는지 알아보는 가장 좋은 방법은 실제로 스프링으로 작성된 어플리케이션을 실행해 보는것이다. 스프링은 6개의 샘플 어플리케이션을 제공한다. 각 샘플이 보여주는 스프링의 특징을 간략히 알아보자.

countries
    페이지 리스트 네비게이션
    로케일
    뷰를 이용한 페이지 구성
    PDF와 엑셀파일 생성
imagedb
    BLOB/CLOB 처리
    네이티브 연결
    파일업로드
    벨로시티(Velocity)와 통합
jpetstore
    iBATIS 연동
    스프링 웹 MVC
    스프링기반의 원격처리
petclinic
    Hibernate 연동
    JMX
    JTA
petportal
    포틀릿
showcases
    dynamic : 그루비(groovy) 연동
    formtags : MVC 폼 태그
    java5-dao :
    mvc-connvention

각 샘플을 돌려보기 위해서는 JBoss나 Tomcat과 같은 컨테이너, MySQL이나 HSQL과 같은 데이터베이스가 필요하다.
  • JPetStore 설치 및 실행
JPetstore는 J2EE의 대표적인 샘플 애플리케이션 PetStore를 스프링과 iBATIS 기반으로 커스터마이징한 버전이다. 간단하게 HSQL 데이터베이스와 톰캣을 이용하여 JPetstore를 실행해 보자. 실행단계를 스텝바이 스텝으로 적어보면 다음과 같다.

    - JDK 1.4.x 이상 설치
    - JAVA_HOME 변수를 환경변수에 추가
    - ANT 1.5 이상 설치
    - ANT의 실행파일을 Path에 추가
    - %SPRING_HOME%/samples/jpetstore/ant warfile 로 war 파일 생성
    - %SPRING_HOME%/samples/jpetstore/dist/jpetstore.war 파일을 Tomcat의
        webapp로 복사하고 톰캣을 실행한다.
    - %SPRING_HOME%/samples/jpetstore/db/hsqldb/server.bat 로 HSQL DB실행
    - 웹브라우저에서 http://localhost:8080/jpetstore URL 입력

모든 단계가 제대로 수행되고 나면 아래와 같은 결과 화면을 볼수있다. 다른 샘플도 비슷한 단계를 통해서 실행이 가능하니 직접 실행해 보기 바란다.
사용자 삽입 이미지



크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 기술' 카테고리의 다른 글

Spring Framework - SubProjects  (0) 2007/05/22
Spring Framework - Modules  (0) 2007/05/22
Spring Framework - Samples  (0) 2007/05/16
Spring Framework - Installation  (0) 2007/05/08
Spring Framework - Reference  (0) 2007/05/08
Spring Framework - Pilot  (0) 2007/05/07

Spring Framework - Installation

Development/기술 2007/05/08 01:37 posted by k16wire
  • 스프링 프레임워크 다운로드
스프링을 설치하기 위해서는 먼저 프레임워크 파일을 다운로드 해야 한다. 스프링 사이트에서Downloads 메뉴로 들어가면 SourceForge.net의 Spring Framework으로 연결된다. 다운로드가 가능한 파일은 2가지다.

spring-framework-2.0.8.zip
약 10메가 정도되는 스프링 프레임워크의 기본릴리즈 파일이다.

+ dist  Spring 배포 jar 파일과 소스파일
+ docs 레퍼런스 문서

spring-framework-2.0.8-with-dependencies.zip
스프링 프레임워크의 기본적인 릴리즈 파일이외에 스프링을 직접 컴파일 하고, 샘플 어플리케이션을 실행할수 있도록 관련 라이브러리와 샘플소스, 프레임웍 소스가 모두 포함되어 있는 약 60메가정도의 풀버전 파일이다.

+ dist Spring 배포 jar파일과 소스파일
+ docs 레퍼런스 문서
+ lib 스프링 프레임워크를 빌드하고 샘플을 실행하는데 필요한 jar파일
+ src 스프링 프레임워크 소스파일
+ mock 목(mock)과 테스트파일
+ test 스프링 프레임워크 테스트파일
+ tiger/src JDK1.5관련 프레임워크 소스파일
+ tiger/test JDK1.5관련 프레임워크 테스트 파일
+ aspectj/src AspectJ관련 프레임워크 소스파일
+ aspectj/test AspectJ관련 프레임워크 테스트 파일
+ samples 데모 샘플어플리케이션과 showcaes

당근 두번째 풀버전 파일을 다운받는다.
  • 스프링 프레임워크 설치
J2EE 프레임워크에는 이미 알고있듯이 설치라고 부를만한 작업이 많지았다. jar파일을 복사하고 환경변수정도를 설정하면 된다.
하지만 앞으로 개발을 쉽게 하기 위해 두가지 환경이 필요하다.
  1. Eclipse기반의 개발환경
  2. Ant 빌드환경
이외에도 샘플어플리케이션을 실행하기 위해서 다음 어플리케이션이 필요하다.
  1. MySQL
  2. Tomcat
  3. Ant
  4. J2SE
  5. JUnit
어플리케이션 설치에 대한 자세한 설명은 생략한다. 하지만 실제로 샘플 어플리케이션을 실행하고 랩을 진행하기 위한 설정은 추후 추가하도록 하겠다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 기술' 카테고리의 다른 글

Spring Framework - Modules  (0) 2007/05/22
Spring Framework - Samples  (0) 2007/05/16
Spring Framework - Installation  (0) 2007/05/08
Spring Framework - Reference  (0) 2007/05/08
Spring Framework - Pilot  (0) 2007/05/07
Spring Framework - Session 0  (0) 2007/05/06

Spring Framework - Reference

Development/기술 2007/05/08 00:45 posted by k16wire
  • 스프링 프레임워크 관련서적
스프링 프레임워크를 제대로 이해하기 위해서는 많은 공부가 필요하다. 관련 서적들이 시중에 많이 나와있어서 이를 소개한다.

사용자 삽입 이미지
첫번째 소개할 책은 Manning사의 유명한 in Action 시리즈의 스프링 버전인 스프링 인 액션이다.
원서를 번역한 책으로 에이콘에서 출판되었다. in Action 시리즈 답게 실용적으로 잘 쓰여진 책이다. 다만 스프링의 버전이 1.2.7을 기준으로 하는게 아쉽다. 반드시 2.0을 써야 하는 분이 아니라면 무리 없을거 같다.




사용자 삽입 이미지
두번째 소개할 책은 자바지기로 유명한 박재성님이 직접 쓰신 Spring 프레임워크 워크북이다.
워크북이라는 말에 번역서인줄 알았는데 저서라서 조금은 놀라기도 했다.
내가 알기로는 스프링관련한 저서는 유일하다. 국내서가 드문 현실을 미루어 봤을때 내용을 떠나서 참 반가운 책이다.




사용자 삽입 이미지
세번째는 지난번에도 언급했던 로드존슨(Road Johnson)의 J2EE Design and Development 이다.
말이 필요없는 책이다. 이미 번역되서 expert one-on-one J2EE 설계와 개발이라고 나와있지만 원서를 보라고 권하고 싶다.
(번역의 어려움을 알기에 더 언급은 안하겠음)




스프링 프레임워크 관련한 더 많은 정보는 스프링 사이트의 Book review를 참고하길 바라며 책소개는 여기서 그만 하도록 하겠다. 국내에 더 많은 책이 있을줄 알았는데 생각보다 스프링 관련서가 적어서 실망했다.

  • 스프링 프레임워크 온라인 자료
스프링 프레임워크 만큼 문서화가 잘되어 있는 프레임워크는 드물다. 아니 없는거 같다. 스프링 프레임워크 사이트의 Documentation에 들어가 보면 관련 자료에 대한 링크가 잘 정리되 있다. 책사기 싫으신분, 책살돈 없으신분을 위해 소개한다. ^^

Introducing the Spring Framework
2005년도에 스프링프레임워크를 소개하기위해 TSS에 로드존슨이 작성한 기사. 스프링 관련 TSS기사들도 정리되어 있으니 반드시 읽어보길 권한다.

Spring 2.0: What's New and Why it Matters
스프링 2.0에 대한 특징만 로드존슨이 정리한 글이다. 이미 1.x대 버전을 사용하신 분이라면 2.0에서 변경된 부분을 이해하기에 좋을것 같다.

Reference Manual
HTML과 pdf버전으로 제공한다. 500페이지짜리 책 한권이 통째로 제공된다. 말이 필요없는 레퍼런스다. 한꺼번에 다 보기보다는 옆에놓고 있으면 뿌듯하다.

Turorial - Step by Step
스프링의 튜토리얼은 총 6개 파트로 나누어서 제공하고 있다.

1. Basic Application and Environment Setup
2. Developing and Configuring the Views and the Controller
3. Developing the Business Logic
4. Developing the Web Interface
5. Implementing Database Persistence
6. Integrating the Web Application with the Persistence Layer

장황하게 적었지만 사실 스프링 사이트에 다 들어있는 내용들이다. 이 외에도 수많은 글과 포럼이 스프링 사이트에 링크되어 있다. 이 정도면 책 안사도 될거 같은데요 ^^

크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 기술' 카테고리의 다른 글

Spring Framework - Samples  (0) 2007/05/16
Spring Framework - Installation  (0) 2007/05/08
Spring Framework - Reference  (0) 2007/05/08
Spring Framework - Pilot  (0) 2007/05/07
Spring Framework - Session 0  (0) 2007/05/06
.NET Framework 3.0 개발환경 구성하기  (0) 2007/02/08

Spring Framework - Pilot

Development/기술 2007/05/07 23:59 posted by k16wire
  • 스프링 프레임워크이란 ?
사용자 삽입 이미지
스프링 프레임워크는 Java/J2EE 애플리케이션을 개발하기 위한 프레임워크이다. 이 프레임워크은  로드존슨(Road Jonhnson)이 Expert One-on-One J2EE Design and Development라는 책을 2002년도에 처음 출간하면서 부터 시작되었다. 이 책에는 스프링이 가져가고자 하는 철학이 모두 담겨있으니 꼭 한번씩 읽어보기를 권한다.

스프링 프레임워크의 공식 사이트에 가보면 "우리의 미션(Mission Statement)"이 자랑스럽게 쓰여있다. ^^
이를 읽어보면 스프링의 특징을 파악하는데 많은 도움이 된다.

  1. J2EE는 사용하기 쉬어야 한다.
  2. 클래스보다는 인터페이스를 사용해야 한다.
  3. JavaBean이 어플리케이션을 설정하는데 가장 좋다.
  4. OO 디자인이 중요하다.
  5. Java는 Exception을 처리가 너무 많다.
  6. Testability가 중요하다.
  • 스프링 프레임워크의 특징
스프링에 대해 본격적으로 들어가기에 앞서 간단하게 스프링이 갖고 있는 특징을 한번 정리해 보자.
  1. The most complete lightweight container
  2. A common abstraction layer for transaction management
  3. A JDBC abstraction layer
  4. Integration with Toplink, Hibernate,JDO,and iBATIS SQL Maps
  5. AOP functionality
  6. A flexible MVC web application framework
각 특징이 뭐라고 구구절절 설명하지 않고 키워드만 뽑아봐도 스프링이 J2EE의 주요 프레임워크나 개념들과 깊은 관련이 있다는걸 알수있다.
  • 스프링 프레임워크를 사용하면 뭐가 좋은가 ?
스프링을 사용하는데는 여러가지 이유가 있겠지만 아무래도 가장 큰 부분은 개발이 쉬어진다는 사실일 것이다. 코딩-테스트로 이루어지는 작업에 EJB를 사용하면서 코딩-배포-테스트로 복잡해지고 이 과정에서 작업시간이 많이 걸린다. 이과정을 단순화함으로서 다양한 장점들을 얻을수가 있게된다.
  • 스프링 프레임워크 구성
스프링이 갖고있는 많은 특징들을 아래 그림과 같이 크게 구분해서 볼수있다.
사용자 삽입 이미지

  • 스프링 프레임워크 버전
사용자 삽입 이미지
2007년5월7일 현재 스프링 프레임워크의 최신 버전은 2.04이다.
2007년 5월 14일 Spring Framework 2.1 M4가 공식버전으로 릴리즈 됐다.
2008년 12월 현재 최신버전은 2.0.8이다.


  • 스프링 프레임워크 라이센스
스프링 프레임워크는 아파치 라이센스 버전 2.0을 따른다.



크리에이티브 커먼즈 라이선스
Creative Commons License

Spring Framework - Session 0

Development/기술 2007/05/06 02:00 posted by k16wire

내가 좋아하는 사람들 중에는 썬에서 자바 에반겔리스트로 활동하는 신상철님이 있다. 이분 인터뷰 기사를 마소에서 보고난후 결심한게 한가지 있다.

"언젠가는 멋진 강좌를 한번 써보리라."

블로그를 쓰기 시작한지 1년만에 꼭 한번 해보고 싶었던 강좌를 시작해 보려고 한다. 그 첫번째 주제로 잡은것이 "스프링 프레임워크(Spring Framework)" 이다.
사용자 삽입 이미지

2007년5월7일 현재 목차는 다음과 같다.(계속 업데이트 예정)
  1. Pilot
  2. Reference
  3. Installation
  4. Samples
  5. Modules
  6. SubProjects
  7. Start-up
나처럼 스프링에 대해 많이 들어봤지만 제대로 공부를 시작하려는 사람에게 도움이 되길 빌면서 한가지 당부하고 싶은것이 있다면 이 강좌를 읽은 분들은 어떤 형태로든 좋으니 피드백을 남겨주길 부탁드린다.
크리에이티브 커먼즈 라이선스
Creative Commons License

Java SE 6.0 발표

Life & Culture 2007/02/19 16:01 posted by k16wire

12월18일 드디어 Java SE 6.0이 발표되었다. 5.0이 발표된지 2년이 지나서야 모습을 드러낸 Java SE 6.0은 현재 엔터프라이즈 시장의 트랜드를 반영하듯 웹서비스와 데스크탑 어플리케이션 개발을 더욱 강화했으며, 웹 2.0을 지원하기 위하여 스크립트 프레임워크를 내장했다.

JavaSE 6.0의 최신 특징을 지원하는 IDE는 넷빈즈 5.5버전이다.
Java SE 6.0에 대한 자세한 사항은 SUN의 JavaSE6 페이지에서 확인할수가 있다.


크리에이티브 커먼즈 라이선스
Creative Commons License

'Life & Culture' 카테고리의 다른 글

모아이(Moai) 란 ?  (1) 2007/02/19
Introduction to SOA 번역을 마치며  (0) 2007/02/19
ITIL을 공부해야 하나  (0) 2007/02/19
Java SE 6.0 발표  (0) 2007/02/19
정전으로 알게된 뉴스의 진실  (0) 2007/02/07
Google R&D 센터 발표소식이 반갑지 않은 이유  (0) 2007/02/05
TAG java

Stream과 Serialization

Work & Study/TechTalk 2007/02/18 18:11 posted by k16wire
Java를 많이 개발해 본 사람들에게 Stream과 Serialization에 대해 설명해 보라고 하면 잘 못하는 경우가 많다. 뭔지는 알고 있는데 뭐라고 정의는 못 하겠다는 사람들이 의외로 많은데 놀라기도 한다.

사용자 삽입 이미지

Stream은 객체간의 데이터를 이동하는 파이프라인이다. 데이터 자체를 생성하는것은 아니고 데이터를 운반하는 역할을 한다.

사용자 삽입 이미지

Serialize는 메모리상의 객체를 고정된 바이트 단위로 데이터를 저장해놓고 이를 스트림에 쓰는 것을 의미한다. Deserialize는 이 과정의 역순이다. 자바에서 이를 위해 제공하는 클래스로는 DataOutputStream과 DataInputStream이 있다.

크리에이티브 커먼즈 라이선스
Creative Commons License
TAG java