> 진행에 앞서
자바로 개발을 본격적으로 한지 어언 10년 넘은 기간이 흐르면서, 나는 자바를 제대로 쓰고 있을까 문득 생각을 하곤 했다.
그러던 중 나의 주력 프레임워크가 안드로이드이다보니, 그 곳에서의 주력 언어에 큰 영향을 받게 되었고, 수 년 전부터는 자바에서 코틀린으로 대전환이 이루어진 상태였다.
나름 자바보다 코틀린의 장점들을 발견해가며 점점 코틀린에 익숙해지는 과정에 있고, 현재는 자바에 못지 않게 코틀린도 꽤 익숙해진 상태에 있다.(물론 그렇다고 능수능란하게 다루는 정도는 아니다.) 그런 이유도 있지만, 코틀린이 자바에 비해 사용할 수 있는 기법도 다양해서 좋다고 생각을 했는데, 오늘 리뷰를 남길 '코딩 개념 잡는 자바 코딩 문제집'을 보고서는 생각이 바뀌었다.
자바도 코틀린 못지 않게, 어떤 부분에서는 코틀린보다도 편리하고 유용한 기능을 많이 제공하고 있다는 것이다.
> 책에 대한 간단한 정보
책의 이름을 봐서는 요즘 유행하는(?) 알고리즘 문제 해결을 도와주는 책인가? 하는 생각을 하게 만들었다.
하지만, 조금 더 자세히 책 제목 옆의 글을 보면 코딩 테스트가 아니라 현장의 문제를 담았다고 나와있다.
그 말의 의미가 무엇인지 책을 펼쳐보고 나서야 알게 되었다.
분명한건 자바로 업무를 수행하는 사람의 입장에서는 이 책이 도움이 많이 될 것이라는 사실이다.
> 인상깊은 부분들
처음에는 위와 같이 코딩테스트에 나올법한 내용이 나오기에 그런 내용이 주로 실려있나보다 하고 생각했었다.
어느정도는 맞지만, 대부분 그렇지 않다고 깨닫는데 그리 오래 걸리지는 않았다.
개인적으로 데이터를 담을 클래스를 별도로 선언하에 애매한 상황이면, Pair 객체를 선언해서 사용하고는 한다. int값 하나에 Object 하나를 쌍으로 담아야 할 때 유용하게 사용할 수 있는 클래스이다. 혹은 2개의 값을 리턴하는 목적으로도 좋다.
그런데, 이런 과정에서 구현한 객체의 형태를 안다면 캐스팅을 안전하게 할 수 있으리라는 생각을 했는데, 그런 방법에 대한 것이 나와있었다.
이것으로 인터페이스가 어떤것인지 비교해보고 사용하면서 안전해지기 때문에, 이런 기법을 알면 도움이 된다고 생각도 했었다.
자바에서도 버전이 올라가면서 이제는 어엿하게 함수형 프로그래밍이 가능하다.
그것을 그냥 람다와 몇개의 함수 호출로 사용하는 것으로 단편적으로 할 수도 있겠지만, 그것을 넘어서서 패턴을 적용할 수도 있다. 잘 알려진 패턴을 활용하면 함수형 프로그래밍을 좀 더 잘 구조화 하여 개발이 가능한데, 여기에 수록된 패턴이 꽤나 많았다. 이 리뷰에는 분량상 해당 내용들을 올릴 수는 없지만, 읽어보면 큰 도움이 된다.
이 책의 내용 부분에 어떤 내용을 기록했는지 말하고 있다. 다만 적힌 내용이 많아서 본인이 필요한 내용을 잘 캐치하기 어렵지는 않을까 생각도 든다.
> 괜찮은 부분
1. 자바를 이용한 모던 프로그래밍 기법을 알려준다.
자바는 아주 오래된 예전부터 객체지향의 교과서와 같은 역할을 했다. 그래서 여러 객체지향 기법을 설명하는 데 자바의 기본적인 개념들이 사용되었고, 그것은 JDK 1.6 이상을 넘어가지 않아도 충분히 구현 가능한 범위로 설명하고 있다. 그래서 자바로 모던 프로그래밍을 이야기 하는 책을 찾기 어려운데, 이 책은 그런 부분을 말하고 있다. 모던 프로그래밍을 자바로 배울 수 있다는 것 하나만으로도 이 책은 가치가 충분하다.
2. 블로그에서 찾던 내용을 책으로 찾을 수 있도록 한다.
개발할 때 블로그 한 번 찾아보지 않았던 개발자가 있을까? 하지만, 그런 자료들이 유용하더라도 어느정도는 위험을 감수하고 있다. 검증이 되지 않은 자료도 많고, 각자의 다른 환경을 고려하지 않은 내용도 많기 때문이다. 또한 맞는 자료를 찾기까지 웹 서핑을 하듯이 여행을 떠나기도 한다. 하지만, 이 책에서도 블로그에서 우리가 찾고싶은 많은 내용을 담고 있기 때문에, 매우 유용하다. 일례로 날짜 관련 포매팅 및 여러 처리를 위해 검색을 할만한 부분도, 여기에서 아주 다양한 사례에 대해서 어떻게 처리하는 것이 좋은지 원리부터 상세하고 친절하게 설명해준다.
3. 동시성 프로그래밍, 네트워킹 등 실제 개발에 밀접한 고급내용도 다루고 있다.
개발을 실제 진행하면서 최적화를 위해서는 동시성 프로그래밍은 매우 중요한 토픽이다. 이 부분에 많은 지면을 할애하였다. 그래서 이 내용을 보면서 단지 여러 자바 문제 해결에만 집중한 것이 아닌, 깊이 있는 해결도 고민했다는 생각이 들었다. 또한 많이 다루는 또 하나의 주제인 네트워킹도 깊게 파헤치는 부분도 있으므로, 네트워킹 처리에 대한 다양한 해결 방법 때문에 정작 본인이 구현하는 방법이 바른 길인지 고민하고 있다면, 이 내용은 큰 도움이 될 것으로 보인다.
> 아쉬운 부분
1. 일반적으로 자바를 다루면서 볼 법한 내용이 아닌 부분도 많이 포함되어 있다.
자바 12를 다룬 사람이라면 알 지도 모르지만, 자바에서 타입추론을 실제로 사용하는 경우를 아직은 보지 못했다. 그래서 이 곳에 var에 대한 부분을 읽으면서는 크게 공감가지는 않았고, 빠르게 넘기기도 하였다. 어느정도 소개한다는 측면에서는 유용할 수 있으나, 그런 분량에 대해서 차라리 우리가 실제 부딪히면서 해결할만한 문제가 좀 더 담겨있다면 좋겠다는 생각이 들었다.(책이 매우 두껍기 때문이다.)
2. 자바의 여러 버전을 다루지만 전체적으로 비교하면서 보기는 어렵다.
필요한 부분에서는 자바의 버전에 따라 다르게 구현할 수 있다는 것을 알려주는 부분도 있다. 하지만 이것이 보기 편한 방식으로 도표를 도입했다면 좀 더 눈에 잘 띄지 않았을까 생각한다. 물론 이게 큰 문제가 되는 부분은 아닐터, 아쉬운 부분 정도로만 생각하면 될 것 같다.
> 추천 독자
- 자바로 계속 개발해야 하는 환경에 놓인 개발자로서 모던 프로그래밍을 도입하고 싶은 개발자
- 항상 리팩토링을 하고싶은 자바 개발자
- 자바를 공부하고 싶은 초보 개발자
> 개인적인 평점
- 가격: 7 / 10
- 내용: 9 / 10
- 디자인: 8 / 10
- 구성: 9 / 10
> 정보
저자: 엥겔 레너드
옮긴이: 심지현
출판사: 길벗
가격: 48,000원
전체 페이지: 804페이지
** 이 리뷰는 길벗을 통해 도서를 제공받아 작성하였습니다.
'[Review] > Book' 카테고리의 다른 글
[도서 리뷰] 우리가 사랑한 한국 PC 게임 (0) | 2023.02.26 |
---|---|
[도서 리뷰] 이것이 자료구조+알고리즘이다(with C언어) (0) | 2022.12.31 |
[도서 리뷰] 적정 소프트웨어 아키텍처: 리스크 주도 접근법 (0) | 2022.11.26 |
[도서 리뷰] 완성된 웹사이트로 배우는 HTML&CSS 웹 디자인 (0) | 2022.10.23 |
[도서 리뷰] 헤드 퍼스트 디자인 패턴 개정판 (0) | 2022.09.25 |
댓글