로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
서평보기
JSF 인 액션 : 표준 UI 프레임워크
Kito D. Mann/이태상 | 에이콘 | 번역서 | 2006-03-20
종합평점
도서수준
Java 표준 UI Framework.. 2006-09-24 오전 9:47:02 
평점
도서수준
조회수 (2037)
공감 (0)
임은천 님의 블로그
웹 프로그래밍을 하다 보면 클라이언트 단계의 구현, 서버 단계의 구현, 그 중간에 끼여 있는 비즈니스 로직과 화면 디자인에 대한 구현이 있게 되면서 개발자들의 고난(?)이 시작된다. 사실 표준이라는 건 처음 접할 때는 모르는 영역이라서 어렵다고 느껴지지만, 익숙해지면 다른 사람들과 더불어 편하게 쓸 수 있는 것이 사실이다. 이 책에서 다루고 있는 건 표준 UI Framework라고 불리는 JSF라는 것에 대해서 다루고 있다.
 
아마 웹 프로그래밍을 하다 보면 한 번쯤은 들어봤음직한 내용일 것이다. 다만, 책의 문체가 좋지 않아서 생각보다 적은 내용을 담고 있음에도 불구하고 무려 4일이라는 시간을 잡아 먹을 정도로 지루하고, 따분하다는 생각이 들지도 모르겠다. 하지만, 이 책은 지루한 책이라기 보단, 처음부터 끝까지 JSF 자체에 대한 것을 충실하게 설명하고 있기 때문에, JSF에 대한 내용은 이 책만 봐도 될 거라고 생각한다. 읽다 보니 왠지 ASP.NET을 C#으로 개발하는 것과 비슷하다는 생각이 드문드문 들기는 했지만.. 어찌 되었든 그런 부분을 넘어가면, Component라는 것이 XML을 기반으로 해서 메타 정보를 가지고 있고, 그 내용이 여기 저기서 활용되는 식으로 시스템이 구성되다보니, 솔직하게 이야기 하자면, XML 기반의 스키마를 표현하는 내용에 대한 설명이 부족해서 약간 아쉽다고 할 수 있다. Component라는 용어가 쓰인 곳 중에 개인적인 의견으로는 Control이라는 용어를 사용했으면 더 적절했을 것 같다고 생각이 든다.
 
40p에서 그림까지 그려가면서 설명하고 있는 건, 웹프로그래밍을 하다 보면 필요한 내용들을 따져보면서 이해하면 더 쉬울 것이다. JSF 프레임워크 자체는 웹 프로그래밍에 결합되어서 사용되는 것은 아니지만, 웹 프로그래밍의 html 요소들에 익숙한 사람들에게는 이해하기가 훨씬 쉬울 수 밖에 없다. 왜냐하면 이 책에서 다루고 있는 렌더러는 기본 렌더러 킷트인 html 렌더러 킷트(이 Kit라는 건 실제 패턴 이름은 Factory 패턴이다)를 사용하고 있기 때문이다.
 
43p에 나오는 encoding은 xml로 된 내용을 html로 바꿔주는 것이고, decoding은 xml로 된 내용을 추출해서 서버에 넣는 과정이라고 할 수 있다.
45p에 나오는 기반 빈(Backing bean)은 ASP.NET의 CodeBehind와 매우 비슷하다. 저자는 이면이 상당히 다르다고 이야기 하고 있지만, 설명을 안 해주고 있기 때문에 뭐가 다른지는 모르겠다. 그 다음에 나오는 EL 표현식 같은 경우에는 JSP나 다른 프레임 워크에서도 쓰이므로 아마 익숙할 것이다.
50p에 나오는 이벤트 모델도 왠지 ASP.NET의 느낌이 난다. 쭈욱 지나가서 80쪽에 범위 변수라는 것이 나오는데, JSP에서 Bean들이 저장되는 범위와 마찬가지 형태로 되어 있다. 서버 단계에서는 이 내용을 객체 그래프를 그릴 때 트리 형태로 그려서 메모리에 가지고 있게 되는데, 이 것에 대한 영역을 정할 수 있고, 이 영역에 따라서 JSF의 EL을 통해 각 변수에 접근할 수 있게 되는 것이다. 거기에다가 사용의 편리를 도모할 수 있도록 내장변수라는 것도 제공해 준다.(서블릿 엔진에서 session, request, application의 내장 변수를 제공하는 것과 마찬가지) 빈의 저장 범위는 managed-bean-scope라는 요소에 할당되게 된다. 그리고 127p에 나오는 것처럼 리스트 류의 변수들을 미리 선언해 두고 차후에 쉽게 참조를 통해서 사용할 수도 있다.(이 것을 실제로 구현하면, 컴파일하고, 자잘한 객체가 많이 생겨서 성능 저하가 발생할 수 도 있는데, 이미 구현해 두고, 선언만 해서 쓰는 형태이기 때문에, 생산성 측면에서 매우 좋다고 볼 수 있다.)
 
내장 변수의 종류는 82p에 있으므로 잘 알아 두도록 하자.(다만 약간의 오타가 있다.)
 
84p에는 괴상한 # 표현이 나오는데, 이 내용은 6장에나 가서야 이해가 된다.(왜이렇게 앞에 나왔는지 참 이상할 따름이다.)
 
3장은 그냥 넘어갈 수 없는데, 여기에서는 실제 어떻게 설치를 해서 JSF를 사용해볼까? 하는 것을 다루고 있기 때문이다. 익숙해지기 전에는 이 곳을 두루 살펴 보는 수밖에 없다. 93p에 나오는 Faces 서블릿이라는 것은 매우 중요한 서블릿이다. 이름에서 느껴지듯이 이 서블릿에서 여러 복잡한 일들이 일어나게 되는 것이다.
 
94p에 나오는 내용 중에 javax.faces.STATE_SAVING_METHOD 같은 경우에 client를 지정하면, html이 생성될 때(encoding 될 때), ASP.NET의 ViewState와 비슷한 암호화된 문자열들이 보인다.
 
99p에 locale 및 메시지 번들을 설정하는 부분이 보이는데, 이 내용은 역시 6장에서 국제화와 관련해서 다뤄지게 된다.
 
105p에 verbatim이라는 요소가 나오는데, 이 요소가 있음으로 인해서 JSTL이 실행될 수 있게 된다. verbatim 안에 있으면 안의 내용이 그대로 다음 프로세싱으로 전달되게 되게 된다. 좀 더 자세한 내용은 157p에 깔끔하게 정리가 되어서 나온다.
 
133p에 나오는 action이 하는 역할은 Struts에서 Command에 대한 명령을 나타내는 문자열이라고 생각하면 된다.
 
4장부터는 정말 지루하다. 본 독자는 그냥 읽었지만, 비슷한 내용이 거의 계속 반복되고, 중요한 거라면 143p에 나오는 facet 정도가 있겠다. 하는 일은 자잘한 Component들을 묶어서 원하는 크기로 만들어 준다.
161p에 나오는 포맷은 굳이 SimpleTextFormat 같은 객체를 안 만들어도 내부적으로 JSF가 만들어서 처리를 해주므로 꽤 유용하게 쓸 수 있을 것이니 책갈피를 해놔도 좋을 것 같다.
 
5장 189p에서 나오는 actionListener는 Java GUI 프로그래밍을 할 때, 그 것을 선언하고, 정적이든지 동적이든지 바인딩하는 것을 보여준다. 개념 상으론 어려운 게 없기 때문에 이쯤 되면 좀 지루할 것이다 사실 본 독자는 5장 끝인 233p까지 읽을 동안에 책 내용에 집중하기 보다는 어떻게 하면 서버에 있는 값을 AJAX에 연결해서 사용할까 하는 것을 생각하느라 컴포넌트(아까도 말했지만, 컨트롤이 더 잘 어울린다.)를 집중해서 보지는 않았다. 텍스트로만 요소(일반적으로 태그라고 한다.)를 만들면 서버에 대한 부하가 줄어들고, 더 원하는 형태로 만들기는 쉽지만, 그렇게 하면 서버의 컴포넌트와 보이는 것 간에 연결이 끊어지기 때문이다. 어쨌든 머리 아픈 일이 아닐 수 없다. JSF가 AJAX랑 연결이 된 형태로 HTML Render Kit가 구성이 되었다면, 별로 그런 생각은 안들었을 것이고, 아마 많은 개발자들이 더 JSF에 관심을 가지게 되지 않을까? 생각된다. ASP.NET 쪽에서는 ATLAS라는 것을 완성하려고 노력하고 있는데, JSF는 어느 정도 공개적으로 진행하고 있지는 않은 것 같다.
 
6장은 다국적 응용 프로그래밍에 대해 고려할 때는 꼭 봐야 하는 장이다. 이 장을 통해서 리소스 번들의 개념을 익히면(뭐 개념이라고까지 할 것은 없고, 그냥 스킬이다.), 시의적절하게 UI에 보이는 메시지를 변경할 수 있을 것이다. 247p에 나오는 validateRegex 요소 같은 경우에 JSF에서 기본으로 제공을 안 해준다는 게 이상하다. ASP.NET에는 그 기능이 있었는데다가, 정규식을 쓰는 것이 코드를 만드는 것보다 훨씬 깔끔하고 간단하기 때문이다. 어쨌든 책의 저자가 이렇게 코드를 작성하셨으니 그저 고마울 따름이다.
 
254p에 나오듯이 변환기(converter)는 어떤 형태로 문자화 되어서 최종적으로 보여질 것인가를 결정한다. 후에도 나오지만, 조금 헷갈릴 수도 있으니 꼼꼼히 보고 지나가길 바란다.
 
※ 270p에 있는 내용은 잘 안되던데, 혹시 정상적인 화면 보신 분 계시다면, 방법 좀 알려주시면 감사하겠습니다.
 
이 정도로 JSF 자체에 대한 내용은 다 다루고 있다. 그 이후로는 ProjectTrack이라는 모의 프로젝트를 진행하게 되는데, css를 좀 다뤄보신 분들은 저자가 쓰는 css 스타일과 JSF 자체의 css가 맘에 안드실지도 모르겠다. css도 서버 뷰 그래프에 저장되는 요소 중의 하나이지만, 강하게 결합된다는 것은 치명타이다. 꼼꼼하게 하나씩 프로젝트 진행을 하고 있지만, 좀 지루하다.
 
그 뒤로 나오는 내용은 사용자가 직접 구현할 수 있는 인터페이스는 무엇이고, 어떻게 원하는 Component를 만들 것인가 하는 것등을 다뤄주고 있다. 본 독자가 생각하고 있는 Component가 다른 형태인지라, 몇 가지 내용은 이 것에서 배운 점이 있었지만, 원하는 것과는 상당히 동떨어져 있었다. 절반 정도의 아이디어는 차후에 본 독자가 다른 형태로 구현할 때 참고할 것이다.
 
오타가 몇 개 있는데 대략 이러 하다.
63p
redisplayCommand의 action 특성과 goodbyeCommand의 actionListener 특성도 모두 복원된다.
-> redisplayCommand의 actionListener 속성과 goodbyeCommand의 action 속성도 모두 복원된다.(26p 참고)
82p
param.address[2]
-> paramValues[address][2]
150p
grey
-> gray
161p
컴포넌트 태그 부분의 youre
-> youre
안에 괴상한 문자
-> "
170p
IInfo
-> Info
209p
tablindex
-> tabindex
260p
시각
-> 시간
263p
currency의 예제(한국)
-> 원(\)표시
388p
,project-input
-> project-input
454p
"lizard"
-> "lizards"
512p
저장
-> 정렬
517p
Proejct
-> Project
543p
설계의 예가 아니다
-> 구현의 예가 아니다
557p
표의 요약문(영어), 상세문(영어) 부분은 해석하면 안되는 부분이다.
572p
Non-Faces라고 표시 안됨
618p
saverSate
-> saveState
 
[점수]
통합성 : 70점 / 100점
독자 이해도 : 80점 / 100점
단어 선정 : 90점 / 100점
유용성 : 80점 / 100점

 
코멘트 0   공감 0
코멘트작성
 
이메일주소수집거부