본문 바로가기

도서 소개

자바 마스터 북: 기초부터 실무 응용까지

이 책은 현재 절판입니다. 그간 읽어주신 독자들께 감사드립니다.

기초 문법은 물론, 완벽한 현장 대응을 위한 맞춤 안내서!

고효율·고품질 시스템 개발을 위한 실무 응용 가이드!

 

출판사 제이펍
원출판사 技術評論社
원서명 Java本格入門: モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで(원서 ISBN: 9784774189093)
저자명 타니모토 신, 사카모토 유이치로, 오카다 타쿠야, 아키바 마코토, 무라타 켄이치로
역자명 정인식
출판일 2018년 3월 7일
페이지 484쪽
판 형 46배판변형(188*245*23)
제 본 무선(soft cover)
정 가 28,000원
ISBN 979-11-88621-18-7 (93000)
키워드 자바 / 객체지향 / 디자인패턴 / Stream API / javadoc / CSV / JSON
분야 프로그래밍 / 자바
 
관련 사이트
 
관련 포스트
관련 시리즈
■ (없음)
 
관련 도서
 
관련 파일 다운로드
 
 
강의보조 자료
교재로 채택하신 분들은 메일을 보내주시면 아래의 자료를 보내드리겠습니다: jeipubmarketer@gmail.com
■ 본문의 그림과 표
 
샘플 PDF(차례, 옮긴이 머리말, 들어가며, 베타리더 후기, 1장 '자바의 기본 이해하기', 2장 '기본적인 작성법 익히기' 일부, 4장 '배열과 컬렉션 공략하기' 일부, 11장 '스레드 세이프 즐기기' 일부)
정오표 페이지
 
도서구매 사이트(가나다순)
 
도서 소개

기초 문법은 물론, 완벽한 현장 대응을 위한 맞춤 안내서!

고효율·고품질 시스템 개발을 위한 실무 응용 가이드!

 
이 책은 시스템 개발의 핵심 분야에서 자바를 사용해 온 Acroquest Technology의 개발자들이 20여 년의 개발 경험과 문제 해결 노하우를 토대로 집필한 책이다. 자바의 기초부터 실전까지 체계적으로 설명하고 있으며, 특히 자바 프로그래밍에서의 유지보수, 견고성, 성능, 개발 효율 등을 고려해 한층 더 실전에 활용할 수 있는 내용으로 구성하였다.
 
실전에서의 활용 방법을 더 알고 싶은 자바 개발자나 다른 언어에 대한 경험은 있으나 자바는 처음인 독자들에게 이 책이 실전 자바 프로그래밍 능력을 키우는 데 많은 도움이 될 것이다.
 
이 책의 주요 내용
  • 자바의 기본 개념과 작성법
  • 객체지향 프로그래밍과 디자인 패턴
  • 실용적인 라이브러리
  • 시너지를 주는 자바 주변 도구
  • 현장 대응 노하우
 
지은이 소개
타니모토 신(谷本 心)
문제 해결 및 플랫폼 개발에 종사하고 있다. 자바 커뮤니티 활동에 적극적이어서 간사이 자바 엔지니어 모임을 주최하고, 일본 자바 사용자 그룹(JJUG)의 총무를 겸하고 있다. 샌프란시스코에서 개최된 JavaOne 2013, 2015에서 문제 해결에 관해 강연도 하였다. 좋아하는 자바 API는 javax.management이다.
 
사카모토 유이치로(阪本 雄一郎)
BCI를 이용하여 자바 코어 부분을 다루며 스프링부트를 이용한 웹 시스템 개발, 하둡/스파크를 이용한 실시간 추천 시스템 개발에 이르기까지 다양한 개발 경험을 갖고 있다. 최근에는 IoT 기반의 플랫폼 개발 프로젝트 리더를 맡고 있다. 좋아하는 자바 API는 java.nio이다.
 
오카다 타쿠야(岡田 拓也)
개발 관리 및 OSS 제품의 조사/검증을 수행하였다. 엔지니어로 일하면서 10년 동안 모교인 도쿄공업대학에서 무료 자바 세미나를 개최하는 등 IT 엔지니어의 저변 확대를 위해 활동하고 있다. 2014년부터 미얀마 지사의 Acroquest Myanmar Technology를 운영하면서 기술 지도에 힘쓰고 있다. 특히, 현지 엔지니어가 최신 기술을 공부할 수 있도록 커뮤니티 활성화를 위해 고군분투하는 중이다. 좋아하는 자바 API는 java.time이다.
 
아키바 마코토(秋葉 誠)
자바를 사용한 미션크리티컬 집중 감시 시스템의 프레임워크 개발부터 데이터베이스, 네트워크 등을 다루면서 인프라 방면에 관심을 갖게 되었다. 현재는 환경 구축부터 운용, DevOps에 이르는 ‘개발 능력이 있는 인프라 엔지니어’를 꿈꾸며 활동하고 있다. 좋아하는 자바 API는 javax.sql이다.
 
무라타 켄이치로(村田 賢一郎)
자바를 사용한 미션크리티컬 집중 감시 시스템의 프레임워크 개발부터 시스템 개발에 오랫동안 종사하였다. 주된 관심은 비동기 처리 메시징 분야다. 최근에는 자연어 처리를 활용한 프로젝트를 관리하고 있으며, 자연어 처리를 실제로 활용하는 데 빠져 있다. 좋아하는 자바 API는 java.util.concurrent이다.
 
옮긴이 소개
정인식
숭실대학교에서 전자계산학을 전공하였다. 사회 초년생 시절 자바에 심취해 현대정보기술에서 웹 애플리케이션을 개발하였고, 그 후 이동통신 단말기 분야로 전직하여 휴대전화 단말기의 부가서비스 개발 업무를 담당하였다. 일본 키스코 모바일사업부 팀장이었으며, 일본 교세라의 북미향 휴대전화기 개발에 참여하였다. 지금은 일본의 주요 이동통신사에서 업무 프로세스 개선을 위한 IT 컨설팅 및 데이터 분석 관련 툴을 개발하고 있다. 옮긴 책으로는 《자바스크립트 마스터 북(제2판)》, 《처음 만나는 알고리즘》을 비롯해 10여 종이 있다.
 
차례
CHAPTER 1 자바의 기본 이해하기 1
1.1 자바란? 2
1.1.1 자바의 특징 2
1.1.2 자바의 세 가지 에디션과 두 가지 환경 3
1.1.3 Java VM의 종류 4
1.1.4 자바가 실행되는 순서 4
1.2 ‘ Hello Java World!’를 표시해 보자 6
1.2.1 자바 설치하기 6
1.2.2 이클립스 설치하기 9
1.2.3 ‘Hello Java World!’ 프로그램을 만들어 보자 13
1.2.4 프로그램 실행하기 16
더보기
CHAPTER 2 기본적인 작성법 익히기 17
2.1 자바의 기본적인 표기법 18
2.1.1 문장과 블록 18
2.1.2 주석 19
2.1.3 변수, 타입, 리터럴 19
2.1.4 연산자 20
2.1.5 제어 구문 26
2.2 클래스와 메서드 34
2.2.1 클래스 선언하기 34
2.2.2 메서드 선언하기 34
2.2.3 수식자 36
2.2.4 메서드 오버로딩 38
2.2.5 main 메서드 39
2.2.6 인스턴스 39
2.2.7 this를 사용할 때의 주의점 41
2.2.8 생성자 42
2.3 정보 공유를 위해 알아둘 기능 45
2.3.1 Javadoc 45
2.3.2 애노테이션 46
2.4 명명 규칙 48
2.4.1 클래스와 변수는 카멜 케이스로, 상수는 스네이크 케이스로 한다 48
2.4.2 변수명 뒤에는 ‘_’를 붙이지 않는다 49
2.4.3 변수는 명사, 메서드는 동사로 명명한다 49
2.4.4 ‘불길한 냄새’가 나는 이름에 주의하자 50
 
CHAPTER 3 타입 공략하기 51
3.1 기본형과 참조형 52
3.1.1 자바는 정적 타입 언어 52
3.1.2 기본형 53
3.1.3 참조형 57
3.1.4 래퍼 클래스 58
3.1.5 오토박싱과 언박싱 62
3.2 클래스 작성하기 64
3.2.1 클래스 정의하기 64
3.2.2 패키지 65
3.2.3 접근 제한자 66
3.2.4 그 외의 자주 이용하는 수식자 68
3.2.5 계승 71
3.2.6 추상 클래스 72
3.2.7 인터페이스 74
3.2.8 익명 클래스 75
3.3 타입 판정과 객체의 등가성 77
3.3.1 instanceof 연산자 77
3.3.2 객체의 등가성 78
3.4 타입에 관련된 문제 예방하기 88
3.4.1 열거형(enum) 88
3.4.2 제네릭스(Generics) 91
 
CHAPTER 4 배열과 컬렉션 공략하기 97
4.1 배열로 여러 데이터 처리하기 98
4.1.1 배열이란? 98
4.1.2 배열 초기화하기 100
4.1.3 배열의 대입과 취득 102
4.1.4 배열의 사이즈 변경하기 104
4.1.5 Arrays 클래스를 이용하여 배열 조작하기 105
4.1.6 가변 길이 인수로 메서드 정의하기 111
4.2 컬렉션 프레임워크로 여러 데이터 처리하기 113
4.2.1 배열의 한계와 컬렉션의 특징 113
4.2.2 대표적인 컬렉션과 구분 기준 113
4.3 배열과 비슷한 방법으로 여러 요소 처리하기 — List 인터페이스 115
4.3.1 List 인터페이스의 기본 115
4.3.2 List 작성하기 117
4.3.3 List의 대표적인 메서드 118
4.3.4 List 정렬하기 120
4.3.5 List 검색하기 121
4.3.6 List의 반복자 122
4.3.7 List의 세 가지 구현 클래스 이해하기 124
4.3.8 List의 구현 클래스를 어떻게 분류해서 사용할까? 127
4.4 키와 값의 조합으로 값 처리하기 — Map 인터페이스 128
4.4.1 Map 작성하기 129
4.4.2 Map 사용법 130
4.4.3 Map의 세 가지 구현 클래스 이해하기 132
4.4.4 Map의 구현 클래스를 어떻게 분류해서 사용할까? 134
4.5 값의 집합 처리하기 — Set 인터페이스 135
4.5.1 Set 초기화 136
4.5.2 Set 사용법 137
4.5.3 Set의 세 가지 구현 클래스 이해하기 139
4.6 그 외의 인터페이스 142
4.6.1 값 을 추가한 순서와 동일한 순서로 값 취득하기 ― Queue 인터페이스 142
4.6.2 양방향 Queue 사용하기 ― Deque 인터페이스 143
 
CHAPTER 5 스트림 처리 제대로 사용하기 — 람다식과 Stream API 145
5.1 Stream API를 사용하기 위한 기본 146
5.1.1 Stream API로 컬렉션의 조작은 어떻게 변하는가? 146
5.1.2 람다식 작성법 마스터하기 148
5.1.3 메서드 참조 152
5.2 Stream 작성하기 154
5.2.1 List나 Set으로부터 Stream 작성하기 154
5.2.2 배열로부터 Stream 작성하기 155
5.2.3 Map으로부터 Stream 작성하기 155
5.2.4 숫자 범위로부터 Stream 작성하기 156
5.3 Stream에 대한 ‘중간 작업’ 158
5.3.1 요소를 치환하는 중간 작업 158
5.3.2 요소를 걸러내는 중간 작업 162
5.3.4 요소를 정렬하는 중간 작업 163
5.4 Stream에 대한 ‘종료 작업’ 165
5.4.1 반복 처리를 실시하는 종료 작업 165
5.4.2 결과를 정리해서 추출하는 종료 작업 165
5.4.3 결과를 하나만 추출하는 종료 작업 167
5.4.4 집계 처리를 실시하는 종료 작업 168
5.5 Stream API를 사용하기 위한 포인트 169
5.5.1 왕도는 map, filter, collect 169
5.5.2 n번 반복하는 IntStream 169
5.5.3 List나 Map에 대한 효율적인 처리 실시하기 171
5.6 Stream API를 사용하여 List 초기화하기 174
5.6.1 Stream을 이용해 열거한 값으로 List 작성하기 174
5.6.2 Stream을 이용해 값의 범위로부터 List 작성하기 174
5.6.3 Stream을 이용해 배열 작성하기 175
 
CHAPTER 6 예외 공략하기 177
6.1 예외의 기본 178
6.1.1 예외의 세 가지 종류 178
6.1.2 예외를 나타내는 세 가지 클래스 179
6.1.3 예외 처리의 세 가지 구문 제대로 사용하기 181
6.2 예외 처리에서 혼란에 빠지지 않기 위한 포인트 187
6.2.1 오류 코드를 return하지 않기 187
6.2.2 예외를 제거하지 않기 188
6.2.3 공포의 throws Exception 감염 192
6.2.4 어느 계층에서 예외를 포착해서 처리해야 하는가? 195
6.2.5 독자적인 예외 작성하기 195
6.2.6 예외의 트렌드 198
 
CHAPTER 7 문자열 조작 공략하기 203
7.1 문자열 조작의 기본 204
7.1.1 String 클래스의 특징 204
7.1.2 문자열을 결합하는 세 가지 방법 205
7.1.3 문자열 분할하기 208
7.1.4 여러 문자열 결합하기 210
7.1.5 문자열 치환하기 211
7.1.6 문자열 검색하기 211
7.2 정규 표현으로 문자열 유연하게 지정하기 213
7.2.1 문자열이 정규 표현 패턴에 적합한지 체크하기 213
7.2.2 정규 표현을 사용하여 문자열 분할하기 214
7.2.3 정규 표현을 사용하여 문자열 치환하기 215
7.2.4 String 클래스의 메서드로 정규 표현 사용하기 216
7.3 문자열의 포맷과 출력 218
7.3.1 문자열 출력하기 218
7.3.2 MessageFormat에 대해서 219
7.4 문자 코드 변환하기 221
7.4.1 자바는 어떻게 문자 코드를 이용하는가? 221
7.4.2 자바 문자에서 임의의 문자 코드로 변환하기 222
7.4.3 임의의 문자 코드로부터 자바 문자로 변환하기 223
7.4.4 문자 깨짐의 원인과 대책 223
7.4.5 String 클래스의 intern 메서드로 같은 문자열 찾기 225
 
CHAPTER 8 파일 조작 공략하기 227
8.1 파일 조작의 기본 228
8.1.1 File 클래스로 초기화하기 228
8.1.2 Path 클래스로 초기화하기 230
8.2 파일 읽고 쓰기 234
8.2.1 바이너리 파일 읽어들이기 234
8.2.2 바이너리 파일 기록하기 237
8.2.3 텍스트 파일 읽어들이기 239
8.2.4 텍스트 파일 기록하기 241
8.2.5 Stream API를 사용해서 파일 읽어들이기 242
8.3 파일 조작하기 244
8.3.1 파일 복사하기 244
8.3.2 파일 삭제하기 246
8.3.3 파일 작성하기 247
8.3.4 디렉터리 작성하기 248
8.3.5 임시 파일 작성하기 250
8.4 다양한 파일 취급하기 253
8.4.1 속성 파일 253
8.4.2 CSV 파일 257
8.4.3 XML 파일 257
8.4.4 JSON 파일 272
 
CHAPTER 9 날짜 처리 공략하기 275
9.1 Date와 Calendar 구분하여 사용하기 276
9.1.1 Date 클래스 이용하기 276
9.1.2 Calendar 클래스 이용하기 277
9.1.3 Date 클래스와 Calendar 클래스의 상호 교환 실시하기 281
9.2 Date and Time API 사용하기 283
9.2.1 Date and Time API의 장점 283
9.2.2 날짜, 시간, 일시를 각각 별도의 클래스로 취급한다 284
9.2.3 연, 월, 일 등을 지정하여 인스턴스를 생성할 수 있다 285
9.2.4 연, 월, 일의 각 필드값을 개별로 취득할 수 있다 288
9.2.5 연, 월, 일을 계산할 수 있다 289
9.3 날짜 클래스와 문자열 상호 교환하기 292
9.3.1 날짜 클래스를 임의의 형식으로 문자열 출력하기 292
9.3.2 문자열로 표현된 날짜를 Date 클래스로 변환하기 293
9.3.3 SimpleDateFormat 클래스는 스레드 세이프가 아니다 294
9.4 Date and Time API로 날짜/시간 클래스와 문자열 상호 교환하기 295
9.4.1 날짜/시간 클래스를 임의의 형식으로 문자열 출력하기 295
9.4.2 문자열로 표현된 날짜를 날짜/시간 클래스로 변환하기 296
9.4.3 DateTimeFormatter 클래스는 스레드 세이프다 296
 
CHAPTER 10 객체지향 즐기기 299
10.1 기본형과 참조형의 값 전달하기 300
10.1.1 기본형과 참조형의 값 전달 방법 300
10.1.2 조작해도 값이 변하지 않는 불변 객체 클래스 302
10.1.3 조작하면 값이 변경되는 변경 가능 클래스 304
10.1.4 변경 가능한 클래스의 장점과 단점 305
10.2 가시성을 적절히 설정하여 버그가 적은 프로그램 만들기 307
10.2.1 자바가 사용할 수 있는 가시성 307
10.2.2 가시성의 좋은 사례 308
10.3 객체의 라이프 사이클 파악하기 311
10.3.1 세 종류의 라이프 사이클 311
10.3.2 라이프 사이클의 좋은 사례 312
10.4 인터페이스와 추상 클래스를 활용하여 설계하기 316
10.4.1 다형성을 실현하기 위한 메커니즘 316
10.4.2 인터페이스와 추상 클래스 317
10.4.3 인터페이스의 디폴트 구현 322
10.4.4 인터페이스의 static 메서드 323
 
CHAPTER 11 스레드 세이프 즐기기 329
11.1 멀티 스레드의 기본 330
11.1.1 멀티 스레드란? 330
11.1.2 멀티 스레드의 장점 331
11.1.3 멀티 스레드의 단점 334
11.1.4 동시에 작업하는 경우에 일어나는 문제 335
11.1.5 멀티 스레드 문제에 대응하기 어려운 이유 339
11.2 스레드 세이프 구현하기 340
11.2.1 스레드 세이프란? 340
11.2.2 상태를 유지하지 않게(Stateless) 한다 349
11.2.3 ‘메서드 단위’가 아니라 최소한의 ‘일련의 처리’에 대해 동기화한다 352
 
CHAPTER 12 디자인 패턴 즐기기 357
12.1 디자인 패턴의 기본 358
12.1.1 디자인 패턴이란? 358
12.1.2 디자인 패턴을 사용하면 좋은 점 359
12.2 생성에 관한 패턴 360
12.2.1 AbstractFactory 패턴 ― 일련의 인스턴스군을 모아서 생성하기 360
12.2.2 Builder 패턴 ― 복합화된 인스턴스의 생성 과정을 은폐한다 364
12.2.3 Singleton 패턴 ― 특정 클래스에 대해 인스턴스가 하나임을 보장한다 367
12.3 구조에 관한 패턴 369
12.3.1 Adapter 패턴 ― 인터페이스에 호환성이 없는 클래스들을 조합시키기 369
12.3.2 Composite 패턴 ― 재귀적 구조 쉽게 처리하기 373
12.4 행동에 관한 패턴 377
12.4.1 Command 패턴 ― ‘명령’을 인스턴스로 취급하여 처리 조합을 쉽게 한다 377
12.4.2 Strategy 패턴 ― 전략을 간단히 전환할 수 있는 구조를 제공한다 380
12.4.3 Iterator 패턴 ― 보유한 인스턴스의 각 요소에 순차적으로 액세스하는 방법을 제공한다 383
12.4.4 Observer 패턴 ― 어떤 인스턴스의 상태가 변화할 때 그 인스턴스 자신이 상태 의 변화를 통지하는 구조를 제공한다 385
 
CHAPTER 13 주변 도구로 품질 높이기 389
13.1 Maven으로 빌드하기 390
13.1.1 빌드란? 390
13.1.2 Maven의 기본적인 이용 방법 391
13.1.3 Maven에 플러그인 도입하기 396
13.2 Javadoc으로 문서화 주석 작성하기 398
13.2.1 왜 Javadoc 주석을 작성하는가? 398
13.2.2 Javadoc의 기본적인 작성 방법 399
13.2.3 알아두면 편리한 작성 방법 401
13.2.4 API 문서 작성하기 405
13.3 Checkstyle로 포맷 체크하기 406
13.3.1 Checkstyle이란? 406
13.3.2 이클립스에 의한 포맷 체크 407
13.3.3 Maven에 의한 포맷 체크 409
13.4 FindBugs로 버그 체크하기 410
13.4.1 이클립스에 의한 버그 체크 410
13.4.2 Maven에 의한 버그 체크 412
13.5 JUnit으로 테스트하기 413
13.5.1 왜 테스트용 프로그램을 만들어서 테스트할까? 413
13.5.2 테스트 코드 구현하기 414
13.5.3 테스트 실행하기 416
13.6 Jenkins로 품질 보고서 작성하기 418
13.6.1 지속적인 통합과 Jenkins 418
13.6.2 Jenkins 환경 준비하기 418
13.6.3 Jenkins에서 빌드 실행하기 422
13.6.4 Jenkins에서 보고서 생성하기 424
 
CHAPTER 14 라이브러리로 효율 높이기 429
14.1 재사용 가능한 컴포넌트를 모은 Apache Commons 430
14.1.1 Commons Lang 430
14.1.2 Commons BeanUtils 433
14.1.3 단순 복사와 딥 복사 434
14.2 CSV로 여러 데이터 보관하기 437
14.2.1 CSV란? 437
14.2.2 Super CSV로 CSV 변환을 효율적으로 실시하기 437
14.2.3 CSV 데이터 읽어들이기 438
14.2.4 CSV 데이터 쓰기 439
14.3 JSON으로 구조적인 데이터를 간단하게 하기 441
14.3.1 JSON이란? 441
14.3.2 Jackson으로 JSON 취급하기 441
14.3.3 JSON 데이터 분석하기 442
14.3.4 JSON 데이터 생성하기 443
14.4 Logger로 애플리케이션 로그 보관하기 445
14.4.1 로그와 레벨 445
14.4.2 SLF4J+Logback으로 로깅 실시하기 446
14.4.3 SLF4J+Logback의 기본적인 사용법 447
14.4.4 파일에 출력하기 449
14.4.5 변수 출력하기 450
14.4.6 패키지별로 출력 로그 레벨 변경하기 451
14.4.7 동적으로 설정 변경하기 451
 
감사의 글 453
찾아보기 455