본문 바로가기

Jbee/서평&영화&자격증

[개발] 자바 기본서 추천에 대해서 / 대표적인 기본서 비교

자바 기본서 추천에 대해서 / 대표적인 기본서 비교(# 17. 06. 21 update)


이 글은 JAVA라는 언어를 공부하기 위해 첫 기본서를 고심하는 사람들을 위해 작성했습니다.
저도 처음 자바 공부를 시작할 때 어떤 기본서를 고르는 것이 좋을까라는 고민이 많았습니다. 자바 책을 추천받을 때 이미 현업에 계신 분들이나 주변 고수분들에게서 구하는 경우가 많은데, 자바를 처음 공부하는 사람의 입장에서 각 도서에 대한 의견을 듣는 것도 도움이 될 것 같아, 이렇게 정리해봤습니다.

이 글에서 다루고 있는 기본서 이외에도 많은 자바 기본서가 있지만, 많은 추천을 받은 책 중에서 제가 직접 본 책, 공부해본 책만을 가지고 제 개인적인 의견을 말씀드리고자 합니다.

기본서를 채택할 때는 자신의 공부 스타일에 따라서, 그리고 기본 배경 지식에 따라서 크게 달라진다고 생각합니다. 그래서 제 기본적인 배경 지식과 공부 스타일에 대해 먼저 소개를 한 뒤에, 기본서들에 대한 지극히 개인적인 의견을 적어보고자 합니다.

일단 저는 비전공자이며(공학을 전공했고, 학부과정 3학기만 재학하고 중퇴했다.) 프로그래밍에 대한 지식은 C언어에 대한 약간의 지식이 있었습니다. (어설픈 전화번호부를 만들어볼 수 있는 정도 수준) JAVA 공부를 시작한 시점은 C언어 공부를 한 지 2달이 지나고 나서 JAVA를 시작했습니다. 개인적인 학습 스타일은 프로젝트를 진행하면서 학습한 내용을 바로바로 적용하는 스타일을 선호합니다.

독자 분들의 개인적인 입장을 고려하여 다음 글들을 선별하여 받아들였으면 좋겠습니다. 자바 기본서들의 대표주자들이고 제가 접하게 된 순서대로 작성했습니다.



# JAVA의 정석 / 남궁성 / 도우출판 (4.5 / 5)  (링크)


물리학도이신 남궁 성님의 책이다. 사실 물리학도인 것은 그리 중요한 게 아니고, 컴퓨터 분야에서 오랫동안 일하신 분이며, 스터디 카페를 운영하시면서 여러 방법으로 독자에게 접근을 하고 있는 분이시다.

가장 많은 사람들이 추천했던 책이고 자바 관련 도서 베스트셀러 1위에 해당하는 도서이다. 수학의 정석과 똑같은 느낌이다. 정말 이름 값 한다. 무조건 극찬한다는 말이 아니다. 고등학교 시절 수학의 정석으로 공부해본 사람은 알겠지만, 강의없이 혼자서 수학의 정석으로 공부하기란 정말 쉽지 않다. 또 수학의 정석은 기본적인 예제가 많지만, 연습할 수 있는 문제들이 어렵고 상대적으로 적다.

이 책도 마찬가지이다. 자바에 대한 기초 지식이 없었을 때, 처음부터 이 책으로 공부하기에는 무리가 있을 것이다.
일단 글의 흐름은 딱딱하고, 코드보기가 힘들고, 코드를 계속해서 따라가야만 컴파일이 되는 형식이다. 하지만 일단 컴파일 되는 코드를 보여준다면, 독자가 실습하기에 더 좋지 않았을까 라는 생각이 든다. 독자에게 코드 전반에 대한 해석을 할 수 있는 기회를 제공하는 것이다.

하지만 내용이 어느 정도 깊어서 좋았다. 메모리 구조에 대한 부분도 다른 교재에 비해 구체적으로 다루고 있다. 그러나 이러한 부분 때문에 딱딱한 음식을 소화하는 느낌이 든다.

레퍼런스적인 성격이 강해서 한 권쯤 소장해두고 자바에 대한 지식을 지속적으로 채워나가기엔 손색없는 책이라고 생각한다. 전체적인 평은 4.5이지만 독학하려는 입문자에게는 별로 추천하지 않는다.




# 자바의 신 / 이상민 / 로드북 (4 / 5)  (링크)


자바 계에서 유명하신 이상민 님께서 쓰신 책이며, 개인적으로 존경하는 교수님께서 감수를 하신 책이다. 자바 성능 관련해서 다른 책도 쓰신 분이다.


책의 흐름은 재미있다.
다만 아쉬운 점이 있다면 직접 코드로 돌려보기가 번거롭다는 점이다. 그리고 연습문제들이 아쉽다. 두가지 종류로 나뉘는데, 일단 퀴즈 같은 문제들은 개념을 다시 한 번 상기시키기에 좋았고 이 외에는 별 도움이 되지 않았다. 직접 해보는 연습문제들은 이론의 내용과 문제의 Gap이 좀 크지 않나 싶었다. (필자가 책을 못 따라간 것일 수도 있다.) 그래도 사이트에 코드들이 올라와 있어 공부하기에는 편했다.

이 책은 vol 1보다는 vol 2가 더 좋다고 생각한다. 각 기본서마다 보는 목적과 그 장점이 다른데, 자바의 신 vol 2 의 장점은 api를 많이 다룬다는 점이다. 리눅스 시스템 프로그래머 이상곤 개발자님께서 현존하는 자바 기본서 중 최고라고 극찬한 책이다.

책의 흐름은 이해가 잘 되고 좋았다.
오히려 vol.2 책의 마지막 부분에 앞으로 공부해야나갈 부분을 소개시켜주는 부분이 훨씬 좋았다. 더욱이 자신의 앞으로 진로가 자바 개발자라면. 그리고 Servlet과 JSP에 대한 내용은 딱히 쓸모있게 느껴지지 않았다. 대부분 JAVA를 공부하고 바로 Servlet과 JSP를 공부할텐데, 굳이 자바 기본서에 내용을 집어넣어야했나 싶다. 차라리 Servlet JSP을 집중적으로 다룬 책으로 다시 시작하는게 더 좋을 것 같다고 생각했다. (물론, 개인적인 생각이다.)

최근에 2nd Edition이 출간되었다. Java 8 에 대한 부분이 많이 추가되었다고 들었다. 이렇게 되면 자바 기본서 중 가장 최신 기본서라고 볼 수 있겠다.

vol 2 중점적으로 말하자면 자바를 좀더 유연하게(?) 물 흐르듯이 다루고 싶을 때 보면 좋을 책이다. 딱딱한 말투의 책을 싫어하는 사람이라면 이 책이 딱이다. 직접 코드를 작성하기 보다는 코드를 받아서 연습문제를 풀어보며 학습하길 권장한다.




# 나는 정말 자바를 배운적이 없다구요 / 윤성우 / 오렌지미디어 (3.5 / 5)   (링크)



이미 C언어 책으로 유명한 윤성우님의 책이다. 필자 또한 이 저자의 책으로 C언어를 공부했다. 이 책은 전화번호부 만들기라는 하나의 프로젝트를 흐름으로 내용을 진행한다. 나도 이 책으로 처음 공부를 시작했다. 그러다가 상속에 대한 개념에서 뭔가 명확하지 않았다. 난데없는 this 와 super에 대한 개념이 잡히질 않았고, 접근제어자에 대한 내용도 뭔가 이해가 잘 되지 않았다. 뭔가 객체지향적인 개념을 잡는데 있어서는 부족한 느낌이었다.

그래서 생활코딩 강의를 통해서 해결하고 넘어갔다. 프로젝트를 흐름으로 내용을 진행해나가는 것이 인상적이었다.  chapter에서 다룬 내용을 프로젝트에 바로 적용시키면서, 배운 내용이 어떻게 활용되는지를 경험해볼 수 있다는 것이 가장 큰 장점이라고 생각한다.
자바가 어떠한 언어인지 알고자 하는 것이 목표인 초심자 또는 프로젝트에 직접 코드를 작성해가면서 공부하는 스타일인 사람들한테 적합한 책이라고 할 수 있다. 물론 다른 책으로 개인 프로젝트를 진행할 수도 있다.(하지만 이 책에는 코드 전체가 올라와 있어서 좋다.) 깊이 공부하기에는 한계가 있는 책이라고 생각한다.

그리고 보진 않았지만 이 외에도 많은 책들이 있다.
지름길로 빠르게 배울 수 있는 자바 프로그래밍(Agile JAVA) / Jeff Langr / 교학사
Agile JAVA라는 책을 번역한 책으로 앞부분만 조금 봤는데 번역한 책이라 말투에서 어색함이 느껴진다. 객체 지향 프로그래밍, TDD(테스트 위주 개발)에 특화되어 있다. 뭔가 자바를 처음 공부하기 시작할 때 부담이 될 것만 같다. 주변인 중에 TDD로 JAVA를 공부하기에 최고의 책이라고 극찬한 책이다. 두번째의 JAVA책으로 적합하지 않을까 생각해본다.


이것이 자바다 / 신용권 (링크)
필자는 NIO에 대한 내용이 필요해서 2권만 봤는데 설명이 자세히 잘되어 있어서 좋은 인상을 받은 책이다. 주변에서도 도움을 많이 받았다고 한 책이다. 네이버 카페가 운영되며 저자 직강도 있다. 다양한 그림을 통해 설명하고 있어서 책의 흐름은 지루하지 않을 것 같다. 이 책 또한 1, 2권으로 분리되어 있다. 개인적으로 책 한 권을 끝마치는 성취감이 중요하다고 생각하는데 그런 면에서 분권되어 있는 책을 선호한다.




                         
HeadFirst JAVA
필자는 Head First 시리즈들은 Design Pattern 빼고는 거의 다 보지 않았다. 낯선 흐름 때문에 HeadFirst 시리즈가 유명하다고 해서 이 책으로 시작하게 되면 조금 힘들 수 있다. 이 책도 보진 않았지만 HeadFirst 시리즈라서 소개했다.

뇌를 자극하는 JAVA
뇌자극 시리즈는 아직 한 권도 본 적이 없다. 독자층이 꽤 있는 것으로 알고 있다.


프로그래밍에 대한 경험이 전혀 없는 상태에서 Java를 공부하는데 도움이 되는 강의를 하나 말씀드리자면, 생활코딩에 올라온 이고잉님의 JAVA 강의를 추천합니다. 기본적인 자바 문법과 객체지향에 대한 개념을 잡는데 아주 유용한 강의입니다. 생활코딩 외 다른 프로그래밍을 공부할 수 있는 사이트도 많이 존재합니다.



자바 기본서를 선택하는데 있어서 자신에게 맞는 기본서를 선택하는데 도움이 되었으면 좋겠습니다. 
감사합니다.
(# 17. 06. 21 update)