CHAPTER 1 변화는 변화를 낳는다
1.1 웹 사용자
1.2 웹 테크놀로지
1.3 소프트웨어 개발
1.4 불변의 본질
1.4.1 웹의 본질
1.4.2 서버 중심 웹 개발의 해로움
1.5 왜 클라이언트-서버 웹 앱인가?
1.5.1 코드 조직화/소프트웨어 아키텍처
1.5.2 디자인 유연성/오픈 소스 API 활용
1.5.3 프로토타입 제작
1.5.4 개발자 생산성
1.5.5 앱 성능
1.6 마치며
CHAPTER 2 자바스크립트와 개발 도구
2.1 자바스크립트 배우기
2.2 자바스크립트의 역사
2.3 함수형 언어
2.3.1 스코프
2.3.2 일급 함수
2.3.3 함수 선언과 함수식
2.3.4 함수 호출
2.3.5 함수 매개변수
2.3.6 객체
2.4 자바 개발자를 위한 자바스크립트
2.4.1 HelloWorld.java
2.4.2 HelloWorld.java(변수 사용)
2.5 프로그램 개발의 모범 사례
2.5.1 코딩 스타일과 규약
2.5.2 개발 브라우저
2.5.3 통합 개발 환경
2.5.4 단위 테스트
2.5.5 문서화
2.6 프로젝트 실습
CHAPTER 3 REST와 JSON
3.1 REST란 무엇인가?
3.1.1 자원
3.1.2 동사(HTTP 요청 메서드)
3.1.3 URI
3.2 REST 제약사항
3.2.1 클라이언트-서버
3.2.2 스테이트리스
3.2.3 캐시에 저장
3.2.4 일관된 인터페이스
3.2.5 계층적 설계
3.2.6 주문형 코드
3.3 HTTP 응답 코드
3.3.1 성공적인 수행이란?
3.4 JSON(자바스크립트 객체 표기법)
3.5 HATEOAS
3.5.1 REST와 JSON
3.6 API 시험법과 분류
3.7 함수형 프로그래밍과 REST
3.8 프로젝트 실습
3.9 그 외의 웹 API 도구
3.10 다시 제약사항 이야기
CHAPTER 4 자바 도구
4.1 자바 언어
4.2 자바 가상 머신(JVM)
4.3 자바 도구
4.4 빌드 도구
4.4.1 메이븐의 장점
4.4.2 메이븐의 기능
4.4.3 버전 관리
4.4.4 단위 테스트
4.5 JSON 자바 라이브러리
4.6 프로젝트 실습
4.6.1 자바와 JSON
4.6.2 JVM 스크립트 언어와 JSON
4.7 마치며
CHAPTER 5 클라이언트 프레임워크
5.1 개괄
5.2 출발점 1: 반응형 웹 디자인
5.2.1 HTML5 보일러플레이트
5.2.2 부트스트랩
5.3 출발점 2 : 자바스크립트 라이브러리와 프레임워크
5.3.1 브라우저 호환성
5.3.2 프레임워크
5.3.3 기능
5.3.4 인기도
5.4 스타터 프로젝트 얻기
5.4.1 저장소에서 직접 다운로드
5.4.2 스타터 사이트에서 다운로드
5.4.3 IDE로 생성하는 스타터 프로젝트
5.5 프론트엔드 엔지니어의 등장
5.5.1 클라이언트 템플릿
5.5.2 애셋 파이프라인
5.5.3 개발 워크플로
5.6 프로젝트 실습
5.7 마치며
CHAPTER 6 자바 웹 API 서버
6.1 더 간단한 서버 솔루션
6.2 자바 기반의 서버들
6.2.1 자바 HTTP 서버
6.2.2 내장형 제티 서버
6.2.3 레스트릿
6.2.4 Roo
6.2.5 내장형 네티 서버
6.2.6 플레이 서버
6.2.7 기타 경량 서버 솔루션
6.3 JVM 기반의 서버들
6.3.1 자이썬
6.4 웹 애플리케이션 서버
6.5 개발에 적용하기
6.6 마치며
CHAPTER 7 프로젝트 쾌속 개발
7.1 개발자 생산성
7.2 개발자와 팀의 워크플로 최적화
7.2.1 예제 1 : 웹 애플리케이션 수정
7.2.2 예제 2 : 통합 테스트
7.2.3 예제 3 : 신규 프로젝트 개발
7.3 생산성과 소프트웨어 개발의 라이프사이클
7.3.1 경영과 문화
7.3.2 기술적 아키텍처
7.3.3 소프트웨어 도구들
7.3.4 성능
7.3.5 테스트
7.3.6 하부 플랫폼
7.4 마치며
CHAPTER 8 API 디자인
8.1 디자인 결정
8.2 실용적인 웹 API와 RESTful API
8.3 가이드라인
8.3.1 명사는 자원, 동사는 HTTP 동작
8.3.2 쿼리 매개변수를 한정어로 쓰기
8.3.3 웹 API 버전
8.3.4 HTTP 헤더
8.3.5 링크
8.3.6 응답
8.3.7 문서
8.3.8 포매팅 규약
8.3.9 보안
8.4 프로젝트 실습
8.4.1 프로젝트 실행
8.4.2 서버 코드
8.4.3 컬과 제이쿼리
8.5 실무상의 이론
CHAPTER 9 제이쿼리와 자이썬
9.1 서버 측 : 자이썬
9.1.1 파이썬 웹 서버
9.1.2 자이썬 웹 서버
9.1.3 모의 API
9.2 클라이언트 측 : 제이쿼리
9.2.1 DOM 횡단과 처리
9.2.2 유틸리티 기능
9.2.3 효과
9.2.4 이벤트 핸들링
9.2.5 Ajax
9.3 제이쿼리와 고수준 추상화
9.4 프로젝트 실습
9.4.1 기본적인 HTML
9.4.2 자바스크립트와 제이쿼리
9.5 마치며
CHAPTER 10 제이루비와 앵귤러
10.1 서버 측 : 제이루비와 시나트라
10.1.1 워크플로
10.1.2 대화형 루비 셸
10.1.3 루비 버전 관리자
10.1.4 패키지
10.1.5 시나트라
10.1.6 JSON 프로세싱
10.2 클라이언트 측 : 앵귤러JS
10.2.1 모델
10.2.2 뷰
10.2.3 컨트롤러
10.2.4 서비스
10.3 제이쿼리와 앵귤러 비교
10.3.1 DOM 혹은 모델 처리
10.3.2 앵귤러의 비간섭성
10.4 프로젝트 실습
10.5 마치며
CHAPTER 11 패키징과 디플로이
11.1 자바와 JEE 패키징
11.2 JEE 디플로이
11.2.1 GUI에서 관리하기
11.2.2 명령줄에서 관리하기
11.3 JEE 이외의 디플로이
11.3.1 웹 앱 외부에 서버를 디플로이
11.3.2 웹 앱과 서버를 나란히 디플로이
11.3.3 웹 앱 내부에 서버를 디플로이
11.4 디플로이 선택이 미치는 영향
11.4.1 부하 분산
11.4.2 애플리케이션 디플로이의 자동화
11.5 프로젝트 실습
11.5.1 클라이언트
11.5.2 서버
11.6 마치며
CHAPTER 12 가상화
12.1 완전한 가상화
12.2 가상 머신 구현
12.2.1 VMWare
12.2.2 버추얼박스
12.2.3 아마존 EC2
12.3 가상 머신 관리
12.3.1 베이그런트
12.3.2 패커
12.3.3 데브옵스 설정 관리
12.4 컨테이너
12.4.1 LXC
12.4.2 Docker
12.5 프로젝트 실습
12.5.1 도커 도움말
12.5.2 이미지와 컨테이너 관리
12.5.3 도커에서의 자바
12.5.4 도커와 베이그런트 네트워킹
12.6 마치며
CHAPTER 13 테스트와 문서화
13.1 테스트의 유형
13.1.1 공식 테스트와 비공식 테스트
13.1.2 테스트의 규모
13.1.3 누가 누구를 위해서 무엇을 테스트하나?
13.2 조직 성숙도에 대한 지표로서의 테스트
13.2.1 프로세스 일관성 측정을 위한 CMM
13.2.2 일관된 프로세스로 이끄는 메이븐
13.2.3 일관된 프로세스로 이끄는 BDD
13.3 테스트 프레임워크
13.3.1 제이유닛
13.3.2 재스민
13.3.3 큐컴버
13.4 프로젝트 실습
13.4.1 제이유닛
13.4.2 재스민
13.4.3 큐컴버
13.4.4 메이븐 사이트 보고서
13.5 마치며
CHAPTER 14 마치며
14.1 커뮤니티
14.2 역사
14.3 정말 마치며
APPENDIX A 제이루비 IRB 및 자바 API
A.1 그래들을 이용한 셋업
A.2 제이루비 IRB
A.2.1 IRB 소개
A.3 자바 기반의 관계형 데이터베이스
A.3.1 H2
A.3.2 HSQLDB
A.3.3 더비
A.4 마치며
B.1 HTTP 1.1 요청 메서드
APPENDIX B RESTful 웹 API 요약
B.2 HTTP 1.1 응답 코드
B.3 웹 API용 컬
B.4 JSON 문법
B.4.1 JSON의 유형
B.5 레일로드 다이어그램
B.5.1 객체
B.5.2 배열
B.5.3 값
APPENDIX C 참고문헌