가장 빨리 만나는 코어 자바9

고객평점
저자카이 호스트만
출판사항길벗, 발행일:2018/03/30
형태사항p.584 B5판:24
매장위치컴퓨터부(B2) , 재고문의 : 051-816-9500
ISBN9791160504392 [소득공제]
판매가격 36,000원   32,400원  (인터넷할인가:10%)
포인트 1,620점
배송비결제주문시 결제
  • 주문수량 

총 금액 : 0원

책 소개

모던 자바의 장점을 실무에 빠르게 적용하자!
이 책은 기존 책에 자바 8/9에 추가된 개념과 특징을 덧붙이기보다는 처음부터 모던 자바의 시각으로 자바 9를 배울 수 있게 이끌어 준다.
자바 9에서는 ‘자바 플랫폼 모듈 시스템’이라는 모듈 개념을 도입했으며, JDK 라이브러리 자체도 모듈화했다. 덕분에 캡슐화 단계가 추가되고 보안성이 높아졌으며, 필요한 모듈만으로 애플리케이션을 구성해 이전보다 훨씬 작은 단위로 배포할 수 있게 되었다.
이외에도 자바 9에 추가된 JShell, 각종 명령줄 도구, 한층 개선된 API(프로세스, HTTP 클라이언트, 컬렉션, 스트림 등)는 자바 프로그래머의 생산성 향상에 큰 도움이 될 것이다.

이 책에서 다루는 내용
람다 표현식, 스트림, 개선된 API, JShell, 모듈을 간결하고 명확하게 설명한다.
새로운 JShell Read-Eval-Print Loop(REPL)를 사용하여 테스트 코드를 작성한다.
람다 표현식으로 원하는 동작만 지정하여 작업을 더욱 간결하게 표현한다.
최신 스트림 API로 데이터 처리를 간소화하고 최적화한다.
병행성 라이브러리를 사용하여 현대적 병행 프로그래밍을 다룬다.
광범위하게 개선된 API(컬렉션, 병행성, 프로세스, HTTP 클라이언트, 스트림 등)를 활용한다.
모듈을 사용하여 복합 시스템의 개발을 단순화한다.
모듈로 API를 정리하여 보안성을 높이고, 배포 단위를 줄인다.
레거시 코드를 모듈식 애플리케이션으로 마이그레이션한다.

작가 소개

저 : 카이 호스트만

Cay S. Horstmann
《가장 빨리 만나는 자바 8》(길벗, 2014), 《쉽게 배워서 빨리 써먹 는 스칼라 프로그래밍》(비제이퍼블릭, 2013)의 저자이자 《Core Java™, Volumes I and II, 10th Edition》(Prentice Hall, 2016) 의 주 저자이며, 전문 프로그래머와 컴퓨터 과학 학생들을 위해 12권도 넘는 책을 저술했다. 현재 산호세 주립 대학교의 컴퓨터 과학 교수이며 자바 챔피언이다.

 

역 : 신경근

넥스텔레콤에서 SIP 서버 매니저와 빌링 서버 개발을 시작으로, 한컴씽크프리에서 자바/안드로이드 공통 라이브러리 개발을 담당 했고 몇몇 스타트업에서 LBS, SNS, 뉴스 큐레이션 앱 등을 개발 했다. 옮긴 책으로는 《가장 빨리 만나는 자바 8》, 《스프링 4 코딩 공 작소》가 있다. 요즘은 온라인 학습 시스템을 개발/운영 중이다.  

 

목 차

1장 기본 프로그래밍 구조
__1.1 첫 번째 프로그램
____1.1.1 “Hello, World” 프로그램 파헤치기
____1.1.2 자바 프로그램 컴파일 및 실행
____1.1.3 메서드 호출
____1.1.4 JShell 실행
__1.2 기본 타입
____1.2.1 부호 있는 정수 타입
____1.2.2 부동소수점 타입
____1.2.3 char 타입
____1.2.4 boolean 타입
__1.3 변수
____1.3.1 변수 선언
____1.3.2 변수 이름
____1.3.3 변수 초기화
____1.3.4 상수
__1.4 산술 연산
____1.4.1 할당
____1.4.2 기본 계산
____1.4.3 수학 메서드
____1.4.4 숫자 타입 변환
____1.4.5 관계 연산자와 논리 연산자
____1.4.6 큰 숫자
__1.5 문자열
____1.5.1 문자열 연결
____1.5.2 부분 문자열
____1.5.3 문자열 비교
____1.5.4 숫자와 문자열 사이의 변환
____1.5.5 문자열 API
____1.5.6 코드 포인트와 코드 유닛
__1.6 입력과 출력
____1.6.1 입력 읽어 오기
____1.6.2 포맷 적용 출력
__1.7 제어 흐름
____1.7.1 분기
____1.7.2 루프
____1.7.3 중단과 계속
____1.7.4 지역 변수의 유효 범위
__1.8 배열과 배열 리스트
____1.8.1 배열 다루기
____1.8.2 배열 생성
____1.8.3 배열 리스트
____1.8.4 기본 타입의 래퍼 클래스
____1.8.5 향상된 for 루프
____1.8.6 배열과 배열 리스트 복사
____1.8.7 배열 알고리즘
____1.8.8 명령줄 인수
____1.8.9 다차원 배열
__1.9 기능적 분해
____1.9.1 정적 메서드 선언 및 호출
____1.9.2 배열 매개변수와 반환 값
____1.9.3 가변 인수
__연습문제

2장 객체 지향 프로그래밍
__2.1 객체 사용
____2.1.1 접근자 메서드와 변경자 메서드
____2.1.2 객체 참조
__2.2 클래스 구현
____2.2.1 인스턴스 변수
____2.2.2 메서드 헤더
____2.2.3 메서드 바디
____2.2.4 인스턴스 메서드 호출
____2.2.5 this 참조
____2.2.6 값을 사용한 호출
__2.3 객체 생성
____2.3.1 생성자 구현
____2.3.2 오버로딩
____2.3.3 다른 생성자에서 특정 생성자 호출
____2.3.4 기본 초기화
____2.3.5 인스턴스 변수 초기화
____2.3.6 최종 인스턴스 변수
____2.3.7 인수 없는 생성자
__2.4 정적 변수와 정적 메서드
____2.4.1 정적 변수
____2.4.2 정적 상수
____2.4.3 정적 초기화 블록
____2.4.4 정적 메서드
____2.4.5 팩토리 메서드
__2.5 패키지
____2.5.1 패키지 선언
____2.5.2 jar 명령
____2.5.3 클래스 패스
____2.5.4 패키지 접근
____2.5.5 클래스 임포트
____2.5.6 정적 임포트
__2.6 중첩 클래스
____2.6.1 정적 중첩 클래스
____2.6.2 내부 클래스
____2.6.3 내부 클래스용 특수 문법 규칙
__2.7 문서화 주석
____2.7.1 주석 넣기
____2.7.2 클래스 주석
____2.7.3 메서드 주석
____2.7.4 변수 주석
____2.7.5 일반 주석
____2.7.6 링크
____2.7.7 패키지 주석, 모듈 주석, 개요 주석
____2.7.8 주석 내보내기
__연습문제

3장 인터페이스와 람다 표현식
__3.1 인터페이스
____3.1.1 인터페이스 선언
____3.1.2 인터페이스 구현
____3.1.3 인터페이스 타입으로 변환
____3.1.4 캐스트와 instanceof 연산자
____3.1.5 인터페이스 확장
____3.1.6 여러 인터페이스 구현
____3.1.7 상수
__3.2 인터페이스의 정적 메서드, 기본 메서드, 비공개 메서드
____3.2.1 정적 메서드
____3.2.2 기본 메서드
____3.2.3 기본 메서드의 충돌 해결
____3.2.4 비공개 메서드
__3.3 인터페이스의 예
____3.3.1 Comparable 인터페이스
____3.3.2 Comparator 인터페이스
____3.3.3 Runnable 인터페이스
____3.3.4 사용자 인터페이스 콜백
__3.4 람다 표현식
____3.4.1 람다 표현식 문법
____3.4.2 함수형 인터페이스
__3.5 메서드 참조와 생성자 참조
____3.5.1 메서드 참조
____3.5.2 생성자 참조
__3.6 람다 표현식 처리
____3.6.1 지연 실행 구현
____3.6.2 함수형 인터페이스 선택
____3.6.3 독자적인 함수형 인터페이스 구현
__3.7 람다 표현식과 변수 유효 범위
____3.7.1 람다 표현식의 유효 범위
____3.7.2 람다 표현식을 감싸는 유효 범위에 속한 변수 접근
__3.8 고차 함수
____3.8.1 함수를 반환하는 메서드
____3.8.2 함수를 수정하는 메서드
____3.8.3 Comparator 인터페이스의 메서드
__3.9 지역 클래스와 익명 클래스
____3.9.1 지역 클래스
____3.9.2 익명 클래스
__연습문제

4장 상속과 리플렉션
__4.1 클래스 확장
____4.1.1 슈퍼클래스와 서브클래스
____4.1.2 서브클래스 메서드 정의와 상속
____4.1.3 메서드 오버라이딩
____4.1.4 서브클래스 생성
____4.1.5 슈퍼클래스 할당
____4.1.6 캐스트
____4.1.7 최종 메서드와 최종 클래스
____4.1.8 추상 메서드와 추상 클래스
____4.1.9 보호 접근
____4.1.10 익명 서브클래스
____4.1.11 상속과 기본 메서드
____4.1.12 super를 이용한 메서드 표현식
__4.2 Object: 보편적 슈퍼클래스
____4.2.1 toString 메서드
____4.2.2 equals 메서드
____4.2.3 hashCode 메서드
____4.2.4 객체 복제
__4.3 열거
____4.3.1 열거의 메서드
____4.3.2 생성자, 메서드, 필드
____4.3.3 인스턴스의 바디
____4.3.4 정적 멤버
____4.3.5 열거를 기준으로 스위치하기
__4.4 실행 시간 타입 정보와 리소스
____4.4.1 Class 클래스
____4.4.2 리소스 로드
____4.4.3 클래스 로더
____4.4.4 컨텍스트 클래스 로더
____4.4.5 서비스 로더
__4.5 리플렉션
____4.5.1 클래스 멤버 나열
____4.5.2 객체 조사
____4.5.3 메서드 호출
____4.5.4 객체 생성
____4.5.5 자바빈
____4.5.6 배열 다루기
____4.5.7 프록시
__연습문제

5장 예외, 단정, 로깅
__5.1 예외 처리
____5.1.1 예외 던지기
____5.1.2 예외 계층
____5.1.3 검사 예외 선언
____5.1.4 예외 잡기
____5.1.5 try-with-resources 문
____5.1.6 finally 절
____5.1.7 예외 다시 던지기와 예외 연쇄
____5.1.8 미처리 예외와 스택 추적
____5.1.9 Objects.requireNonNull 메서드
__5.2 단정
____5.2.1 단정 사용
____5.2.2 단정 활성화와 비활성화
__5.3 로깅
____5.3.1 로거 사용
____5.3.2 로거
____5.3.3 로깅 레벨
____5.3.4 기타 로깅 메서드
____5.3.5 로깅 구성
____5.3.6 로그 핸들러
____5.3.7 필터와 포매터
__연습문제

6장 제네릭 프로그래밍
__6.1 제네릭 클래스
__6.2 제네릭 메서드
__6.3 타입 경계
__6.4 타입 가변성과 와일드카드
____6.4.1 서브타입 와일드카드
____6.4.2 슈퍼타입 와일드카드
____6.4.3 타입 변수를 이용한 와일드카드
____6.4.4 경계 없는 와일드카드
____6.4.5 와일드카드 캡처
__6.5 자바 가상 머신에서 보는 제네릭
____6.5.1 타입 소거
____6.5.2 캐스트 삽입
____6.5.3 브리지 메서드
__6.6 제네릭의 제약
____6.6.1 기본 타입 인수를 사용할 수 없다
____6.6.2 실행 시간에는 모든 타입이 로 형태다
____6.6.3 타입 변수를 인스턴스화할 수 없다
____6.6.4 매개변수화된 타입의 배열을 생성할 수 없다
____6.6.5 정적 컨텍스트에서는 클래스 타입 변수가 유효하지 않다
____6.6.6 메서드가 소거 후 충돌하지 않을 수도 있다
____6.6.7 예외와 제네릭
__6.7 리플렉션과 제네릭
____6.7.1 Class[T] 클래스
____6.7.2 가상 머신에 있는 제네릭 타입 정보
__연습문제

7장 컬렉션
__7.1 컬렉션 프레임워크 개요
__7.2 반복자
__7.3 집합
__7.4 맵
__7.5 기타 컬렉션
____7.5.1 프로퍼티
____7.5.2 비트 집합
____7.5.3 열거 집합과 열거 맵
____7.5.4 스택, 큐, 덱, 우선순위 큐
____7.5.5 약한 해시 맵
__7.6 뷰
____7.6.1 작은 컬렉션
____7.6.2 범위
____7.6.3 수정 불가 뷰
__연습문제

8장 스트림
__8.1 반복에서 스트림 연산으로 전환
__8.2 스트림 생성
__8.3 filter, map, flatMap 메서드
__8.4 서브스트림 추출과 스트림 결합
__8.5 기타 스트림 변환
__8.6 단순 리덕션
__8.7 옵션 타입
____8.7.1 옵션 값을 사용하는 방법
____8.7.2 옵션 값을 사용하지 않는 방법
____8.7.3 옵션 값 생성
____8.7.4 flatMap으로 옵션 값 함수 합성
____8.7.5 옵션 값을 스트림으로 변환
__8.8 결과 모으기
__8.9 맵으로 모으기
__8.10 그루핑과 파티셔닝
__8.11 다운스트림 컬렉터
__8.12 리덕션 연산
__8.13 기본 타입 스트림
__8.14 병렬 스트림
__연습문제

9장 입출력 처리
__9.1 입출력 스트림, 리더와 라이터
____9.1.1 스트림 얻기
____9.1.2 바이트 읽기
____9.1.3 바이트 쓰기
____9.1.4 문자 인코딩
____9.1.5 텍스트 입력
____9.1.6 텍스트 출력
____9.1.7 바이너리 데이터 읽기 및 쓰기
____9.1.8 임의 접근 파일
____9.1.9 메모리 맵 파일
____9.1.10 파일 잠금
__9.2 경로, 파일, 디렉터리
____9.2.1 경로
____9.2.2 파일과 디렉터리 생성
____9.2.3 파일 복사, 이동, 삭제
____9.2.4 디렉터리 엔트리 방문
____9.2.5 ZIP 파일 시스템
__9.3 HTTP 커넥션
____9.3.1 URLConnection과 HttpURLConnection 클래스
____9.3.2 HTTP 클라이언트 API
__9.4 정규 표현식
____9.4.1 정규 표현식 문법
____9.4.2 일치 항목 한 개 찾기
____9.4.3 모든 일치 항목 찾기
____9.4.4 그룹
____9.4.5 구분자로 분리
____9.4.6 일치 항목 교체
____9.4.7 플래그
__9.5 직렬화
____9.5.1 Serializable 인터페이스
____9.5.2 일시적인 인스턴스 변수
____9.5.3 readObject와 writeObject 메서드
____9.5.4 readResolve와 writeReplace 메서드
____9.5.5 버전 관리
__연습문제

10장 병행 프로그래밍
__10.1 병행 태스크
____10.1.1 태스크 실행
____10.1.2 퓨처
__10.2 비동기 계산
____10.2.1 완료 가능한 퓨처
____10.2.2 완료 가능한 퓨처 합성
____10.2.3 사용자 인터페이스 콜백에서 장시간 수행하는 태스크
__10.3 스레드 안전성
____10.3.1 가시성
____10.3.2 경쟁 조건
____10.3.3 안전한 병행성을 실현하는 전략
____10.3.4 불변 클래스
__10.4 병렬 알고리즘
____10.4.1 병렬 스트림
____10.4.2 병렬 배열 연산
__10.5 스레드 안전 자료 구조
____10.5.1 병행 해시 맵
____10.5.2 블로킹 큐
____10.5.3 기타 스레드 안전 자료 구조
__10.6 원자적 카운터와 누산기
__10.7 잠금과 조건
____10.7.1 잠금
____10.7.2 synchronized 키워드
____10.7.3 조건 대기
__10.8 스레드
____10.8.1 스레드 시작
____10.8.2 스레드 인터럽션
____10.8.3 스레드 로컬 변수
____10.8.4 기타 스레드 프로퍼티
__10.9 프로세스
____10.9.1 프로세스 생성
____10.9.2 프로세스 실행
____10.9.3 프로세스 핸들
__연습문제

11장 애너테이션
__11.1 애너테이션 사용
____11.1.1 애너테이션 요소
____11.1.2 다중 애너테이션과 반복 애너테이션
____11.1.3 선언에 애너테이션 붙이기
____11.1.4 타입 사용에 애너테이션 붙이기
____11.1.5 수신자를 명확하게 지정
__11.2 애너테이션 정의
__11.3 표준 애너테이션
____11.3.1 컴파일용 애너테이션
____11.3.2 리소스 관리용 애너테이션
____11.3.3 메타애너테이션
__11.4 실행 시간에 애너테이션 처리
__11.5 소스 수준 애너테이션 처리
____11.5.1 애너테이션 처리기
____11.5.2 언어 모델 API
____11.5.3 애너테이션으로 소스 코드 생성
__연습문제

12장 날짜와 시간 API
__12.1 타임 라인
__12.2 지역 날짜
__12.3 날짜 조정기
__12.4 지역 시간
__12.5 구역 시간
__12.6 포매팅과 파싱
__12.7 레거시 코드와 상호 작동
__연습문제

13장 국제화
__13.1 로케일
____13.1.1 로케일 지정
____13.1.2 기본 로케일
____13.1.3 표시 이름
__13.2 숫자 형식
__13.3 통화
__13.4 날짜와 시간 포매팅
__13.5 컬레이션과 정규화
__13.6 메시지 포매팅
__13.7 리소스 번들
____13.7.1 리소스 번들 구성
____13.7.2 번들 클래스
__13.8 문자 인코딩
__13.9 프레퍼런스
__연습문제

14장 컴파일링과 스크립팅
__14.1 컴파일러 API
____14.1.1 컴파일러 호출
____14.1.2 컴파일 태스크 실행
____14.1.3 메모리에서 소스 파일 읽기
____14.1.4 메모리에 바이트 코드 작성
____14.1.5 진단 정보 캡처
__14.2 스크립팅 API
____14.2.1 스크립팅 엔진 얻기
____14.2.2 바인딩
____14.2.3 입력과 출력 재지정
____14.2.4 스크립팅 함수와 메서드 호출
____14.2.5 스크립트 컴파일
__14.3 Nashorn 스크립팅 엔진
____14.3.1 명령줄에서 Nashorn 실행
____14.3.2 게터, 세터, 오버로드된 메서드 호출
____14.3.3 자바 객체 생성
____14.3.4 자바스크립트와 자바의 문자열
____14.3.5 숫자
____14.3.6 배열 다루기
____14.3.7 리스트와 맵
____14.3.8 람다
____14.3.9 자바 클래스 확장과 자바 인터페이스 구현
____14.3.10 예외
__14.4 Nashorn을 이용한 셸 스크립팅
____14.4.1 셸 명령 실행
____14.4.2 문자열 인터폴레이션
____14.4.3 스크립트 입력
__연습문제

15장 자바 플랫폼 모듈 시스템
__15.1 모듈 개념 잡기
__15.2 모듈 이름 짓기
__15.3 모듈식 “Hello, World!” 프로그램
__15.4 모듈 요구
__15.5 패키지 익스포트
__15.6 모듈과 리플렉션을 이용한 접근
__15.7 모듈식 JAR
__15.8 자동 모듈과 이름 없는 모듈
__15.9 마이그레이션용 명령줄 플래그
__15.10 전이적 요구 사항과 정적 요구 사항
__15.11 한정된 익스포트와 개방
__15.12 서비스 로드
__15.13 모듈 작업용 도구
__연습문제

찾아보기 

역자 소개

01. 반품기한
  • 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
  • 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
02. 반품 배송비
반품 배송비
반품사유 반품 배송비 부담자
단순변심 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다.
상품의 불량 또는 오배송 고객 부담이 아닙니다.
03. 배송상태에 따른 환불안내
환불안내
진행 상태 결제완료 상품준비중 배송지시/배송중/배송완료
어떤 상태 주문 내역 확인 전 상품 발송 준비 중 상품이 택배사로 이미 발송 됨
환불 즉시환불 구매취소 의사전달 → 발송중지 → 환불 반품회수 → 반품상품 확인 → 환불
04. 취소방법
  • 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
  • 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
05. 환불시점
환불시점
결제수단 환불시점 환불방법
신용카드 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) 신용카드 승인취소
계좌이체 실시간 계좌이체 또는 무통장입금
취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준)
계좌입금
휴대폰 결제 당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소
전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준)
당일취소 : 휴대폰 결제 승인취소
익월취소 : 계좌입금
포인트 취소 완료 후, 당일 포인트 적립 환불 포인트 적립
06. 취소반품 불가 사유
  • 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
  • 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
  • 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
  • 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
  • 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
  • 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.

환불불가
상품군 취소/반품 불가사유
의류/잡화/수입명품 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우
계절상품/식품/화장품 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
가전/설치상품 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.)
자동차용품 상품을 개봉하여 장착한 이후 단순변심의 경우
CD/DVD/GAME/BOOK등 복제가 가능한 상품의 포장 등을 훼손한 경우
내비게이션, OS시리얼이 적힌 PMP 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우
노트북, 테스크탑 PC 등 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우