길벗·이지톡

도서 IT전문서/IT입문서 프로그래밍/오픈소스
람다 표현식, 스트림, 개선된 API, JShell, 모듈 가장 빨리 만나는 코어 자바 9
정 가
36,000원
I S B N
9791160504392
출 간
2018-03-30
분 량
584쪽
지 은 이
카이호스트만
난 이 도
초급
옮 긴 이
신경근
부 록
예제소스

모던 자바의 장점을 실무에 빠르게 적용하자!

자바 프로그래머가 알아야 할 모던 자바의 핵심을 다루면서 자바 8과 9의 특징을 짚어준다. 자바 8의 람다 표현식과 스트림 라이브러리, 자바 9의 JShell과 모듈 시스템의 장점을 간결하게 설명한다. 핵심에 집중하여 개념을 빠르게 익히고, 예제 코드를 보면서 프로그래밍 문제 해결 방법을 배운 뒤 실무에 바로 적용할 수 있다.

목차

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 클래스
____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 모듈 작업용 도구
__연습문제

찾아보기
더보기접기

저자

ㆍ지은이 카이호스트만

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

ㆍ옮긴이 신경근

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

보도자료

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.