품목정보
발행일 | 2022년 09월 05일 |
---|---|
쪽수, 무게, 크기 | 1008쪽 | 1776g | 183*235*40mm |
ISBN13 | 9791169210027 |
ISBN10 | 1169210023 |
발행일 | 2022년 09월 05일 |
---|---|
쪽수, 무게, 크기 | 1008쪽 | 1776g | 183*235*40mm |
ISBN13 | 9791169210027 |
ISBN10 | 1169210023 |
____지은이 글 ____이 책의 내용 ____이 책의 구성 ____학습 지원 안내 PART 01 자바 언어 기초 Chapter 01 자바 시작하기 1.1 프로그래밍 언어와 자바 1.2 운영체제별 JDK 설치 1.3 윈도우 환경 변수 설정 1.4 맥OS 환경 변수 설정 1.5 바이트코드 파일과 자바 가상 머신 1.6 소스 작성부터 실행까지 1.7 이클립스 설치 1.8 이클립스 프로젝트 생성 1.9 이클립스 소스 작성부터 실행까지 1.10 코드 용어 이해 1.11 코드 주석 달기 1.12 실행문과 세미콜론 확인문제 Chapter 02 변수와 타입 2.1 변수 선언 2.2 정수 타입 2.3 문자 타입 2.4 실수 타입 2.5 논리 타입 2.6 문자열 타입 2.7 자동 타입 변환 2.8 강제 타입 변환 2.9 연산식에서 자동 타입 변환 2.10 문자열을 기본 타입으로 변환 2.11 변수 사용 범위 2.12 콘솔로 변수값 출력 2.13 키보드 입력 데이터를 변수에 저장 확인문제 Chapter 03 연산자 3.1 부호/증감 연산자 3.2 산술 연산자 3.3 오버플로우와 언더플로우 3.4 정확한 계산은 정수 연산으로 3.5 나눗셈 연산 후 NaN과 Infinity 처리 3.6 비교 연산자 3.7 논리 연산자 3.8 비트 논리 연산자 3.9 비트 이동 연산자 3.10 대입 연산자 3.11 삼항(조건) 연산자 3.12 연산의 방향과 우선순위 확인문제 Chapter 04 조건문과 반복문 4.1 코드 실행 흐름 제어 4.2 if 문 4.3 switch 문 4.4 for 문 4.5 while 문 4.6 do-while 문 4.7 break 문 4.8 continue 문 확인문제 PART 02 객체 지향 프로그래밍 Chapter 05 참조 타입 5.1 데이터 타입 분류 5.2 메모리 사용 영역 5.3 참조 타입 변수의 ==, != 연산 5.4 null과 NullPointerException 5.5 문자열(String) 타입 5.6 배열(Array) 타입 5.7 다차원 배열 5.8 객체를 참조하는 배열 5.9 배열 복사 5.10 배열 항목 반복을 위한 향상된 for 문 5.11 main( ) 메소드의 String[ ] 매개변수 용도 5.12 열거(Enum) 타입 확인문제 Chapter 06 클래스 6.1 객체 지향 프로그래밍 6.2 객체와 클래스 6.3 클래스 선언 6.4 객체 생성과 클래스 변수 6.5 클래스의 구성 멤버 6.6 필드 선언과 사용 6.7 생성자 선언과 호출 6.8 메소드 선언과 호출 6.9 인스턴스 멤버 6.10 정적 멤버 6.11 final 필드와 상수 6.12 패키지 6.13 접근 제한자 6.14 Getter와 Setter 6.15 싱글톤 패턴 확인문제 Chapter 07 상속 7.1 상속 개념 7.2 클래스 상속 7.3 부모 생성자 호출 7.4 메소드 재정의 7.5 final 클래스와 final 메소드 7.6 protected 접근 제한자 7.7 타입 변환 7.8 다형성 7.9 객체 타입 확인 7.10 추상 클래스 7.11 봉인된 클래스 확인문제 Chapter 08 인터페이스 8.1 인터페이스 역할 8.2 인터페이스와 구현 클래스 선언 8.3 상수 필드 8.4 추상 메소드 8.5 디폴트 메소드 8.6 정적 메소드 8.7 private 메소드 8.8 다중 인터페이스 구현 8.9 인터페이스 상속 8.10 타입 변환 8.11 다형성 8.12 객체 타입 확인 8.13 봉인된 인터페이스 확인문제 Chapter 09 중첩 선언과 익명 객체 9.1 중첩 클래스 9.2 인스턴스 멤버 클래스 9.3 정적 멤버 클래스 9.4 로컬 클래스 9.5 바깥 멤버 접근 9.6 중첩 인터페이스 9.7 익명 객체 확인문제 Chapter 10 라이브러리와 모듈 10.1 라이브러리 10.2 모듈 10.3 응용프로그램 모듈화 10.4 모듈 배포용 JAR 파일 10.5 패키지 은닉 10.6 전이 의존 10.7 집합 모듈 10.8 리플렉션 허용 10.9 자바 표준 모듈 확인문제 Chapter 11 예외 처리 11.1 예외와 예외 클래스 11.2 예외 처리 코드 11.3 예외 종류에 따른 처리 11.4 리소스 자동 닫기 11.5 예외 떠넘기기 11.6 사용자 정의 예외 확인문제 PART 03 라이브러리 활용 Chapter 12 java.base 모듈 12.1 API 도큐먼트 12.2 java.base 모듈 12.3 Object 클래스 12.4 System 클래스 12.5 문자열 클래스 12.6 포장 클래스 12.7 수학 클래스 12.8 날짜와 시간 클래스 12.9 형식 클래스 12.10 정규 표현식 클래스 12.11 리플렉션 12.12 어노테이션 확인문제 Chapter 13 제네릭 13.1 제네릭이란? 13.2 제네릭 타입 13.3 제네릭 메소드 13.4 제한된 타입 파라미터 13.5 와일드카드 타입 파라미터 확인문제 Chapter 14 멀티 스레드 14.1 멀티 스레드 개념 14.2 메인 스레드 14.3 작업 스레드 생성과 실행 14.4 스레드 이름 14.5 스레드 상태 14.6 스레드 동기화 14.7 스레드 안전 종료 14.8 데몬 스레드 14.9 스레드풀 확인문제 Chapter 15 컬렉션 자료구조 15.1 컬렉션 프레임워크 15.2 List 컬렉션 15.3 Set 컬렉션 15.4 Map 컬렉션 15.5 검색 기능을 강화시킨 컬렉션 15.6 LIFO와 FIFO 컬렉션 15.7 동기화된 컬렉션 15.8 수정할 수 없는 컬렉션 확인문제 Chapter 16 람다식 16.1 람다식이란? 16.2 매개변수가 없는 람다식 16.3 매개변수가 있는 람다식 16.4 리턴값이 있는 람다식 16.5 메소드 참조 16.6 생성자 참조 확인문제 Chapter 17 스트림 요소 처리 17.1 스트림이란? 17.2 내부 반복자 17.3 중간 처리와 최종 처리 17.4 리소스로부터 스트림 얻기 17.5 요소 걸러내기(필터링) 17.6 요소 변환(매핑) 17.7 요소 정렬 17.8 요소를 하나씩 처리(루핑) 17.9 요소 조건 만족 여부(매칭) 17.10 요소 기본 집계 17.11 요소 커스텀 집계 17.12 요소 수집 17.13 요소 병렬 처리 확인문제 PART 04 데이터 입출력 Chapter 18 스트림 요소 처리 18.1 입출력 스트림 18.2 바이트 출력 스트림 18.3 바이트 입력 스트림 18.4 문자 입출력 스트림 18.5 보조 스트림 18.6 문자 변환 스트림 18.7 성능 향상 스트림 18.8 기본 타입 스트림 18.9 프린트 스트림 18.10 객체 스트림 18.11 File과 Files 클래스 확인문제 Chapter 19 네트워크 입출력 19.1 네트워크 기초 19.2 IP 주소 얻기 19.3 TCP 네트워킹 19.4 UDP 네트워킹 19.5 서버의 동시 요청 처리 19.6 JSON 데이터 형식 19.7 TCP 채팅 프로그램 확인문제 Chapter 20 데이터베이스 입출력 20.1 JDBC 개요 20.2 DBMS 설치 20.3 Client Tool 설치 20.4 DB 구성 20.5 DB 연결 20.6 데이터 저장 20.7 데이터 수정 20.8 데이터 삭제 20.9 데이터 읽기 20.10 프로시저와 함수 호출 20.11 트랜잭션 처리 20.12 게시판 구현 확인문제 ___찾아보기 [부록] (무료 특별판 e-Book 및 PDF 제공) Appendix 01 데이터베이스 입출력(MySQL용) 20.1 JDBC 개요 20.2 DBMS 설치 20.3 Client Tool 설치 20.4 DB 구성 20.5 DB 연결 20.6 데이터 저장 20.7 데이터 수정 20.8 데이터 삭제 20.9 데이터 읽기 20.10 트랜잭션 처리 20.11 게시판 구현 Appendix 02 Java UI - Swing 01 Swing 소개 02 이벤트 디스패칭 스레드 03 Swing 컨테이너 04 컴포넌트 배치 05 이벤트 처리 06 버튼 컴포넌트 07 텍스트 컴포넌트 08 리스트 컴포넌트 09 테이블 컴포넌트 10 트리 컴포넌트 11 메뉴 컴포넌트 12 툴바 컴포넌트 13 다이얼로그 14 2D 그래픽스 15 Swing 과제 Appendix 03 Java UI - JavaFX 01 JavaFX 개요 02 JavaFX 프로젝트 생성 및 실행 03 JavaFX 레이아웃 04 JavaFX 컨테이너 05 JavaFX 이벤트 처리 06 JavaFX 속성 감시와 바인딩 07 JavaFx 컨트롤 08 JavaFX 메뉴 바와 툴바 09 JavaFX 다이얼로그 10 JavaFX CSS 스타일 11 JavaFX 스레드 UI 변경 12 장면 이동과 애니메이션 13 JavaFX 과제 Appendix 04 NIO 01 NIO 소개 02 파일과 디렉토리 03 버퍼 04 파일 입출력 05 파일 비동기 입출력 06 TCP 네트워크 입출력 07 TCP 비동기 네트워크 입출력 08 UDP 네트워크 입출력 09 NIO 과제 |
** 이 서평은 YES24 리뷰어 클럽 서평단 자격으로 작성한 리뷰입니다. **
백엔드 언어에는 여러 가지가 있지만, 웹에 강하고 멀티 스레드에 강하며, 객체지향의 대표라고 할 수 있는 언어를 뽑자면 당연히 JAVA(자바)이다. JAVA(자바)는 내가 오랜 시간 현업에서 일하면서 가장 많이 접하는 언어였고, 해를 거듭할수록 버전에 따라 쓸 수 있는 기술들을 많이 선보였다. 필자는 JAVA 8부터 시작했는데, 이 책을 통해서 JAVA 17(현재 LTS) 버전까지 학습할 수 있었다. JAVA 17의 새롭게 공개된 개념 중 큰 특징은 난수 생성 API 추가, 봉인된(sealed) 클래스 & 인터 페이스, 스위치를 통한 패턴 매칭 등 있고, JAVA 1.0에서 Duplicate 된 부분들도 함께 있었다.
전반적으로 기초에 충실하다는 느낌을 많이 받았으며, 자세한 그림 설명(벤다이어그램, 내부 구조)도 눈에 잘 들어왔고, 동영상 강의와 함께 카페에도 Q&A 게시판을 운영하고 있어서 질의응답도 활용하기 좋았다.
이 책은 기초적인 것도 탄탄히 다루고 있지만, 데이터베이스 연결 작업이나 예제를 통해 현업에서 사용되는 코딩 팁들도 고스란히 녹아 있어 개발적 측면에서도 현업과 크게 이질감이 없었고, 완성도도 높으며, 코드의 흐름을 잘 이해하는데 많은 도움이 되었다.
마지막으로 취업을 준비하거나 백엔드 쪽에 관심이 많은 분들에게 이 책을 추천하고 싶고, 특히 객체지향에 관해서 깊게 알고, 적용하고 싶은 분들에게 추천한다.
비슷한 류의 자바 개념서를 이미 가지고 있지만 해당 책으로 스터디를 하기 위해 구매하였습니다 :3 꽤 충실한 기본서로 도움이 되었습니다. 장점을 짚어보면,
모던 자바 관련 내용이 나오는것이 좋습니다. 개념서인 만큼 다른 책들에 비해 이해하기 쉽게 설명합니다. 다만 여러 내용을 다루는 만큼 책은 두꺼워서 가져다니기 불편하다는 단점은 있습니다. (제본 추천해요 ..!)
문제 난이도가 적정합니다. 대부분의 답은 책에서 찾을수 있을 정도의 난이도고, 너무 어렵거나 너무 쉽지 않았기 때문에 복습하기에 적절하다고 느꼈습니다.
부록 내용이 도움됩니다. 실무와 관련된 JDBC같은 내용이라 좋았습니다.
괜찮은 자바 독학서라고 생각합니다 :3
(1) 초판의 독자입니다. 개정판이 나왔기에, 빨리 훑어보고 있습니다. 7장 인터페이스에 이르렀는데, 개정판도 여전히 좋은 책이네요. 당연히 강추합니다.
(2) 입문만을 목적으로 한 책은 너무 초보적인 내용에서 끝나는데, 이 책은 중급으로 나아가기 위한 교두보 역할도 잘 해 줍니다. 저는 3권짜리 개정판을 기대했는데, 독자들의 주머니 사정을 고려했는지(?) 일부는 줄이고 많은 것은 eBook 형태의 부록으로 남겼네요.
(3) 7장(상속) 11절 봉인된 클래스의 경우, 오류 내지 오해의 소지가 있어 보여, sealed에 대해 제가 추가 테스트한 결과를 여기에 첨부합니다.
-------------------------------
(A) 초판에서는 일반 클래스, final 클래스를 소개합니다. 일반 클래스를 상속할 수는 있지만, 상속을 하지 못하게 만들려면 final 클래스로 만들면 됩니다..여기까지가 초판의 스토리입니다. (여기에서는 논리 전개상 abstract class를 언급하지 않겠습니다.)
(B) 그런데, 일반 클래스는 무제한 상속을 허용하고 있고, final 클래스는 무조건 금지하고 있어서, 그 중간 정도의 유연성이 필요해 졌습니다. 그래서 sealed 클래스가 등장합니다.
(C) 개정판에서 일반 클래스, final 클래스에 추가적으로 sealed 클래스도 소개됩니다.
(D) sealed 클래스를 상속하여 서브클래스를 만들 수 있습니다. 대신 sealed 클래스를 상속하려면, 명확하게 sealed, non-sealed, final 클래스 중 하나로 만들어야 합니다. 예컨데,
sealed class A {}
class B extends A {} // ERROR. 서브클래스 B의 정체를 분명히 합시다. sealed, non-sealed or final modifiers expected
sealed class S extends A {} // OK. S도 여전히 sealed 클래스.
non-sealed class N extends A {} // OK. 더 이상 sealed 클래스가 아님. 즉, N은 일반 클래스가 됨.
final class F extends A {} // OK. F는 final 클래스가 됨.
(E) 책에서 언급한 permits 부분은 오해를 일으키기 쉽습니다. 다음과 같이 부연 설명합니다.
permits 구문은 사용해도, 사용하지 않아도 됩니다. 위 (D)의 예에서 class A는 permits 구문을 사용하지 않았습니다. 따라서, S, N, F 등 임의의 서브클래스를 만들 수 있었습니다. 그런데 특정 서브클래스만 만들 수 있게 단속하고 싶다면? 이 때 permit 구문이 등장합니다. 예를 들어 보겠습니다.
sealed class A permits X,Y {}
final class X extends A {} // OK <-- permits X
sealed class Y extends A {} // OK <-- permits Y
non-sealed class Z extends A {} // ERROR: permits 목록에 Z가 없어서 오류
-------------------------------
단1권의 한국어판 자바 책만 선택해야 한다면, 이 개정판을 강추합니다. 참고로, 영어책으로는 Kishori Sharan 시리즈을 추천합니다.