리뷰

[도서리뷰] 이것이 자바다

nooblette 2023. 12. 23. 16:28

목차

    도서 정보

     

    이것이 자바다 - 예스24

    JAVA 17 버전으로 업그레이드해서 돌아왔다! 7년 동안 꾸준히 사랑받은 자바 베스트셀러 1위, 『이것이 자바다』 개정판!『이것이 자바다』는 기본 개념에 충실한 설명으로 2015년 초판이 출간된

    www.yes24.com

    배경

    java라는 언어 자체를 대학생 때부터 다뤄봤으니 충분히 다룰 줄 알고 충분한 이해와 기본기도 지니고 있다고 생각하고 있었지만, 최근 들어 언어 자체에 대한 이해가 부족하고 제대로 사용하지 못하고 있는 듯한 느낌을 많이 받기 시작했다. 업무가 늘어나고 작성하는 코드의 양 자체가 많아지면서, 다양하고 복잡한 프로그래밍 문제들을 만나기 시작했고 더 이해하기 쉽고 좋은 퀄리티의 코드를 작성하고 싶은 욕심이 생겼지만 내가 가지고 있는 지식만으로는 해결하는데 부족하다고 느꼈다. 또한 객체지향, 도메인 주도 개발, 클린 코드 등 심화된 지식들을 이해해보려고 해도 잘 이해가 되지 않고 설사 이해가 된다고 해도, 오히려 남들보다 더 많은 시간이 걸리는 듯한 인상을 받았다.

     

    이런 상황 속에서 부족함을 메꾸고 발전하기 위해서는 결국 탄탄한 기본기가 필수적이라고 느꼈고, 다시 기본적인 내용부터 다뤄보는 게 좋을 것 같아 java의 가장 기초적인 부분부터 다루고 있는 이 책을 구매하고 공부하기 시작했다. 900페이지를 넘어가는 어마어마한 분량을 가지고 있어 처음에는 걱정도 됐지만 막상 시작해 보니 생각만큼 그렇게 오래 걸리지는 않았다. part 1은 기본적인 프로그래밍 문법을 다루고 있어서 이 부분은 생략하고 part 2부터 봤는데 책 내용을 모두 살펴보는데 대략 1달 반 정도 걸린 것 같다.

    내용

    책은 크게 다음과 같이 4가지 파트로 구성되어 있다.

     

    1. 자바 언어 기초
    2. 객체지향 프로그래밍
    3. 라이브러리 활용
    4. 데이터 입출력

    첫 번째 파트인 자바 언어 기초는 기본적인 프로그래밍 문법을 다루고 있고, 두 번째 파트인 객체지향 프로그래밍부터 조금 더 java에 특화된 내용들로 구성되어 있었다. 세 번째 파트 라이브러리 활용에서는 Java 8부터 제공되는 collection, stream, lambda 등을 소개하면서 동작원리와 그 활용법에 대해 다루고, 마지막 파트 데이터 입출력에서는 앞서 소개한 내용들을 활용하여 파일 입출력, 네트워크 입출력을 통한 TCP 채팅 프로그램, JDBC를 통한 게시판 구현 등 java를 응용한 프로그램 개발 방법을 다루고 있다.

     

    기본적인 변수 선언, 클래스 및 인터페이스 선언, 오버라이딩부터 상속, 익명 객체, 접근 제한자, 예외처리, java에 특화된 라이브러리 사용법 등 java와 관련된 모든 기초적인 지식들은 이 책에서 다루고 있다고 봐도 무방하다. 특히 초판이 발행된 후 시간이 조금 지난 기초 도서임에도 최근 LTS 버전인 java 17까지 다루는 등 그 내용을 광범위하게 다루고 있어서 더욱 좋았던 것 같다.

     

    책을 보면서 노션에 기록해 둔 내용 중 일부인데 이 정도로 java의 모든 개념들은 다루고 있다. 책이 다루고 있는 모든 개념들을 하나하나 이 포스트에 작성해 두는 것보단, 거의 java의 모든 기초적인 내용을 다루고 있다고 보면 무방할 것 같다.

    (따라서 만일 그러한 부분들에서 갈증을 느끼고 있다면 이 책만 봐도 충분히 해소될 것이라 생각한다.)

     

    책 후반부로 갈수록 멀티스레드, 컬렉션 자료구조, 람다식, 스트림 등 복잡하고 심화된 개념들을 다루고 있어 학습 속도가 조금 지체되었지만, 도표와 그림들로 친절하게 설명이 되어 있어서 그리 어렵지 않게 이해할 수 있었다. 아래는 part03. 라이브러리 활용에서 17번째 챕터인 스트림 요소 처리요소 병렬 처리에 대해 책에서 소개한 내용을 보고 내가 기록해 둔 내용인데, 여기에 들어간 이미지는 모두 책에 삽입된 삽화일 정도로 이미지와 함께 친절하게 설명이 되어있었다.

     

     

    다만 기초적인 개념들을 위주로 다루고 있어서 java언어의 심화된 부분까지는 고민해 볼 수는 없어서 아쉬움이 남았지만, 광범위한 영역을 다루는 책인 만큼 어쩔 수 없는 부분인 것 같다. 사실 기초적인 개념을 다루는 책이라는 점에서 책의 목적에 충실하고 있다는 생각이 들었고 이런 아쉬움이 남은 부분들은 모던 자바 인 액션, 이펙티브 자바 등 심화 개념을 다루는 책을 통해서 익히면 충분히 해소될 것이라고 생각했다.

    후기

    워낙 관련 개념들이 자세하게 소개되어 있어서 이해하는 데에 큰 어려움이 없었다. 오히려 술술 읽혔고 예제 코드 작성도 그리 어렵지 않았던 것 같다. 또한 책에서 소개한 내용들을 단순하게 읽고 그냥 넘어가지 않고 다른 사람에게 설명할 수 있을 정도로 완전히 내 것으로 만들어보려고 했고, 책에선 다루지 않는 내용들에 대한 궁금증도 생겨 추가적으로 관련한 내용들을 찾아보면서 더 깊은 이해를 할 수 있었던 것 같다.

     

    (이렇게 찾은 내용들은 모두 블로그에 기록해 두었고 그 목록은 다음과 같다.)

     

    세 번째 파트인 라이브러리 활용에서 멀티스레드 환경과 관련된 내용이나 마지막 파트인 데이터 입출력에서 다루는 채팅 프로그램 구현 등에서는 불가피하게 CS 지식들이 필요했지만 그 개념들을 한 번씩 짚고 넘어가고 있어서, 만일 비전공자가 java언어를 공부하는 경우에도 이 책을 본다면 충분히 쉽게 학습할 수 있을 것 같다. 오히려 나도 잊고 있었던 중요한 CS 지식들을 다시 상기할 수 있어서 좋았던 것 같다.

     

    만일 프로그래밍을 처음 익혀보는 비전공자거나 나처럼 어느 정도 java로 개발을 해봤지만 기본기가 부족하다고 느끼는 상황이라면 이 책을 한번 훑어보면 좋을 것 같다.