저자: 전순재
이식가능한 코드, 이식가능한 데이터
책 표지 그림이 사자 두 마리로 장식된 것이 의미심장하다. 표지의 설명에 의하면 이 사자는 판테온이라고 한다. 초판에서는 귀여운 장난감 그림이었는데, 이제 정식으로 오라일리 책이 되었다는 뜻인가! 어쨌든 표지 그림이 장난감에서 판테온으로 바뀐만큼 XML 세계는 급변하고 팽창하고 있다. 초판의 목차를 보면 JAVA와 XML이 따로 떨어져 있는 느낌이었는데… 급변하는 시류를 반영하여 완전히 새로 꾸며진 이 책은 말 그대로 자바와 XML이 하나로 결합되어 있는 느낌이다. 저자는 포효하는 사자의 파워를 이식성으로 표현했다. 자바는 이식가능한 코드를, XML은 이식가능한 데이터를 대표한다. 두 마리 판테온의 결합으로 어느 플랫폼에서나 실행되는 프로그램과 작업틀을 얻을 수 있다는 뜻일 것이다.
자바는 플랫폼-독립적인 프로그래밍을 제공하고 XML은 플랫폼-독립적인 데이터의 교환을 보장한다. 이 책에서는 산업의 표준으로 군림하는 그 둘의 결합이 어우러진 기술들을 살펴 보고 실제 세계에 적용된 기술들을 보여준다. 자바로 XML을 포맷하고, 만들어내고 변환하는 것뿐만 아니라 실제적인 웹 기반 애플리케이션 구축까지도 시도하고 있다.
저자 브렛 맥래플린(Brett McLaughlin)은 JDOM 프로젝트의 공동저자일 뿐만 아니라, ApacheTurbine, 그리고 인히드라 제우스(Enhydra Zeus), 아파치 코쿤 프로젝트에 긴밀하게 관여하고 있는 실무 전문가로서, XML과 자바라는 오픈 소스 세계에서의 중심에 서 있는 사람이다.
책 속으로
대상독자층
이 책에서 언급하고 있는 기술들은 계속해서 변하고 있는 최첨단 기술들이다. 저자에 의하면 중급 자바 개발자는 되어야 내용을 제대로 이해할 수 있을 것이라고 한다. 초판에 있던 XML 개론격에 해당하는 장들을 한장으로 모으면서 다른 XML 기본서를 따로 한 권 더 보기를 권하고 있을 정도다. 그러니까 자바를 배우는 것도 아니고 XML을 배우는 것도 아닌 자바와 XML이 어우러진 기술을 배우는 것이 이 책의 목적이다. 자바와 XML이 결합하면 장점 이상의 장점을 가진다. 그리고 저자는 이 장점을 감동으로 전해 주겠다고 약속한다.
책의 구조
- XML 소개
- 1장: XML에 대해 기본적으로 알아야 할 것
- 2장: XML 기초
- 문서처리에 관련된 기술 - 저수준 API
- 3장: SAX
- 4장: Advanced SAX
- 5장: DOM
- 6장: Advanced DOM
- 7장: JDOM
- 8장: Advanced JDOM
- 9 장 JAXP
- 실세계에 접합된 기술 - 고수준 API
- 10 장: 웹 출판 프레임워크 코쿤 - 컨텐츠 변환기술 PDF 등등
- 11 장: XML-RPC, 서버와 클라이언트 작성법이 압권
- 12 장: SOAP, SOAP-RPC와 SOAP-메시지의 장단점 비교
- 13 장: 웹 서비스, UDDI WSDL 실전 작성
- 14 장: 컨텐츠 신디케이션, RSS 푸시기술
- 완전히 자바 개발자를 위한 장!
- 15 장: 데이터 바인딩, Castor, Zeus, JAXB
- 16 장: 미래 예측, Xlink, XPointer, XML 스키마 바인딩
- 부록
- SAX, DOM, JDOM, JAXP API 레퍼런스
초판에서 개론격으로 XML, DTD, XML 스키마, 그리고 XSL을 다루던 네 개의 장이 개정판에서는 한 장이 되었다. 모자라는 부분은 별도로 보충하여야 할 것이다. 저수준 API를 다루는 장(3-9 장 SAX, DOM, JDOM, JAXP)에서는 각 장마다 Gotcha! 절이 따르는데 이 절에는 실제 사용하면서 부딪히는 어려움과 꼭 알아야 할 팁 등이 정리되어 있다. 영어로 그냥 제목을 둔 것이 오히려 있는 그대로의 감동을 전하기에 더 나은 것 같다. 또 특기 할만한 것은 각각 고급 SAX, DOM, JDOM, JAXP가 할애 되어 있다는 것인데 이에 대하여 저자는 "잘 사용하지는 않지만 꼭 알아야 하는 기술로서 80/20 법칙을 따라 독자 중 80%는 사용하지 않을 기술이지만 전문가가 되려면 반드시 이해해야 하는 기술"이라고 말한다. JDOM에 주목할 필요가 있다. 이 기술은 저자 자신이 직접 구축한 기술로서 이를 사용하면 자바 개발자들은 엄격한 트리 모델을 걱정할 필요없이, 친숙한 테크닉과 사용 패턴을 활용하여 XML을 조작할 수 있다고 한다. 저자의 고백에 의하면 상당수의 작업을 JDOM으로 처리한다고 한다.
10 장에서 실세계에 접합된 기술의 집약체를 처음으로 맞이한다. 웹 출판 프레임워크로 코쿤을 다루고 있다. 11 장은 XML-RPC 서버와 클라이언트 작성법을 다루는데 묘하게도 XML이 후방에서 사용되고 전면에 드러나지 않는 것이 특이했다. 12장에서는 SOAP-RPC와 SOAP-메시지의 장단점 비교가 볼만하다. 13 장에서 웹 서비스를 실제로 작성하는데 어느 특정회사에 UDDI 등록을 맡기는 것도 마음에 안들고 WSDL이 지원되지 않으면 서비스 제공자와 직접 비용 협의를 해야 한다는 사실을 알았다. 그래서인지 마이크로소프트사의 마이 닷넷과 닮은 운명이 아닌가 하는 생각이 들었다. 14 장에서는 가상 공중 도서관을 매개로 펄로 운영되는 도서관과 mytechbooks.com과의 실전 애플리케이션 구축 예를 다룬다. 15장은 XML 문서로부터 자바 객체를 생성하고 자바 객체를 XML 문서로 바꾸는 기술인 데이터 바인딩으로 Castor, Zeus, JAXB를 다룬다. 마지막으로 XML의 미래를 피력하고 부록이 따른다. 부록의 분량도 한 장에 해당할 만큼 많다. 요긴하게 참조가 되리라 생각한다.
이상의 기술 중 특별히 자바에 종속된 기술을 지적하면 JDOM, JAXP, 데이터 바인딩 정도가 될 텐데, 이 부분이 모두 뒷 부분에 위치하고 있다는 점이 이채롭다. 그리고 집필 방식에서 추측해 보건대 아마도 이 기술들을 저자가 중요하게 생각하는 것 같다는 느낌이 든다.
저자의 생각
저자에 의하면 글로 설명하는 것보다 예제를 작성하여 실행하는 것이 기술을 더 빨리 이해할 수 있다고 한다. 그래서 코드의 기본 형태를 작성해 놓고 하나씩 보강되는 코드들은 진한 색으로 강조하면서 차례대로 채워가면서 실제로 작동하는 코드를 완성한다. 먼저 기본을 소개하고 점점 고급기술로 올라간다. 이론을 설명하고 실용적인 예제로 완성한다. 장점을 들어 코드를 만들고, 다시 그에 대한 단점을 논하고 다시 단점을 보강하는 기술을 소개하는 방식으로 전개된다. 그리하여 저자가 중요하다고 생각되는 장들은 뒷부분에 놓인다. 그렇지만 독자에게 선택을 강요하는 것은 아니다. 저자는 독자의 목적에 맞게 기술을 선택할 것을 권장하고 있다.
"XML이 가장 최신의 기술이고 가장 멋진 기술이라기 보다는 XML이 현재 상황을 해결하는데 가장 적합한 기술이란 것에 계속 초점을 맞춰, XML을 사용하도록 안내 할 것이다."
저자는 현실주의자이다. 이론보다는 실용을 중시하는 저자의 의도는 여러 군데서 발견할 수 있다. 9장에서 JDOM 표준문제를 언급하면서 표준화에 대한 논쟁보다는 유용성이 먼저이며, 용도에 따라 SAX, DOM 등 어떤 기술이라도 사용할 수 있다고 한다. 12장에서 SOAP보다 규격이 더 좋은 Axis를 소개하면서 이것을 선택하지 않은 이유는 아파치 SOAP가 독자가 당장이라도 사용할 수 있기 때문이라고 한다. 그래서 저자의 소프트웨어 선택은 톰캣과 아파치라는 오픈 소스에 집중된다.
감동을 현실로
모든 전자 상거래는 XML을 기반으로 데이터 교환을 하게 될 것이라고 저자는 확신한다. 그리고 나는 이 책이 최종적으로 의도하는 바가 바로 여기에 있다고 생각한다. 이론의 연구가 아닌 실용에 목적이 있고 그 실용에 적합한 기술들을 저자는 염두에 두고 있다. 그래서 단순히 이론으로 제시하는 코드에는 반드시 "작동하지 않음"이라고 주석을 달고 있으며 온전히 실제로 작동하는 코드를 완성하고서야 만족을 한다. 한 장이 끝나면 GOCHA!에서 빠지기 쉬운 함정을 가르쳐 주고, 새로운 도전 과제를 제시하고 실제적인 해결책들을 코드로 완성해 간다. 그렇게 각 장마다 완성되는 코드는 정말로 작동하는 코드이다. 이 책은 자바와 XML이라는 발군의 두 표준을 결합하여 온전히 사용한 모범이 되어준다. 저자는 그의 전문가로서의 경험을 독자에게 자세하고 친절하게 전해준다. 개인적으로 대단히 재미 있게 읽은 부분은 웹 출판 프레임워크인 코쿤이다.
"XML에서 동적으로 HTML을 생성하는 것, XML을 PDF 파일로 변환하여 보는 것 그리고 심지어 XML에서 VRML 문서를 생성하는 것 조차도 웹 브라우저에서 원하는 XML 파일에 대한 URL을 입력하는 것으로 간단히 처리할 수 있다. 코쿤은 사용자가 웹 브라우저에 입력한 URL을 사용해 이 모든 작업을 처리한다. 이것이 바로 XML의 힘이다"
웹 출판 프레임워크의 여러 목록을 저자는 급변하는 기술에 오히려 독자가 혼란스러울 수 있다는 이유로 의도적으로 생략하였다. 그리하여 저자의 군더더기 없는 깔끔한 내용, 버전별로 혹시 봉착하게될 에러에 대한 배려, 게다가 역자의 버전업 반영 박스 기사를 보면서 성실함을 느꼈다. 어떤 장은 번역의 느낌이 없이 원래 한글로 씌여진 듯이 자연스러웠고, 또 어떤 장은 번역체가 약간 껄끄러운 점도 있었지만 역자가 세 명인 것을 감안하면 전반적으로 생각보다 번역은 매끄러운 편이다. 용어 번역에 있어서는 과감히 한글로 용어를 전환한 것도 있고(봉투:envelope) 그냥 영어를 한글발음으로 쓴 것(디프리케이트:deprecate)도 있고 해서 초보자가 보면 상당히 혼란스러우리라 생각한다. 개인적으로 후자의 번역이 마음에 안들기는 하지만, 이 책이 자바 개발자를 목표로 하는 점을 생각하면 이해하는데 용어선정은 크게 문제가 되지 않을 것이다.
이 책은 재미보다는 유익함을 얻기 위한 책이다. 쉽게 읽어 나가기 힘들었다. 저자가 주려고 한 감동의 세계에 다가가려 노력했지만, 아직까지 한참이나 먼 고지인가 보다. 하지만 실망하지 않고 저자가 느낀 감동의 경지를 느껴보고자 다시 한 번 더 책을 들여다 볼 생각이다.