블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


자바 기반의 웹 프로그래밍 모델은 
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를 사용하고, 생성된 파일을 이클립스에서 끌어다가 사용하는 것도 하나의 방법이 되겠네요.

본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요

  1. 나그네 2013.04.18 10:51  댓글주소  수정/삭제  댓글쓰기

    신기하긴하더군요. Sun에서 나온 GlassFish에 포함되어있는 JSF의 이름은 Mojara 입니다. 기본 기능 만 제공하기 때문에 UI는 이쁘지 않고 기본 틀만 나오죠..(마치 HTML을 날코딩한듯한)

    JSF 같은 모델이 4세대라면 ASP.NET(MS 진영)은 잠시 역행한건가요?
    1,2 세대(ASP) -> 4세대(ASP.NET 웹폼) -> 3세대(ASP.NET MVC) 이런 구조니까요.. MS 진영에선 웹폼이란것이 자바의 JSF 같은 기능을 하죠..(좀 다르게 애내는 상단에 기본 포맷을 상속한 클래스를 임포트?(코드 비하인드) 하거나 DHTML 방식(한 페에지 모델)으로 구성되 어있죠..)

    그리고 AJax 기반은 아니죠..단지 AJax 삘이 날뿐
    그리고 이클립스는 개발 편의성을 제공하는 무료 툴이기때문에 MS의 비주얼 스튜디오 같은 드래그엔 드랍 방식은 지원하진 않죠(하지만 비주얼 스튜디오도 초창기에는 드래그 드랍을 메인방식으로 가다가 직접 코딩하는 방식을 메인으로 했드라고요.., 그리고 개중에 MS 진영의 것을 자바처럼 사용할 수있는 것과 툴(이클립스 스탈)도 있습니다. mono와 monodevelop란것으로요..)