로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

『손안의 자바: 초보자를 위한 자바 프로그래밍의 핵심 + 알파』

   
지은이 김지훈, 이현우   |   출판사 에이콘  |   발행일 2018년 07월 17일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 30,000원27,000원 10%
마일리지 5% 1,500원
발행일 2018-07-17
ISBN 1161751831 | 9791161751832
기타정보 국내서 | 660쪽
예상출고일 1일 (근무일기준)
배송비 무료배송
   
프로그래밍언어
   
 

★ 요약 ★



정보시스템 감리를 통해 70여 개 이상의 프로젝트 소스 코드를 검사했다. 이 소스코드 검사를 통해 실제 프로젝트에서 사용하는 문법이 무엇이며, 개발자들이 잘 실수하는 것이 무엇인지 알게 됐다. 본 책은 이러한 경험을 바탕으로 작성한 책이다. 초보 개발자들에게 실제 프로젝트에서 사용하는 핵심 문법 위주로 자바를 소개하며, 최신 버전의 자바의 기능과 관련해 앞으로 사용될 것 같다고 판단되는 장치들을 포함시켰다. 많은 자바 입문자가 이 책을 읽고 효율적인 길을 걸을 수 있기를 바란다.





★ 이 책에서 다루는 내용 ★



█ 초보자를 위한 자바 문법 핵심 + 알파

█ 실제 프로젝트에서 사용하는 문법 위주의 자바 프로그래밍

█ 좋은 프로그램을 위한 기본적인 가이드

█ 개발자들이 실수하기 쉬운 개념

█ 정부가 주관하는 수십 개의 프로젝트에서 사용하지 않는 문법 제외





★ 이 책의 대상 독자 ★



█ 프로그래밍 경험이 없는 자바 입문자

█ 개발 관련 경험이 있으면서 자바를 시작하는 개발자

█ 기존에 작성된 코드를 생각 없이 사용하는 개발자





★ 지은이의 말 ★



필자가 자바를 처음 접한 시기는 벤처 붐이 한창 불던 2000년 초반이었다. KDN을 그만두고 벤처에서 일하고 있었는데, Brew라는 모바일 플랫폼에서 C언어로 메모리 할당, 해제를 하면서 한 땀 한 땀 프로그램을 작성하고 있었다. 그런데 그때 후배가 자기가 만들었다며 핸드폰에서 돌아가는 자바 프로그램을 보여줬다. 후배에게 메모리 관리는 어떻게 했는지 물어봤다. 그런데 그 후배는 눈을 깜빡이며 “메모리 관리? 그게 뭐예요?”하는 것이 아닌가. 그렇다. 자바는 메모리 관리가 필요 없었다.

처음 자바를 접했을 때 받은 인상은 한문만 사용하던 양반이 한글을 접했을 때의 느낌과 비슷했다. 그 당시에는 C는 전문가들이 사용하는 언어, 자바는 IT 노동자(?)들이 사용하는 언어 정도로 치부했다. 그러나 세월이 흘러 이제는 자바가 대세를 차지하고 있다. 변화가 느리다는 금융권에서 조차도 이제는 자바로 계정 시스템을 만드는 것이 흔한 일이 됐다. 필자 역시 대부분의 프로젝트를 자바로 수행하고 있다.

직장생활을 하며 자바를 이용해 대부분의 프로그램을 작성해왔지만, 책을 쓰는 것은 쉽지 않은 일이었다. 실무 경험이 많기는 하지만 그걸 전달하는 것은 어려운 작업이었다. 왜 이런 말도 있지 않은가. “그냥 내가 짜고 말지.” 하지만 작업을 끝내고 나니 단순히 지식을 글로 정리한 것뿐 아니라 스스로 쓰면서 배운 부분이 있었다는 생각이 든다.

처음 자바를 접한 이후 자바의 버전도 많이 높아졌다. 지금 자바를 보고 있자니, 어느 날 부쩍 다 커버린 자녀를 보는 느낌이랄까? 스레드 프로그램을 작성할 때 블로킹 큐까지 한 자 한 자 코딩을 하던 시절이 있었는데 이제는 자바가 제공하는 기본 기능을 사용하면 단 몇 줄로 끝낼 수 있게 됐다. 하긴 맨 처음 안드로이드 책을 쓸 때는 놀아주지 않는다고 칭얼대던 아이가 이제는 마감을 지키라고 닦달하는 청소년으로 컸으니 자바도 그럴 만하다.

이 책의 목표는 가능한 적은 분량 안에 실제 프로젝트에서 사용되고 있는 자바 문법과 API 그리고 프로그래밍 가이드를 담는 것이다. 자바 책이 날로 두꺼워지고 있는 요즘 이런 생각을 한 이유는 필자의 직업 때문이다. 필자는 LG CNS와 KT ds에서 소프트웨어 아키텍트 역할을 수행한 후, 현재는 TI 감리 법인에 근무하고 있다.

정보시스템 감리 직업의 특성상 1년이면 10~20여 개의 프로젝트를 점검한다. 필자는 최근 4년 동안 약 70여 개가 넘는 프로젝트를 감리했으며, 점검한 시스템의 소스는 약 100여 개에 달한다. 그러다 보니 자바 프로그래밍 요소 중 실제로 사용되고 있는 것들이 무엇인지 자연스럽게 경험하게 됐다. 그 경험을 바탕으로 자바 프로그래밍 중 실무에 사용되는 요소들만 책에 담을 수 있었다.

이 책은 자바 8까지의 내용을 주로 다루며, 그 이후에 버전에 대해서는 많이 다루지 않는다. 자바 입문자 대상으로는 불필요하다고 판단했기 때문이다. 그러나 자바 9를 일부 사용하기 때문에 개발 환경은 자바 9를 사용한다.



저자 김 지 훈 드림



직장생활을 하면서 초보자가 쉽게 접할 수 있는 실무경험이 담긴 자바 책을 집필하겠다는 욕심이 있었지만 책을 집필하기가 쉽지 않았던 것 같다. 이 책이 처음 개발을 하는 초보자들을 위해 집필됐음을 알아줬으면 좋겠다. 고민하고 집필한 내용들이 독자들에게 전달돼 실무 현장에서 도움이 될 것이라고 생각한다.

자바는 매년 변화해왔고 느리지만 성장해왔다. 필자가 자바를 처음 접했을 때와 이 책을 읽는 독자들이 접하는 현재의 시점과는 많은 차이가 있다. 예전에는 무엇인가를 좀 더 고민하고 코드를 길게 작성하던 일련의 일들이 이젠 간단한 한 줄 정도의 코딩으로도 마무리가 된다. 예전보다 쉬워졌다고 하지만 그래도 여전히 시작하는 이들에게는 어려움이 있을 것이다. 필자도 시작할 때는 벽에 부딪힌 듯 막막했고, 도와주는 사람도 없이 개발 서적을 가지고 학습을 했다. 그때 필자와 같은 사람들이 이 책의 독자층이라고 생각하고 집필했다.



저자 이 현 우 드림

1부. 자바 기본



1장. 자바를 시작하며



__자바란?

__개발 환경 구축하기

__자바에서의 명명 규칙





2장. 변수와 상수



__변수의 이해와 활용

__변수의 타입

__논리형 - boolean

__문자형 - char

__정수형 - byte, short, int, long

__실수형 - float, double

__형변환

__상수





3장. 연산자



__연산자 종류와 우선순위

__단항 연산자

____논리 부정 연산자 !

____부호 연산자 +, -

____비트 전환 연산자 ~

____증감 연산자 + + , - -

__산술 연산자

____나머지 연산자 %

____사칙 연산자 +, -, , /

____시프트 연산자 <<, >>, >>>

__비교 연산자

____대소비교 연산자 <, >, <=, >=

____등가비교 연산자 ==, !=

__논리 연산자

____논리 연산자 &&, ||

____비트 연산자 &, |, ^





4장. 실행흐름의 컨트롤



__조건문 if문, switch문

____if문

____switch문

__반복문 for, while, do~while

____do~while문

____for문

____while문

__break와 continue문

____break문

____continue문

__변수의 범위





5장. 배열



__배열(array)의 필요성

__배열의 선언과 생성 그리고 초기화

__배열의 사용

__배열의 복사

__다차원 배열

__가변 배열

__배열을 벗어난 인덱스

__System.arraycopy와 매뉴얼 복사 중 누가 빠른가?

__Arrays - 배열을 위한 유틸 클래스





6장. 객체 지향 프로그래밍의 개념



__객체 지향 프로그래밍이란?

__객체

__객체 간 상호작용

__캡슐화

__객체와 클래스 그리고 객체 참조자





7장. 클래스, 변수,메소드



__자바 10에서의 지역 변수 타입 추론

__클래스 선언

__클래스 사용

__클래스 구성 요소

__필드(멤버 변수)

__필드 선언

__필드 사용

__메소드

____Void

__메소드 오버로딩

__생성자





8장. 패키지와 임포트



__패키지

__임포트(import)





9장. 상속과 오버라이딩 그리고 다형성



__상속의 개념

__상속

__오버라이딩

__다형성

__상속과 생성자

__상속관계에서의 메소드 호출 순서





10장. 제어자



__접근 제어자

____Private

____Protected

____Public

__프로그래밍 가이드 - 접근 제어자의 엄격한 적용

__프로그래밍 가이드 - 멤버변수에 대한 직접 접근을 막아라

__static 제어자

__정적 메소드의 재정의 불가

__final 제어자





11장. 추상 클래스와 인터페이스



__추상 클래스

__인터페이스

__인터페이스를 사용한 다중상속

__자바 8 이후의 인터페이스 변화

____인터페이스 private 메소드와 인터페이스 private 정적 메소드

____인터페이스 디폴트(default) 메소드

____인터페이스 정적(static) 메소드

__자바 8 이후의 인터페이스를 사용한 다중상속

__자바8 이후의 ::를 사용한 메소드 참조 그리고 함수형 인터페이스

____빌트인 함수형 인터페이스

____함수형 인터페이스





12장. 중첩 클래스



__중첩 클래스 사용 이유

__중첩 클래스 분류

__내부 클래스

__정적 내부 클래스

__메소드 로컬 내부 클래스

__익명 내부 클래스

__유사 중첩 클래스





13장. 오류 처리



__오류 처리 소개

__오류 클래스 구조 및 기본 동작 방식

__예외 캐치 처리 순서

__비즈니스 예외

__실 프로젝트에서 많이 사용되는 예외 처리 방안

__finally 문장

__try-with-resources 문장

__인터페이스나 추상 클래스에서의 예외 쓰로우 선언





14장. 자주 사용하는 자바 기본 API



__Object 클래스

____clone()

____toEquals()

____toString()

____프로그래밍 가이드 - Object의 toString()을 재정의하라

__String 클래스

__Math 클래스

__래퍼 클래스

__Random 클래스

__java.util.regex 패키지

__BigInteger

__BigDecimal

__Calendar와 Date 그리고 DateFormat

__자바 8부터 지원하는 새로운 날짜 지원 API

____날짜 및 시간 객체에서 정보 조회하기

____날짜 및 시간 알아내기

____날짜와 시간 더하거나 빼기

__날짜와 시간 변경하기

__특정 날짜 계산하기

____Duration을 사용한 초, 나노초 기반 차이

____Period를 사용한 날짜 기반 차이

____날짜 및 시간 비교

____날짜 및 시간 차이 계산

____날짜 포맷팅

__ZonedDateTime으로 세계시 다루기





15장. 제네릭



__들어가면서

__제네릭의 필요성

__제네릭을 이용한 첫번째 클래스 작성하기

__제네릭 동작 방식

__제네릭 기본 문법

____구체화 타입의 자식 타입 사용 가능

____정적 요소에 제네릭 타입 사용 불가

____제네릭 클래스의 new 불가

____제네릭 타입 구체화 시 배열 불가

____제네릭 타입에 제약 조건 두기

__제네릭 인터페이스

__제네릭 메소드

__제네릭 와일드카드

__좀 더 복잡한 제네릭 메소드와 와일드카드의 예

____파라미터에는 와일드카드가 없는 경우

____파라미터에 와일드카드가 두개 있는 경우

____파라미터에 와일드카드가 한개 있는 경우

__다이아몬드 연산자





16장. 컬렉션 프레임워크



__HashSet

__ArrayList

__Vector

__HashMap과 Hashtable

__Iterator

__리스트 대 배열

__Comparator를 사용한 목록 정렬하기

__목록에 요소 추가 및 삭제하기

____foreach문에서의 추가 및 삭제 시 예외발생

____Iterator를 사용한 요소 삭제

____인덱스를 사용한 for문에서의 삭제 시 정합성 문제

____인덱스를 사용한 요소 삭제 및 추가





17장. 열거형(Enum 타입)



__들어가면서

__처음 만나는 열거형

__열거형에 데이터 연결하기

__여러 형태의 열거형 정의 방법

__열거형에 관한 유용한 메소드





18장. 어노테이션



__들어가면서

__어노테이션 맛보기

__JDK가 제공하는 표준 어노테이션

__커스텀 어노테이션 작성을 위한 기초 지식

____@Documented

____@Inherited

____@Repeatable

____@Retention

____@Target

__커스텀 어노테이션 작성하기

__프로그래밍 가이드 - 네이밍 규칙보다는 어노테이션을 사용해 식별하라





19장. 람다식



__들어가면서

__람다식 개념

__람다식 활용 예

__함수형 인터페이스

____람다식을 조합하기 위한 빌트인 함수형 인터페이스의 장치

____람다 캡처링





20장. 자바 8의 스트림



__들어가면서

____스트림을 왜 사용하는가?

__스트림 동작 방식

____Stream의 인스턴스 메소드 collect()

____Stream의 인스턴스 메소드 filter()

____Stream의 인스턴스 메소드 map()

____Stream의 인스턴스 메소드 sorted()

__스트림 예제 분석하기

__스트림 좀더 알아보기

__다양한 스트림 메소드

____Collectors.groupingBy() 메소드

____Finding과 Matching 메소드

____foreach 메소드

____Stream의 mapToInt(), mapToLong(), mapToDouble() 메소드

____Stream의 Reduce() 메소드

____병렬처리를 위한 parallelStream

____복합객체의 스트림을 세부 객체의 스트림으로 분해하는 flatMap() 메소드

____중복 요소를 제거하는 메소드 - distinct()

____최대 요소의 개수를 제한하는 메소드 - limit()

____특정 개수를 건너띄는 메소드 - skip()

____필터 기능을 제공하는 메소드 - filter(), distinct(), limit(), skip()





21장. 스레드



__들어가면서

__스레드란?

__동시성와 병렬성

__첫 번째 스레드 프로그램

__다양한 스레드 생성 방법

__스레드 세이프

__동기화 메소드 및 동기화 블록

__멀티스레드 프로그래밍의 일반적인 패턴 - 스레드 풀

__서버(Was)의 스레드 프로그래밍 모델

__스레드 로컬

__결과 값이 있는 동시 수행

__Fork/Join 프레임워크의 필요성

__ForkJoin을 사용한 동시 처리





22장. I/O 스트림 및 파일



__들어가면서

__I/O 스트림 개념

__다양한 I/O 스트림

__FileInputStream

__FileOutputStream

__ByteArrayInputStream /ByteArrayOutputStream

__버퍼링 개념

__BufferedInputStream/BufferedOutputStream

__파일 다루기

____File 생성자

____I/O 스트림 등에서 파일이름 문자열 대신 File 사용하기

____기존 파일에 스트링 덧붙이기

____디렉터리 생성하기

____마지막 수정 날짜 변경하기

____마지막으로 수정된 날짜 구하기

____이름 변경하기

____파일/디렉터리 존재 여부 확인

____파일 사이즈 구하기

____파일 삭제하기

____파일 생성하기





23장. 네트워크 프로그래밍



__들어가면서

__네트워크 환경 이해

____MAC

____라우터

____방화벽

____스위치

__도메인

__TCP/IP 4 계층

__소켓 서버 기본 구조 이해하기

__소켓 클라이언트 프로그램 기본 구조 이해하기

__개선된 소켓 서버 프로그램

__UDP 소개 및 예제





24장. Java NIO



__들어가면서

__NIO 이유

__채널과 버퍼 그리고 셀렉터 개념 알아보기

__버퍼 좀더 알아보기

____버퍼 생성

____버퍼 위치 속성

__채널과 버퍼 사용 패턴

__NIO 소켓 서버 프로그램

__IO vs NIO 선택





2부. 자바 확장



1장. 생성자 관련



__들어가면서

__프로그래밍 가이드 - 생성자 대신 정적 팩토리 메소드 사용을 검토하라

__프로그래밍 가이드 - 생성자 대신 빌더 사용을 검토하라

__프로그래밍 가이드 - 유틸리티 클래스 생성자를 private로 하라





2장. 가비지 컬렉션



__들어가면서

__프로그래밍 가이드 - 쓸모없는 객체참조를 제거하라

__프로그래밍 가이드 - 종결자를 중요 작업에 사용하지 않아야 한다





3장. 객체 복사하기



__들어가면서

__클론을 이용한 복사

____복사 생성자나 복사 정적 팩토리 메소드 사용한 복사방법을 고려하라





4장. 클래스 설계 가이드



__들어가면서

__프로그래밍 가이드 - 가능한 불변 클래스로 설계하라

__프로그래밍 가이드 - 상속보다는 컴포지션을 사용하라





5장. 그 밖의 기타 사항



__클래스패스를 고려한 클래스 실행

__java로 클래스 실행 시 인수 전달하기

__라이브러리란?

__Maven 환경 소개
김지훈

동국대학교 컴퓨터공학과를 나왔으며, 홍익대학교 대학원 컴퓨터공학과에서 시스템 프로그래밍을 전공해 석사 학위를 받았다. LG CNS에서 SW 아키텍트를 수행했으며, KT ds에서 연구원을 지냈고 현재는 정보기술감리원에서 감리사로 근무 중이다. 안드로이드, HTML5, 빅데이터, 보안 분야에서 저술과 번역 작업을 수행했으며, 정보시스템 감리에서 주로 수행하는 분야는 시스템 구조 및 보안 분야이다.



이현우

대한민국 공군 장교로 방공전산서버 운영을 하면서 IT 관련 경력을 시작했다. 이후 LG CNS에서 차세대 응용개발 프로그램을 수행했으며, 모바일 개발에 관심을 가지고 KT ds 연구소의 모바일 플랫폼 개발을 수행했다. 이후 정보시스템감리사 자격증을 취득한 후 한국 공공기관의 정보시스템 감리업무를 수행하고 있으며, IBK기업은행, 삼성생명, 산업은행, 한국전력 등의 많은 공공기관의 감리 업무를 수행했다. IT 강의를 하는 것을 좋아하며 시큐어코딩 및 데이터베이스, 자바프로그램에 대한 강의를 한국전력 및 한국소프트웨어 기술진흥협회(KOSTA), 한국ICT융합협동조합 등에서 수행했다. 최근 화제가 되고 있는 워라벨을 중시하며, 매번 어제보다 나은 오늘이 되기 위해서 노력하지만 매번 부족함을 느끼고 있는 개발자이다.



등록된 서평이 없습니다.
JSP 2.1 웹 프로그래밍(입문에서 완성까지)(SECOND EDITION)...
손진곤
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
SQL 전문가 가이드 [The Guide for SQL Professional](2013 Edition)...
한국데이터베이스진흥원
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
초보자를 위한 C 언어 300제 2판...
김 은 철
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
『Go 마스터하기: 고급 기능을 활용한 실전 애플리케이션 만들기』
미할리스 추칼로스 저
36,000원
(10%↓+5%)
 
『과학 영재를 만드는 아두이노 교실 2/e: 아빠와 함께』
최재철, 마창수 저
27,000원
(10%↓+5%)
 
『C++로 나만의 운영체제 만들기 : 비주얼 스튜디오를 활용한 커널 개발』
박주항 저
36,000원
(10%↓+5%)
 
『라즈베리 파이와 슈퍼컴퓨팅: 병렬처리 시스템 구축 및 과학 프로그래밍 가이드북』
애쉬윈 파얀카 저
22,500원
(10%↓+5%)
 
『신경망 설계 2/e: 주요 신경망 이론과 응용 사례』
마틴 헤이건, 하워드 데무스, 마크 허드슨 빌, 올랜도 헤수스 저
45,000원
(10%↓+5%)
 
이메일주소수집거부