본문 바로가기
[Review]/Book

[도서 리뷰] 헤드퍼스트 자바 3판

by 해피빈이 2024. 2. 24.

> 진행에 앞서

나는 컴퓨터공학과를 졸업한 학사이다.

졸업 직전 취직을 할 뻔 했지만, 아쉽게도 그렇지 못했고, 계획을 바꿔 1년이 지난 뒤에야 사회생활을 시작하게 되었다.

물론 개발자로 말이다.

학교를 다니면서 컴퓨터와 프로그래밍이 재미있다고 느꼈고, 그래서 개발자를 하고싶은 마음에 자바를 이용해야하는 일을 시작했지만, 좀처럼 자바라는 존재에 대해 머리위에서 이리저리 떠다니는 뭉게구름처럼 자리를 잡지 못하고 흩어져 있었다는 생각이 들었다.

객체지향도 어느정도는 알겠고, 자바도 대략 쓸 줄은 알았으나, 클래스가 무엇인지, 객체의 구체적인 속성이 무엇인지. 그래서 다들 어떤 방식으로 이해를 하고 있으며, 어떤 기반으로 활용해야 하는 것인지 기초가 탄탄하게 쌓아있지 않은듯한 느낌이었다.

 

그러던 중 여러 책을 찾아보다가, 이 책을 발견하고 나의 자바에 대한 개념은 자리를 잡아가기 시작하였다.

그것은 '헤드 퍼스트 자바(개정판)' 이었다.

당시에도 그 책은 2005년에 나온 책이었기에 출간된지 시간이 꽤 흐른 상태였다.(당시는 2009, 2010년 즈음..?)

그럼에도 그 책의 흐름 구성과 설명의 친절함은 너무 강렬하게 내게 다가와서, 누군가 독학이든 개념정리든 자바에 대해 공부하고 싶어한다면, 주저하지 않고 이 책을 권하고 있다.

 

하지만, 이 책에도 단점은 있었으니, 바로 너무 오래되었다는 사실이다. 개발 언어의 발전에 빗대어보면 그때로부터 15년이나 지난 지금은 너무도 긴 시간이 흘렀고, 현재와는 어울리지 않는 내용도 군데군데 찾을 수 있다.

 

그러던 중 개정판을 넘어선 3판을 보게 되었다.

 

> 책에 대한 간단한 정보

앞 표지

 

이 책은 미국식 유머로 가득하다.

그렇다고 실없이 유머로만 가득한 책은 아니고, 그러한 유머를 적절하게 분위기 조성하는데 잘 사용하며, 이 책의 목적대로 길을 잃지 않고 자바에 대해 잘 설명한 책이다.

이 책은 크게 자바 자체에 대한 설명과 자바라면 빼놓을 수 없는 객체지향에 대한 설명, 그리고 실습을 곁들인 응용에 관한 부분으로 이루어져 있다. 표지도 트렌드에 맞게 좀 더 단순하지만, 바로 눈에 띄고 세련되게 만들어 놓았다는 생각이 들어서 만족한다.

 

> 인상깊은 부분들

헤드퍼스트의 친절한 설명

이 책의 설명 스타일이다.

캡슐화를 물론 이 지면의 앞에서 설명했겠지만, 그보다도 왜 캡슐화를 하지 않으면 문제가 되는지 차근차근 설명하면서 캡슐화의 중요성을 강조하고 있다. 누군가 객체를 쉽게 접근해서 허락되지 않은 값을 임의로 변경해버리면, 해당 객체는 의도했던대로 작동하지 않을 것이다. API를 수도 없이 호출하는 현대의 개발환경에서 이런 기본적인 캡슐화를 잘 하지 않은 제품이라면, 매우 난감하다. 사용하는 사람도 객체를 망가뜨리고 싶지는 않을텐데, 너무나 버젓이 오픈되어 있는 프로퍼티를 볼 때면 어디까지 손을 대도 괜찮은 것인가 하는 고민을 하게 만들기 때문이다. 막상 코드를 작성할 때에는 그것을 오픈하든 안하든 크게 차이를 모를 수 있으나, 이것을 사용하는 관점이 되면 크게 차이를 느낄 . 수있는 그것이 캡슐화라는 설명을 아주 친절하고 재미있게 하고 있다. 그것도 손글씨까지 곁들여서 말이다.

 

생각보다 흥미로운 낱말 십자퍼즐

헤드퍼스트 책을 읽으면서 특히 헤드퍼스트 자바에서 재미있다고 생각한 부분이다. 이 외에도 다양한 유형의 퍼즐과 퀴즈가 많아서 재미있지만, 십자퍼즐은 제대로 다 풀려고 노력하다보면 시간이 금방 흘러간다.

아래에 정답은 나와있지만, 묘한 자존심이 발동하여 그것을 보지 않고 풀기 위해 최선의 노력을 다하게 된다. : >

 

스트림에 대한 설명

여기는 3판에 추가된 내용에 해당한다.

개정판이 나왔을 2005년만 하더라도 스트림 개념이 없었다.

아마 그 당시가 JDK 1.5(5.0) 아니면 1.6(6.0)이었을 듯 한데, 그 때의 관심사는 이쪽이 아니었다. 하지만, 2010년대를 지나오며 지금은 모던 언어에서 기본적으로 채택하고 있는 개념이다.

스트림을 얼마나 잘 사용하느냐에 따라 성능적인 부분과 가독성에 대한 부분 모두 이점을 가져올 수 있기 때문에 외면할 수 없다.

그래서 현재의 자바를 학습한다면 이 부분이 필수라고 여겨지기에 이렇게 추가한 것 같다.

스트림에 대한 개념이 구름처럼 떠다니지 않도록 이 부분을 보면서 잘 이해할 수 있었다.

 

람다에 대한 설명

이와 더불어 람다도 모던 언어에서 필수인 부분이다. 람다 없이도 개발이 가능한 부분이 있겠으나, 코드량이 많아지는 것은 그렇다 치더라도 람다로만 할 수 있는 부분은 사용하지 못하게 됨으로써 입지가 좁아지는 것을 감수해야 한다.

람다를 제대로 이해시키기 위한 노력이 수많은 줄의 손글씨 타입의 설명으로 가늠이 된다.

말이 길어서 이해가 잘 되지 않을수도 있지만 이 설명이 전부가 아니기 때문에 문제는 없다.

 

요즘 반복문에 for-each는 기본

이것은 새롭게 추가된 내용은 아니지만, 변화점 중 하나이기에 눈에 띄었다.

개정판 시절까지는 for-each 사용 없이 for문을 사용해서 구했던 코드가 있었다. 하지만 . 이코드는 그것을 for-each로 개선해서 표현하고 있다. 확실히 책 전반적으로 현재 사용되지 않거나 권장되지 않는 코드 스타일은 과감히 버리고, 새롭게 대체된(alternative) 표현으로 현재의 코딩 컨벤션에 뒤쳐지지 않도록 노력한 흔적이 보인다.

 

JShell REPL은?

이것은 부록 중 일부이다. 부록의 내용은 책에 실릴뻔한 10가지 후보들에 대한 내용이었는데 아이러니하게도 11개가 수록되었다.(원서에서 그렇게 적혀있었기 때문에 따랐다고 한다.)

JShell에 대해서는 docker를 사용할 때 가끔 보기는 했는데, 왜 있는지 이유를 잘 알지 못해서 그냥 그렇게 넘어가던 것이었는데, 이 짧은 설명 덕분에 그것을 활용하면 좋은 점에 대해서 알게되었다.

확실히 꿀팁은 어느 분야든 흥미롭다.

 

나의 Old One과 New One

왼쪽은 개정판, 오른쪽이 3판이다.

개정판은 당시에 내가 공부했을 때 사용한 책은 아니다. 그 책은 더 너덜거렸을텐데 아쉽게도 수년전에 잃어버려서 누군가에게 중고거래로 구입한 책이다.(후배에게 공부시켜주느라 이 책을 구입해서 교재로 사용했었다.)

그럼에도 책의 헌 흔적이 보인다. 스타일도 좀 올드한 느낌이다.

 

2005년 초판과 2024년 3판1쇄 발행의 격세지감

초판 기준으로는 무려 만으로 18년이 흘렀다.

그 사이에 책 가격도 오르긴 했다. 28,000원에서 42,000원으로.

책의 가치에 비해서는 덜 오른 느낌도 들지만, 앞자리 숫자가 2나 차이가 나기에 시간의 흐름을 느낄 수 있었다.

또한 당시에도 한빛미디어에서 출판하였고, 지금도 동일하다는 사실은 매우 놀랍긴 했다.

 

추가된 챕터 중 하나

여러 챕터가 추가되기도 하였고, 불필요한 챕터는 제거되기도 하였다. 위는 추가된 챕터 중 하나이다.

그리고 챕터 자체는 유지된 것이 많지만, 그 내부의 목차는 변경된 것이 많다.

혹시 개정판을 읽었던 독자라면 3판을 구해서 보는것도 새로움을 가져다 줄 것이다. 부록을 제외하고 차이점을 비교하면 다음과 같다.

 

유지된 부분

- 서문

- 껍데기를 깨다

- 객체마을로의 여행

- 네 변수를 알라

- 객체의 행동 방식

- 메서드를 더 강력하게

- 자바 라이브러리 사용하기

- 객체 마을에서의 더 나은 삶

- 심각한 다형성

- 객체의 삶과 죽음

- 숫자는 정말 중요합니다

- 위험한 행동

- 그래픽 이야기

- 스윙을 알아봅시다

- 객체 저장

- 연결하는 방법

순서 변경된 부분

- 자료 구조

추가된 부분

- 람다와 스트림

- 동시성 이슈 처리 방법

삭제된 부분

- 코드를 배포합시다

- 분산 컴퓨팅

 

 

 

뒷표지

 

 

> 괜찮은 부분

1. 유머가 충분하게 포함되어 있다.

책은 재미가 있어야 접근이 쉽다. 어떤 책이든 지루하게 느껴진다면, 그 책을 펴기 위해 매우매우 큰 노력을 들여야 하고, 그 노력의 정도가 낮다면 책을 펴는데 아마도 실패할 것이다. 또한 책을 열었다 한들 의무감에 어느정도는 보겠지만 그 이상의 노력은 하지 않을 가능성이 높다. 하지만, 책이 재밌다면 이야기는 다르다. 이 책을 만화책 보듯이 흥미를 갖고 보게 되며, 다음의 이야기가 궁금하여 계속 보게 될 가능성이 높아진다. 이 책은 바로 그런 부분이 탁월하다. 독자에게 재미를 주는 부분에 대해 소홀하지 않고 있기에 이 책의 매력과 차별점은 확실하다고 생각한다.

 

2. 과외 학습을 하듯이 친절하게 가르쳐 준다.

친절하게 가르치려고 노력한 부분이 많이 보인다. 그래서 개념의 기본을 다지기에 좋다. 보통 책은 '이정도는 알고 있죠?' 혹은 '여기서 더 머뭇거리다간 다음 진도나가기 힘들어요. 그러니 혹시 이해 안되어도 일단 넘어갑시다' 라는 스탠스를 갖고 있는 경우가 많다. 그래서 중간에 아리송한 부분이 있으면 구글검색을 하기도 하고, 이정도는 모르지만 어쩔 수 없나 하는 생각과 함께 다음 페이지를 넘기곤 한다. 물론 이것이 잘못된 것은 아니지만, 이 책은 정확히 모를만한 부분은 짚어서 알 때까지 알려주고 있다. 그래서 과외받는 느낌과 비슷하다.

 

3. 스테디 셀러에 최신 개정판의 장점 모두 있다.

스테디 셀러라는 것은 그만큼 많은 사람에게 두루 좋은 책이며, 시대를 가리지 않고(물론 자바의 역사상 약 20년 정도의 스테디셀러지만 . 이또한 개발 언어의 기준으로는 매우 스테디하다) 좋은 평을 받고 있는 책이라는 사실이다. 스테디 셀러는 트렌드에 민감하지 않다는 것이 단점이 될 수 있지만 이게 끝이 아니다. 이 책은 최신 개정판이라는 사실이다. 최신 개정판이라는 것은 트렌드에 뒤쳐지지 않도록 여러 요소를 다시 검토하여 수정하고 삭제하고 추가하는 과정을 거쳤다는 것이다. 그래서 잘 만들어진 책을 다시 한번 잘 정제하여 나온 느낌이기에 추천하고 싶다. 물론 자바 언어 자체가 예전만큼 사용률이 높지는 않지만, 그래도 여전히 어느정도의 위치는 있다. 그리고 자바를 단지 익히는 것 뿐 아니라 하나의 언어를 제대로 익히고, 객체지향 개념을 같이 배운다면 충분히 가치가 있다.

 

> 아쉬운 부분

1. 내용상 개정이 필요한 부분 이외에는 변화가 크지 않다.

단적인 예로 십자낱말풀이 부분은 변화가 없다. 18년전의 십자퍼즐 그대로이다. 이런 것은 같은 내용이라 하더라도 다시 뒤죽박죽 섞어서 3판만의 새로운 재미로 수록할 수 있었을 것 같은데, 그대로여서 아쉬웠다. 모든 문제가 그런 것은 아니지만, 쉽게 바꿀 수 있는 부분으로 보였기 때문에 더 아쉬움이 남는 것 같다. 또한 각 챕터에서 설명을 위한 예시도 예시의 주제가 동일해서 아쉬운 부분은 있다. 하지만 새로운 책이 아니고 개정판이기 때문에 이 부분은 어느정도 납득이 간다.

 

> 추천 독자

- 프로그래밍을 처음 배우려 하는 학습자

- 자바를 처음 배우려고 하는 학습자

- 자바나 객체지향에 대한 개념을 잡고자 하는 개발자

- 자바를 가르치기 위해 위해 교재를 찾고 있는 개발자

 

> 개인적인 평점

- 가격: 9 / 10

- 내용: 10 / 10

- 디자인: 9 / 10

- 구성: 10 / 10

 

> 정보

저자: 캐시 시에라, 버트 베이츠, 트리샤 지

옮긴이: 서환수

출판사: 한빛미디어

가격: 42,000원

전체 페이지: 0페이지

 

** 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

반응형

댓글