구글에서 'web 2.0'을 검색해보니 7,750만 건의 웹 페이지가 나옵니다. 작년부터 웹 2.0이란 단어가 인터넷 서비스 업계를 휩쓸고 있습니다. 엔씨소프트는 웹 2.0 검색 서비스를 통해서 포탈 시장 진출을 선언하고, 한국썬은 하드디스크를 판매하면서 웹 2.0에 최적화된 제품이라고 홍보합니다.
그러나 불행히도 웹 2.0은 없습니다. 웹 1.0이 없는 데 웹 2.0이 있을 리 만무합니다. 많은 사람이 닷컴 붕괴 후에도 살아남고 발전하는 기업들의 특징을 모아 놓고 웹 2.0이라고 부르고 있지만, 성공한 기업들의 특성을 따라서 웹 서비스를 만든다고 성공이 보장되는 것은 아닙니다.
사실 90년대 후반부터 월드 와이드 웹(World Wide Web, WWW)이라는 하나의 네트워크는 느리지만 크게 변화하고 있습니다. 그 변화의 중심에는 웹 2.0이 아니라 XML이 있습니다. HTML은 모양과 내용이 뒤섞여 자동화된 처리가 불가능하지만, XML은 모양에서 내용을 별도로 분리하여 컴퓨터로 읽고 이해할 수 있습니다. 월드 와이드 웹 컨소시엄(W3C)에서는 XML에 기반을 둔 인공지능형 웹 서비스를 '시맨틱 웹(Semantic Web)'이라고 부릅니다.
이 책은 웹 2.0, 시맨틱 웹의 핵심 기술로 널리 알려진 AJAX 프로그램에 관한 책입니다. AJAX는 자바스크립트로 XML 데이터를 서버에서 가져와서 사용하는 기술입니다. HTTP로 XML을 가져온다고 해서 XMLHTTP라고 부르기도 합니다.
AJAX로 서버에서 가져온 XML 문서를 화면에 표시하기 위해서는 자바스크립트로 HTML 문서와 CSS 문서를 문서 개체 모델(Document Object Model, DOM)로 접근하여 수정해야 합니다. 따라서, AJAX를 사용하려면 자바스크립트, XML, HTML, CSS, 문서 개체 모델에 대해서 알고 있어야 합니다. 책을 쓰면서 자바스크립트, HTML, CSS에 대한 기본 지식은 있지만 XML에 익숙하지 않은 대다수 자바스크립트 프로그래머를 고려하여 XML에 대해서 최대한 자세히 설명하도록 노력했습니다.
이 책은 자바스크립트로 XML을 다루는 아주 자세한 내용을 담고 있습니다. 대부분의 AJAX 책은 AJAX 개체로 서버의 XML 문서를 XML 개체로 생성한 다음 그 XML 개체를 문서 개체 모델로 접근하는 방법만 나와있습니다.
그러나 이 책에서는 자바스크립트로 XML 개체를 생성하는 방법, XML 개체를 XSLT로 변환하여 화면에 반영하는 방법, XML 개체를 XPath로 검색하는 방법 등 자바스크립트로 XML을 다루는 방법이 아주 자세히 나와 있습니다.
특히 네임스페이스를 사용한 XML 문서의 경우 인터넷 익스플로러와 모질라 웹 브라우저에서 지원하는 XML 문서 개체 모델이 달라서 실제 프로젝트에서 큰 어려움이 있습니다. 이 책에는 인터넷 익스플로러와 모질라 웹브라우저를 모두 지원하는 AJAX 프로그램 개발이 가능하도록 웹 브라우저에 따른 XML 문서 개체 모델의 차이점과 해결책이 자세히 나와 있습니다.
최근에 조엘 온 소프트웨어라는 책을 읽다가 '스크립트 키드'라는 말을 보고 우울했습니다. 리치 웹 클라이언트 개발 도구로 각광받는 플래시 액션스크립트도 자바스크립트이며, 웹2.0, 시맨틱 웹 개발도구로 각광받고 있는 AJAX도 자바스크립트에 기반을 두는 등 자바스크립트는 가장 대표적인 웹 클라이언트 개발 언어로 성장하고 있으나, 프로그래밍을 전문적으로 배우지 못한 많은 자바스크립트 프로그래머들이 스크립트 키드라는 이름으로 푸대접을 받고 있는 것은 아닌가 하는 생각이 들었기 때문입니다.
이 책을 쓰면서 자바스크립트가 단순한 스크립트 언어가 아니라는 것을 보여주기 위해서 많은 노력을 기울였습니다. 개체 생성 함수를 사용하면 자바스크립트로도 효율적이며 재사용이 가능한 프로그래밍이 가능합니다. 이 책에서는 재사용 가능한 클래스 형태로 효율적으로 애플리케이션을 설계하고 구현하는 방법이 아주 자세히 나와 있습니다.
이를 기반으로 웹 브라우저의 내장 XML 개체와 AJAX 개체를 감싸는 개체 생성 함수를 클래스 형태로 만들어서 실제와 유사한 AJAX 프로젝트에서 사용해 볼 수 있습니다. 또한 공개 소프트웨어로 이 책에서 제공하는 AJAX 라이브러리(ozlib.js)를 사용한다면 인터넷 익스플로러와 모질라 웹 브라우저를 지원하는 AJAX 프로그램을 효율적으로 만들 수 있습니다.
이 책으로 많은 자바스크립트 개발자가 빠른 속도로 변해가는 월드 와이드 웹 기술에 적응하고, 개체에 기반한 애플리케이션 설계와 구현 방법을 익혀, 스크립트 키드라는 오명을 벗고 차세대 월드 와이드 웹 서비스의 핵심 개발자로 인정받는 데 도움이 되면 좋겠습니다.
많은 기업들과 사람들은 본질적인 변화를 보지 못하고 하나의 유행으로 '웹 2.0'을 다룹니다. 그러나 본질은 무시한 채 다른 사람의 성공 전략을 따라가는 방법으로는 결코 성공할 수는 없습니다. 사용자들이 원하는 서비스를, 사용자들에게 편리하게 제공하는 것이 웹 서비스 성공 전략의 기본입니다. 이 책으로 사용자 중심의 편리한 웹 클라이언트 개발이 쉬워졌으면 합니다.
변화는 사람들이 예상한 것보다 느리게, 그러나 급격하게 다가옵니다. 인터넷 붐이 사라진 지금 오히려 사람들의 삶은 인터넷과 더욱 긴밀하게 결합하여 인터넷 없는 일상적인 생활은 불가능할 정도입니다.
이렇게 사람이 바뀌어야 하는 변화는 느리지만 한 순간 이루어집니다. 우편은 전자우편과 메신저로 완전히 대체되었으며, 모니터에 익숙해진 사람들이 늘면서 A4 용지의 사용량이 줄고 있습니다. 인터넷과 월드 와이드 웹, 그리고 모니터에 익숙한 지금의 10대, 20대가 사회의 중심이 되는 10여 년 후에는 인터넷과 월드 와이드 웹 서비스의 모습은 크게 변해있을 겁니다. 느리지만 급격하게 사람들의 삶이 크게 변하고 있습니다.
성공하기 위해서는 현실에 안주하고 보다 능동적으로 미래의 변화를 예상하고 움직여야 합니다. 이 책이 변화를 이끌고 변화를 미리 반영하는 웹 서비스 개발에 도움이 되기를 바랍니다.
언제나 그렇듯 책을 쓰는 것은 원래 예상보다 오래 걸리는 작업입니다. 특히 이번 책은 인터넷 익스플로러와 모질라 웹 브라우저의 AJAX, XML 사용법을 자세히 분석하고 효율적인 방법을 찾느라 처음 예상보다 훨씬 많은 시간을 투자했습니다. 원고가 늦어지는 데도 원고를 독촉하기보다 원고를 자세히 읽고 실무 활용 예제를 더 늘려달라고 주문하는 등 보다 충실한 책이 될 수 있도록 애써주신 프리렉 출판사 관계자 분께 감사 드립니다.
그리고 AJAX를 처음 소개해주고 AJAX 관련 실무 프로젝트를 할 수 있도록 도와준 완철 선배와 책을 쓰는 내내 곁에서 틈틈이 원고를 읽고 의사결정에 도움을 준 아내에게 고마움을 전합니다.
이혁 (turnleft21@gmail.com)
--- 저자 서문