이 글을 쓰고 있는 지금, 저는 2004년 JavaOne 컨퍼런스에서의 발표를 위해 업계에서 주도적인 사용자 인터페이스(UI) 컴포넌트 벤더들과 함께 작업하고 있는 중입니다. 우리의 발표에서 각각의 벤더들은 자사의 제품에서 어떻게 JavaServer Faces(JSF)를 이용해 이득을 볼 수 있는지를 보여줄 것입니다. 저는 이 발표를 준비하면서 지난 3년간 우리가 JSF에 했던 일들과 관련한 몇 가지를 알게 됐습니다. 벤더들은 자사의 제품에JSF를 적용시키기 위한 각자 나름대로의 방안을 갖고 있습니다. 그러나 그들 모두는 단호하고 명확하게도 한 목소리를 내고 있습니다. 그들은 웹 기반의 사용자 인터페이스를 위한 하나의 표준을 갖게 된다는 것에 안심한다는 사실입니다.
웹 기반의UI를 위한 표준이 존재하지 않음으로 인해, 컴포넌트 벤더들은 플러그인하고자 하는 모든 통합 개발 환경(IDE)에 대해 각각의 특별한 코드를 작성해야 했습니다. 그러나 이제는JSF라는 표준이 있으므로 모든 IDE는 그 표준을 준수하게 됐으며, 또한 표준을 따르는 모든 벤더들은 좀더 적은 노력으로 그들의 컴포넌트를 IDE에 플러그인할 수 있게 됐습니다. 물론 이 말은 여러분이 개발하는 모든 컴포넌트 역시 추가적인 작업 없이도 툴에 플러그인할 수 있다는 의미입니다.
JSF 표준 규약은 웹 UI 개발 분야에 있어서 주도적인 역할을 하는 공동체에 의해 개발된 것입니다. 우리는 UI 프레임워크에 대한 여러 접근방법들의 좋은 아이디어들만을 취했으며, 그것들을 응집된 한 덩어리로 만들었습니다. 표준에 있어서의 문제점은, 그 표준이 제시하는 방법대로 어떤 문제를 해결하는 것이 다소 복잡할 수 있다는 점입니다. JSF의 경우는 UI와 전혀 어울리지 않는 기술들의 집합 위에 구축되는, 사용하기 쉬운 UI 프레임워크를 제공합니다. 이는 표준 규약을 구현하기가 더욱 복잡해지도록 만듭니다. 다행히도 실제로 표준 규약을 구현하는 사람들은 상대적으로 그 구현체를 사용하는 사람들보다 그 수가 적습니다. 그러나 표준 규약을 자세히 알고 있으면 구현체를 사용하는데 있어서도 분명히 도움이 됩니다.
이 책의 저자인 키토(Kito)는 JSF의 다음 버전을 개발하는 전문가 그룹의 일원으로서, 기술 표준에 대해 잘 알고 있는 사람입니다. 키토는 JSF의 핵심 부가가치를 파악하고, 그것을 접근하기 쉽고 이해하기 쉽게 이 책에서 설명하고 있습니다. 여러분은 최고의 컴포넌트 모델, JSF의 잘 정의된 상태 관리 시스템, 그리고 자바빈(JavaBeans)과의 개념적 유사성을 포함하여, JSF가 갖는 다른 웹 UI 프레임워크와의 차별성을 알게 될 것입니다. 키토는 표준 규약에서 사용하고 있는 추상성(abstraction)에 대해 친숙합니다. 또한 더 중요한 점은 왜 우리가 그런 추상성을 사용해야 하는지를 그가 잘 이해하고 있다는 사실입니다. 표준 규약의 존재 이유를 이해함으로써 여러분은 보다 고차원적인 해석을 얻을 수 있게 됩니다. 예를 들어 2장의 ‘개념 연관도’를 보시기 바랍니다. 이는 JSF의 설계에 대한 이론적 설명을 이해할 수 있는 훌륭한 방법입니다.
키토는 또한 이 기술이 시장에 어떻게 부합하는지를 잘 알고 있습니다. 이 말은 여러분이 가장 중요한 정보를 먼저 얻을 수 있다는 의미이며, 따라서 여러분의 임무를 신속하고 완전하게 수행하는 데 도움이 될 것입니다. 키토는 JSF의 기저에 있는 기술의 굳건한 기초를 빌드하는 데 충분한 시간을 들였으며, 따라서 JSF 개발을 처음부터 시작할 수 있도록 이 책을 만들었습니다.
마지막으로 이 책은 최상급의 소프트웨어 기술 서적에서 기대할 수 있는 모든 것들을 갖췄습니다. JSF를 이해하는데 필요한 전체 틀을 제시하는 목차, 시간을 절약시켜주는 각 장별 목표와 요약, 그리고 여러분의 프로젝트에서 실제로 사용할 수 있는 예제들까지 말입니다. 다른 책에서는 볼 수 없었던 하나는 JSF를 현재 지원하고 있는 IDE에 대한 깊이 있는 관찰입니다. 이는 특히 가치가 있는 것인데, 왜냐하면 여러분이 일단 툴이 지원하는 기반 기술을 이해하기만 한다면 그 툴을 사용하여 여러분의 시간을 절약할 수 있기 때문입니다.
IDE에 대한 깊이 있는 정보 이외에도, 키토는 JSFCentral.com의 운영자로서의 그의 경험을 책 전체를 통해 제공하고 있습니다. JSFCentral 사이트는 다수의 글과 인터뷰, 그리고 업계 및 공동체가 JSF와 관련하여 제공하는 사항들의 상태를 나타내는 가장 최신의 그림이 포함된 높은 품질의 집합체입니다. 키토는 컴포넌트, 렌더 키트, 구현체 등을 다루는 부분들을 분리해서 설명하고 있습니다. 저는 여러분이 JSF 프로그래밍을 공부하는 데 있어서JSFCentral 사이트와 이 책의 더없는 가치를 발견할 수 있으리라고 생각합니다.
- 에드 번스(Ed Burns) JSF 표준 규약 리드
J2EE 기반의 웹 시스템을 구축하는 대부분의 경우, 특히 C/S 환경에서 J2EE 환경으로 기간계 애플리케이션을 재구축하는 프로젝트의 경우, 항상 아키텍트와 개발자를 고민하게 만드는 것 중에 빼놓을 수 없는 것이 바로 UI 구현 방법의 문제일 것입니다. 중소 규모의 프로젝트에서는 개발자의 막노동을 전제로 하는 자바스크립트와 ActiveX의 남발을, 중급 규모 이상의 프로젝트에서는 표준적인 접근방법은 아예 포기한 채 써드파티 UI 솔루션이나 리포팅 툴(또는 둘 모두)을 도입하는 사례를 많이 봐왔습니다. 전자의 문제점은 UI 구현에 너무 많은 수작업이 동원됨으로써 개발 생산성과 애플리케이션 품질을 현저히 떨어뜨린다는 점이며, 후자의 문제점은 특정 벤더의 제품 및 또 하나의 특정 스크립트 언어에 완전히 의존함으로써 팀의 기술력 향상이나 유지보수성 및 확장성에 도움이 되지 않는다는 점입니다.
J2EE 안에서 근본적으로 다른 두 기술(웹과 자바)이 공존하는 이상, 이 문제를 완벽하게 해결하기란 불가능할 것입니다. 그러나 JSF(JavaServer Faces)는 그 둘 사이의 관계를 훌륭한 컴포넌트 모델로서 엮어주었습니다. 이로써 개발자는 HTML 요소를 완전한 자바 컴포넌트로서 다룰 수 있게 됐으며, 어떤 써드파티 구현체나 컴포넌트를 사용하든 표준적인 방법으로 UI를 구성할 수 있게 됐습니다.
Java EE 5에는 JSF 1.2가 컴포넌트 모델 기술로서 정식으로 포함됩니다. 비록 아직 Java EE 5가 완료(final release)되지는 않았지만, IBM Rational Application Developer나 Oracle JDeveloper 등과 같은 J2EE 통합개발환경들은 이미 JSF를 지원하고 있습니다. 여러분은 이런 개발도구가 제공하는 구현체와 함께 JSF 애플리케이션을 개발할 수도 있으며, 또는Apache MyFaces나Sun의 RI 등의 구현체를 사용하여 J2EE 1.4 환경에서 JSF를 사용할 수 있습니다. 개발도구를 사용하지 않는다고 하더라도 JSF는 Struts처럼 쉽게 사용할 수 있습니다. JSF는 UI 컴포넌트 모델이자 동시에 MVC 아키텍처를 지원하는 웹 애플리케이션 프레임워크이기 때문입니다.
JSF 1.2 표준규약 제정에 직접 참여하고 있는 저자의 이 책은 JSF의 거의 모든 것을 다루고 있다고 해도 과언이 아닙니다. 특히 이 책은 개발도구 없이 JSF를 사용하여 개발하는 것을 기준으로 설명하기 때문에, 개발도구가 없이는 JSF를 다루기 힘들다라는 흔한 오해를 불식시켜 줄 것입니다. 이 책을 집어 든, 한 발 앞서가는 여러분의 기술력에 큰 보탬이 되기를 바랍니다.
이태상
--- 역자 서문