이 책에 수록된 두 인터프리터의 소스 코드를 여러분의 PC에서 실습하는 방법을 몇 가지 안내한다.
- 방법 1. 지은이의 깃헙 리포지터리에서 직접 git clone하여 자신이 즐겨 쓰는 IDE에서 자신이 선호하는 빌드 방법으로 환경을 구성한다.
- 방법 2. 방법 1이 조금 어렵다면, 옮긴이가 미리 장별로 예제 코드를 추출하여 재작성한 깃헙 리포지터리를 git clone하기 바란다.
- 방법 3. 초심자거나 스스로 개발 환경을 구성하기 어려운 윈도우 PC 사용자라면 부록으로 설명한 내용을 참고하기 바란다.
실습 환경 구성에 어려움을 겪는 독자들을 위해 미리 셋업이 완료된 개발 환경을 제공하였으나, 이 책의 주제가 인터프리터를 직접 만들어보는 것인 만큼 단순히 예제 코드를 실습해보는 것에 만족하지 말고, 자신이 추구하는 방향과 가장 잘 맞는 개발 환경을 스스로 구축하기 바란다. 개발 환경을 구축하는 과정에서 뜻하지 않은 오류 등 많은 난관에 부딪힐 수도 있지만, 그런 것을 해결하는 과정 역시 학습의 일부라는 사실을 잊지 말고 혼자서 적극적으로 해결하는 연습을 권장한다.
이 책은 2015년 6월 17일, 공식 표준으로 발표된 ECMS-262의 여섯 번째 버전, 즉 ECMAScript 6의 새로운 기능을 빠르게 습득하기 위한 입문서입니다. 아직까지는 IE, 파이어폭스, 크롬 등 메이저 브라우저에서 ECMAScript 6 명세를 완벽히 구현하지 못했고, 이전 버전(ECMAScript 5)의 코드로도 ES6의 신기능을 어느 정도 흉내 낼 수 있는 상황이지만 새 표준의 보급은 과거에 비해 훨씬 빠르게 이루어질 것으로 예상됩니다.
대부분의 모든 기술이 그렇듯 새 버전이 반드시 구 버전에 비해 월등하고 우수하다고 할 수는 없고 그것을 가져다 쓰는 사용자가 굳이 얼리 어댑터(early adopter)가 되어야 할 필요는 없겠지만, 자바스크립트가 전문인 프로그래머라면 ES6가 당연한 대세로 자리를 잡기 전에 미리 준비를 해두지 않으면 안 될 것입니다. 그런 점에서 책이 출간된 이 시점이 자바스크립트의 새 표준을 학습할 적당한 시기가 아닐까 싶습니다.
이 책은 주로 새 표준에서 등장한 새로운 구문 요소와 간단한 예제를 설명하지만, C나 자바, 파이썬 등 다른 언어 경험이 있는 분들에게는 프로그래밍 언어들이 점차 상향 평준화하고 있다는 동향과 자바스크립트만의 독특한 디자인 철학과 개념을 엿볼 수 있는 계기가 될 것입니다. 이 책을 움켜쥔 독자 여러분이 나무를 자세히 들여다 보면서도 숲 전체를 조망할 수 있는 식견과 높은 수준의 마인드를 가진 자바스크립트 개발자로 한 단계 성장하길 바랍니다.
자동화된 툴을 이용한 자바스크립트 코드 테스팅에 아직도 막연한 거부감을 가지고 계실 개발자분들이 적지 않을 것으로 생각합니다. 국내 웹 개발자 여러분들의 대부분의 업무 환경(적은 예산과 촉박한 일정, 그리고 잦은 요구 사항 변경)을 감안하면 테스팅을 위해 툴 사용법을 익히고 별도의 코드를 작성한다는 것이 딴 세상 소리처럼 들리는 것도 무리는 아닐 것입니다.
그러나 10여 년 전 켄트 벡(Kent Beck)이 TDD 개발 방법론을 주창한 이후, 선(先) 테스트 후(後) 개발 방식의 프로그래밍은 그 효과가 충분히 입증되었습니다. 물론, TDD가 모든 개발 프로젝트에서 적용 가능한 완벽한 솔루션이라고 할 수는 없겠지만, 비즈니스 로직을 구현하기 전에 테스트 코드를 먼저 작성함으로써 개발자 본인 스스로 목표를 분명히 정할 수 있고, '개발을 완료했다'라는 판단 기준을 객관적으로 제시할 수 있다는 점만으로도 충분히 매력적이라고 봅니다. 또 요건이 변경되어 코드를 수정해야 할 경우에도 번거롭고 많은 시간이 소요되는 테스팅 작업을 자동화하여 '기계가 나 대신 일을 해준다'는 뿌듯함을 느낄 수 있을 것입니다.
이 책은 재스민으로 자바스크립트 테스트 코드를 작성하는 방법뿐만 아니라 모던 자바스크립트 애플리케이션 개발에 필요한 노드JS, 백본JS, 리콰이어JS 등에 대해 다루고 있습니다. 이론적이고 교과서적인 설명이 아닌, 실제 현장에서 접할 수 있는 실전적인 예제 코드가 수록되어 있는 것도 또 다른 장점입니다. 여러분들이 이 책을 읽고 저자의 머리말 첫 문구처럼 '더 나은 자바스크립트 개발자'가 되는 것은 물론이고, 나이가 들어서도 학습의 끈을 놓지 않는, 꾸준히 성장하는 개발자가 되시기 바랍니다!
처음 이 책의 번역을 제의 받고 검토해봤을 때는 이미 너무나 잘 알려져 너무 흔한 주제가 아닌가 싶었는데, 일반적으로 자료 구조와 알고리즘 코드 관련 서적에서 많이 쓰는 C 언어가 아닌, '자바스크립트' 언어를 사용한다는 점이 신선하다고 생각했습니다. 물론, 프로그래밍의 기본 체력을 다지는 데 어떤 언어로 구사할지는 그리 중요하지 않을 수도 있지만, 많은 사람에게 비교적 친숙한 자바스크립트 언어를 써서 적어도 IT 초심자들이 쉽게 시작할 수 있게 배려한 점은 참 마음에 듭니다.
제가 현장에서 프로젝트를 수행하면서 늘 느끼는 것 하나는, 평소에는 별로 찾아볼 일이 없을 것 같은 자료 구조, 알고리즘 지식이 위기에 봉착했을 때 결정적인 한 방을 한다는 사실입니다. 알고리즘을 잘 구사할 줄 모르는 사람이 무턱대고 대충 실행 가능한 정도로만 작성해놓은 코드가 나중에 시스템 오픈 이후에 서버 성능 등에 어떤 식으로든 영향을 미치게 되어 결국 프로젝트의 성패가 좌우되는 경우를 목격한 분들도 적지 않을 것입니다.
그런데 최근 수년간 새로 IT 분야에 진출한 엔트리 레벨의 기술자들을 보면, DB나 MVC 프레임워크 등은 비교적 잘 알고 있으면서도, 기본적인 연결 리스트나 정렬 알고리즘 개념에서는 개념이 박약해서 고객의 요구사항에 맞게 효과적으로 서버 로직을 구사하지 못하는 경우가 많습니다. 사정이 이러한데도 아직도 많은 국내 기업이 IT 개발자를 채용할 때 각종 툴이나 프레임워크 위주의 경험 유무만을 따지려는 풍토가 사라지지 않고 있어 매우 안타깝게 생각합니다. 어쨌든 구글과 IBM 같은 글로벌 IT 기업에서 꿈을 펼치고 싶은 현직 개발자, 또는 예비 프로그래머라면 기술 면접 시 빠지지 않는 단골 메뉴인 자료 구조와 알고리즘에 더더욱 박식한 프로그래머가 되어야 할 테니, 이 책을 읽으면서 본인의 프로그래밍 구사 능력을 점검해보시고 끊임없이 절차탁마하시기 바랍니다.
최근 잇따른 개인 정보 유출 사고로 인해 사회적으로 보안에 대한 관심이 전례 없이 높아졌습니다. 이를 바꿔 말하면, 이제 더 이상 대기업이나 공공 기관의 애플리케이션 개발자들도 보안에 무지해서는 안 되고, 앞으로 보안을 고려하지 않은 프로그래밍은 있을 수 없다는 것입니다. 그렇지 않아도 빡빡한 개발 일정에, 업무 요구 사항은 수시로 바뀌고 고객은 시스템 성능 문제를 제기하는 마당에, 이제는 보안까지 신경 써야 하느냐고 볼멘소리를 하실 분도 계시겠지만, 개발자라는 직업을 가진 사람에게 그야말로 배움의 끝은 존재하지 않는 것 같습니다.
이 책은 실제 현장에서 리더급 프로그래머가 직접 코드를 보여주며 교육을 시키는 것처럼 친절하게 웹 서비스 보안에 관한 코드를 소개하고 있습니다. 특히, 이 책이 모태로 삼은 RESTEasy 프로젝트의 매뉴얼과 예제 코드를 내려받아 시간을 갖고 분석하다 보면 JAX-RS나 보안 이외에도 현장에서 바로 쓸 수 있는 다양한 지식과 기술을 습득하게 될 것입니다. 비록 이 책이 웹 서비스 보안에 대한 모든 내용을 다루지는 않지만, 독자 여러분으로 하여금 새로운 분야에 대한 관심을 갖게 해, 한 단계 업그레이드된 자바 개발자가 될 수 있게 도와주리라 믿습니다.
다른 IT 분야도 마찬가지겠지만, 웹 개발자는 알고 있어야 할 것들이 매우 많습니다. 그러나 역시 가장 중요한 것은 기본이고, 기본기만 탄탄하다면 어떤 새로운 기술이 등장하더라도 이를 소화해내는 데 무리가 없을 것입니다.
이 책은 그런 점에서 웹 개발자로서 반드시 알아야 할 HTTP의 기본에서 출발해 비교적 최근에 등장한 기술에 이르기까지 알찬 내용들이 빼곡히 담겨 있습니다. 분량상 모든 주제를 세세히 다루지는 않지만, 독자 여러분들이 이 책을 읽고 난 다음에 학습해야 할 방향을 잡는 데 제격이고, 현장 경험이 풍부한 고급 개발자들도 한 번쯤 되새겨 볼 만한 내용이 많습니다.
RESTful, 즉 'REST답게 웹을 개발하자'는 말이 사실 웹이 작동하는 토대인 HTTP 프로토콜의 기본에 충실하자는 것이고, 새로운 기술을 추가하거나 덧붙이는 행위가 아닌, 오히려 웹이 탄생할 당시의 의도를 되살려보자는 의미라고 생각합니다.
REST라는 말을 처음 쓴 로이 필딩(Roy Fielding) 박사가 1999년 발표된 HTTP 1.1 프로토콜에 관한 명세서, RFC 2616의 주요 필자 중 한 사람임을 상기하면 그리 놀랄 만한 일도 아닙니다. 여러분이 아직까지 HTTP 명세에 GET, POST 말고도 다른 메소드가 있다는 말을 들어본 적도, 사용해본 적도 없는 개발자라면 이 책은 웹에 관한 전혀 새로운 지평을 열어줄 것이라 확신합니다.