2011년 3월 28일 월요일

JSF장단점

JSF 정리 News and Tip.

2007/08/14 18:42

복사 http://blog.naver.com/snow2821/30021016979

JSF ( Java Server Face )

- 목적

쉽고 빠른 웹 애플리케이션 개발.

개발자가 HTTP 요청이나 응답, 마크업등에 신경을 쓰는 대신, 컴포넌트, 이벤트 기반 빈, 그리고 그것들

간의 상호작용이라는 관점에서 더 생각할 수 있도록 해준다.

- 동작

JSF는 사용자의 입력값을 수집하고 이벤트에 응답하는 자바 객체, 즉 기반 빈(backing Bean) 과

UI 컴포넌트를 자동으로 동기화 시켜준다. 또한 강력한 네비게이션 시스템과 완벽한 다국어 지원을 보장

JSF는 클라이언트가 아닌 서버에서 실행된다.

JSF는 아파치 톰캣, 오라클 애플리케이션 서버, IBM 웹스피어 애플리케이션 서버와 같은 표준 자바

웹 컨테이너에서 실행되며, HTML이나 그 밖의 마크업 언어로 된 내용을 클라이언트에게 전달한다.

스윙 애플리케이션과 같이 행동에 대한 이벤트가 발생하고 데스크탑 애플리케이션 코드에서 직접적으로

이를 처리할 수 있을 것이다.

반면에 클라이언트( 웹브라우저 )는 어떠한 JSF 컴포넌트나 이벤트도 알지 못한다.

클라이언트는 단지 HTML을 보여주는 기능만 수행한다.

용어

설명

UI 컴포넌트 (컨트롤)

서버에서 관리되는, 상태를 유지하는 객체로서 최종 사용자와의 상호작용을 위한

기능을 제공한다. UI 컴포넌트는 속성(property), 메소드, 이벤트를 가지는

자바빈(JavaBean)이다. 이 컴포넌트들은 페이지에서 보여지는 컴포넌트들의

트리 구조로서 하나의 뷰(View)를 구성한다. (HTML, XML 등의 마크업언어 일 듯.)

렌더러(Renderer)

UI 컴포넌트를 화면에 보여주며, 사용자의 입력을 컴포넌트의 값으로 번역하는 책임을 진다. 렌더러는 하나 이상의 컴포넌트와 함께 작동하도록 설계될 수 있고, 하나의 렌더러는 다른 렌더러와 연결될 수 있다.

검증기(Validator)

사용자가 입력한 값이 유효한지를 확인하는 책임을 진다. 하나이상의 검증기 사용가능

기반 빈(Baking bean)

UI 컴포넌트들의 값을 수집하고 이벤트 리스너 메소드를 구현하는 특별한 자바빈이다. 또한 UI 컴포넌트에 대한 참조를 가지고 있을 수 있다.

변환기(converter)

컴포넌트의 값과 화면에 보여주기 위한 문자열 간의 변환을 담당한다. 하나의 UI컴포넌트에 하나의 변환기를 사용할 수 있다.

이벤트 및 리스너

JSF는 스윙과 마찬가지로 자바빈의 이벤트/리스너 모델을 사용한다. UI 컴포넌트나 그 밖의 객체에서 이벤트들을 발생시키며, 등록되어 있는 리스너에서 그 이벤트들을 처리한다.

메시지

사용자에게 보여줄 정보이다. 애플리케이션의 어떤 요소든지(기반 빈, 검증기, 변환기등) 사용자에게 보여줄 정보나 에러 메시지를 만들수 있다.

네비게이션(Navigation)

어떤 페이지에서 다른 페이지로 이동하는 기능을 말한다. JSF 는 특정 이벤트 리스너와 연결될 수 있는 강력한 네비게이션 시스템을 갖고 있다.

JSF 흐름도.

1 . JSF 애플리케이션의 버튼을 클릭하면, 웹 브라우저의 요청이 서버로 전송된다.

2. JSF는 이 요청을 이벤트로 변환하여 서버측에 있는 애플리케이션 로직에서 처리될 수 있도록 하며,

또한 개발자가 정의한 서버측의 모든 UI 위젯이 브라우저에서 올바르게 표현될 수 있도록 한다.

JSF Class 구성

JSF 요약

JSF 장점

  • JSF “J2EE 애플리케이션에 사용되는 서버사이드 사용자 인터페이스 컴포넌트 프레임워크 정의
  • JSF 기존의 HTML 컴포넌트화하고, 클라이언트의 상태를 서버에서 관리하며, 브라우저에서 발생한 이벤트를 서버가 제어할 있도록 하여 스윙 스타일의 객체지향 애플리케이션 개발이 가능
  • 재사용성 가능한 UI 컴포넌트로 UI 작성의 편리성
  • UI 애플리케이션 데이터간의 데이터 변환이 용이함
  • server request 통해 UI 상태를 서버에서 관리
  • 클라이언트가 발생시킨 이벤트를 서버 애플리케이션 코드가 관리하는 모델 제공
  • Custom UI 컴포넌트 개발의 용이성

JSF 단점

  • 최신 기술로서 Reference site 부재
  • JSF 사용하기 위해 많은 라이브러리 참조, 라이브러리 개발 환경의 버젼 복잡
  • JSF 구현된 jsp 페이지의 컴파일이 느리며 tag managed bean 사용 에러 발생에 대한 디버깅 어려움
  • 특정 프로젝트의 UI Custom tag, script 추가 개발 필요
  • 좀더 강력한 UI Design tools 필요(상용 tools)
  • UI Layer JSF에서 Business layer framework 연동 고려
  • JSF navigation rule managed bean 설명을 위한 산출물 필요