[오라일리] 헤드 퍼스트 자바 3판

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

자바 책 검색을 하면 늘 나오던 그 책이다. 참 오랜 세월을 봐왔지만 읽어본 건 이번이 처음이다. 굳이 피하던 건 아니었고 학교 다닐 때 배운데다 회사에서는 사실 jsp 1.0 나오기 전부터 사용했기에 입문서를 읽을 이유가 사실상 없었다. 하지만 몇 개 기술서가 그렇듯 판올림으로 계속 나온다는 건 이유가 있는 거다. 그래서 궁금했다.

결론부터 말하자면, 자바 기초를 배우고 싶은 이들에게 이 책은 교과서 느낌이다. 백과사전식 나열도 아니고 지식 검증을 위한 재미없는 퀴즈제시도 아니다. 무슨 느씸이라고 해야 할까, 생각을 제대로 해봐야 하는 대학교재다.

설명은 구체적이고 좀 구어체식이라, 글로 이런 문체를 읽는 데 거부감이 있다면 난감할 수 있다. 나도 처음에 전달하는 내용에 비해 글이 많은 데 부담을 느꼈다. 언제부턴가 해야 할 게 많다보니 그론 경향이 강해졌으니. 그런데 어느 정도 적응을 하고 보니 비로소 그 가치가 느껴진다. 이 책 결코 입문서지만 잠깐 읽고 던질 책이 아니다. 교과서로 진득하게 공부하듯 읽고 생각하고 코딩하면서 결과를 확인해봐야 한다. 안 그러면 온라인 핸드북 읽느니만 못한 결과릉 얻게 될 거다.

직업상 웹 관련 백엔드와 일부 프론트엔드 개발을 하다보니 GUI, Swing, 병렬 처리는 솔직히 직접 건드릴 일이 없어 책 내용이 크게 와닿지 않는다. 하지만 그외 부분들의 경우 잊고 있었던 기본에 관해 되뇌일 수 있는 계기가 된 것 같다. 늘상 생각하던 거고 다른 이들에게도 말했지만 뭔가 고급 기술을 써서 문제 해결하는 것보다는 기본적인 것들로 하는 게 훨씬 많다는 것. 그리고 항상 내가 평생 책임질 게 아니라면 다른 이들이 보고 이해하고 수정하고 개선할 수 있는 코드를 작성해야 한다는 것. 그 생각에 지지대를 세워주는 내용으로 가득 차 있다.

7장 상속과 다형성, 8장 인터페이스와 추상 클래스, 11장 자료구조, 12장 람다와 스트림, 18장 동시성 이슈 처리 방법은 분명하게 개념을 세워두는 게 좋다. 물론 다른 장들을 소홀히 보라는 의미는 아니다. 그게 바탕이 되어줘야 언급한 장들을 이해할 수 있다.

예를 들어, 7장에서 상속과 다형성을 설명할 때 Animal 클래스와 이를 상속받은 Dog 클래스를 여러 가지 예시를 들어가면서 설명한 부분과 같이, 신경 써서 전달하고자 하는 내용을 전개하는 방식은, 꽤 긴 호흡을 유지해야 하기에 어려울 수는 있지만, 그 과정을 잘 이해하기만 하면 해당 개념을 머릿속에 넣어두는 데 있어 매우 중요한 역할을 할 수 있다. 아무래도 실질적인 예제와 개념을 잘 일치시켜 얘기하면 입문자 입장에서는 매우 큰 도움이 된다. 단, 처음 읽다보면 헷갈려서 앞으로 갔다왔다를 반복하겠지만, 그건 어찌 보면 당연하다.

게다가 사이사이 들어가 있는 코드들과 퀴즈들은 생각보다 난이도가 있다 보여진다. 쉬워보이는 게 사실 더 어려운 법이고, 뭔가 해결하는 데 코드량이 많다는 건 뭔가 잘못된 방향으로 나아가고 있다는 뜻일 거다.

개인적으로 이 책에서 람다와 스트림, NIO.2를 다시 샐펴볼 수 있어 좋았다. 다른 관점에서 본다면 입문자에게 부담스러울 수도 있다 싶은데, 뭔가 책에서 해보라는 내용을 따라가는 데 거부감을 느낀다면 그럴 수도 있겠다 싶다. 하지만 그런 불편함을 조금 참아내기만 하면 좋은 출발지일 거라 확신한다. 책의 앞에 추천글이나 서평이 그렇게나 많은, 그래서 홍보하는 그 문구가 있는, 그 이유가 있는 법이다.

자바를 제대로 사작하고 싶다면 이 책이 좋은 길라잡이가 될 거다. 조금의 불편함은 버리고 한 번 도전해보라. 거대한 자바의 세계에 들어온 걸 환영한다!