프로그래밍/JSF & Oracle ADF Faces

JSF (Java Server Faces)에 대한 소개

Terry Cho 2009. 7. 23. 11:21
자바 기반의 웹 프로그래밍 모델은 
1세대에 Servlet을 기반으로 하다가 
2세대에 JSP와 같은 스크립트 랭귀지를 사용하면서 편의성이 증가되고
3세대에 Struts나 WebWork와 같은 MVC 프레임웍을 도입하면서 생산성과 프로그램의 구조를 끌어올리는 역할을 하였습니다.

4세대(?)로 불릴 수 있는 것이 JSF (Java Server Faces)와 같은 모델입니다. 이 모델에서는 특히 View 부분의 태그라이브러리가 강화 되어 AJAX 기반의 Rich UI Component를 사용할 수 있게 되었습니다. 예를 들어 아래와 같은 애플리케이션을 태그 라이브러리를 통해서 구현이 가능하다는 것이지요.
(예제 오라클 JSF Implementation인 ADF UI의 샘플)

JSF는 MVC모델의 발전형(?)으로 여러가지 장점을 가지고 있습니다.HTML태그보다 JSF 태그를 사용하여 버튼이나 LIST 박스등을 재정의 하였고, 이로 인해서 위의 그림과 같이 상당히 고급 수준의 이쁜 컴포넌트를 사용할 수 있게 되었고, 이런 컴포넌트는 클라이언트 플랫폼(웹브라우져,WAP,IPHONE)에 따라서 자동으로 최적화 되도록 디자인 되었습니다.

JSF의 개념을 생각해보면 MVC 프레임웍과 같이 웹프로그래밍 로직을 다루어주는 Model Controller의 개념에 해당하는 부분이 있습니다. 이부분은 주로 페이지간의 흐름과 비지니스 로직등을 표현합니다. 큰개념상으로는 Struts들과 다를 것이 없습니다.

앞단에는 앞서 설명한것과 같은 태그 라이브러리들을 제공합니다.
JSF는 JEE5 스펙에 포함되어 있습니다. 스펙인 만큼 그 구현방법이 벤더마다 다른데요.
위에서 설명한 Model,Controller에 해당하는 부분은 대부분 유사합니다. 차이점은 앞의 태그 라이브러리들이 얼마나 많고 그 사용법이 틀리냐 하는 차이입니다. 물론 라이브러리에 따라서 배포 방법도 차이가 납니다. 아마 다들 이런 JSF 환경 설정에서 헤매고 있는 것 같습니다.

대표적인 JSF Implementation으로는 Sun의 GlassFish에 포함되어 있는 Reference Implementation이 있습니다. RI이기 때문에 기능 자체는 강력하지 않구요.
Apache의 Myfaces가 널리 사용됩니다. http://myfaces.apache.org/
그리고 Oracle의 ADF (Application Development Framework)중에서 ADF Faces라는 부분이 JSF를 지원합니다. 아무래도 벤더에서 만든 만큼 그 컴포넌트 수와 UI의 완성도는 더 높네요. http://www.oracle.com/technology/products/adf/adffaces/index.html 무료이고. 제가 테스트해본 결과. Eclipse에서 JSF 로 개발하는데 문제가 없고. Tomcat에서도 사용할 수 있습니다.

JSF의 장점중의 하나는 UI 설계를 할때 HTML 날코딩이 아니라 비주얼 베이직 처럼 컴포넌트를 드래그앤 드롭해서 디자인 할 수 있습니다. 레이아웃들이 잘 정의되어 있어서 제법 쓸만하더군요. 그런데 문제는 이클립스에서는 아직 지원이 안되고 벤더 제공 툴에서만 제공이 됩니다. Oracle의 JDeveloper나 IBM의 Rational Application Developer, Sun의 NetBeans 정도겠네요. 팁이라면 팁이지만, UI 디자인만 벤더 IDE를 사용하고, 생성된 파일을 이클립스에서 끌어다가 사용하는 것도 하나의 방법이 되겠네요.