melllo***
2019-09-07

자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴으로 더 명확하고 간결한 코드를 구현할 수도 있다.
모던 자바 인 액션 (Modern Java in Action)
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=200069290
www.aladin.co.kr
개발, IT, Java
전체적으로 깔끔하고 텍스트 위주의 구성입니다. 텍스트가 상대적으로 많고 그림이 적습니다. 군더더기 없이 설명하는 느낌인데, 제가 자바 전문가가 아니다보니 이해하는데 어려움이 있습니다.
692p
자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴으로 더 명확하고 간결한 코드를 구현할 수도 있다. 이 책은 함수형 언어의 영감을 받아 자바 8, 9, 10에 추가된 람다, 스트림, 함수형 프로그래밍, 자바 모듈 시스템, 병렬화와 공유 가변 데이터, 동작 파라미터화 등의 주요 기능을 자바 개발자에게 알려준다. 수정처럼 투명한 예제와 꼼꼼한 정보 제공으로 여러분의 노력에 보답할 것이다. 이 책은 『자바 8 인 액션』의 개정판으로서 1, 8, 10, 4, 17, 21장은 신규 추가되거나, 그에 준하는 큰 수정이 있었다. 부록을 뺀 나머지 모든 장도 수정 보강되었다.
이 책은 크게 ‘기초’, ‘함수형 데이터 처리’, ‘스트림과 람다를 이용한 효과적 프로그래밍’, ‘매일 자바와 함께’, ‘개선된 자바 동시성’, ‘함수형 프로그래밍과 자바 진화의 미래’ 여섯 가지 내용으로 구성되었다. 처음 1부와 2부에서 소개하는 장들은 순서대로 읽어야 앞뒤 문맥을 이해할 수 있으며 나머지 네 개 부는 각각 독립적인 내용으로 구성되어 있으므로 어떤 순서로든 읽을 수 있다. 대부분의 장에는 직접 실습할 수 있도록 다양한 퀴즈를 포함했다.
1부 : 자바 8을 처음 접하는 독자에게 적합한 내용을 다루는 세 개 장을 제공한다. 1부를 끝낼 즈음엔 람다 표현식이 무엇인지 이해할 수 있고, 람다를 이용해서 변화하는 요구사항에 쉽게 대응할 수 있는 간결하면서도 유연한 코드를 구현할 수 있게 될 것이다.
2부 : 새로운 스트림 API를 자세히 설명한다. 2부를 끝내면 스트림이 무엇이며, 스트림을 이용해서 데이터 컬렉션을 처리하는 간결하고 효율적인 애플리케이션을 구현하는 방법을 알게 될 것이다.
3부 : 자바를 더 효과적으로 사용하고 최신 기법으로 코드를 개선하는 데 도움을 주는 다양한 자바 8, 자바 9 관련 내용을 살펴본다. 가능한 최신의 프로그래밍 개념을 설명하는 것이 목표로 이 책의 다른 부분에서는 3부에서 다룬 내용을 활용하지는 않는다.
4부 : 프로젝트를 구성하는 코드를 더 쉽고 안정적으로 만들 수 있도록 자바 8과 자바 9에 추가된 다양한 새 기능을 살펴본다.
5부 : 6장과 7장에서 설명한 스트림을 이용한 쉬운 병렬 처리 방법에서 한 걸음 더 나아가 자바로 병렬 프로그래밍을 구조화하는 고급 기법을 살펴본다.
6부 : 주제를 조금 전환해 스칼라와 자바 8의 기능을 비교하면서 효과적으로 함수형 프로그래밍을 자바로 구현하는 방법을 살펴본다.
부록 : 부록 A에서는 책에서 살펴보지않은 자바 8 언어의 작은 특징을 요약한다. 부록 B에서는 유용하게 사용할 수 있도록 자바 라이브러리에 추가된 기능을 설명한다. 부록 C에서는 2부의 연장으로 스트림의 고급 사용법을 설명한다. 부록 D에서는 자바 컴파일러가 람다 표현식을 구현한 내막을 설명한다.
자바스크립트가 대세라고는 하지만 자바는 아직도 다양한 분야에서 많이 사용되는 언어입니다. 개인적으로 자바를 주 언어로 사용하지는 않지만, 안드로이드 개발을 할 때 사용하고는 했습니다. 저는 기초적인 문법 안에서 자바만 사용했기 때문에, 람다, 스트림, 함수형 프로그래밍 같은 내용들은 사용하지 않았습니다. 하지만, 이 책에서는 자바의 다양한 버전과 새로운 기능을 언급하고, '자바는 끊임없이 발전하고 있습니다.' 라고 언급하고 있습니다. 자바를 자주 사용하며 더 좋은 기능을 사용하고 싶은 사람이라면 이 책을 읽으면 좋겠다는 생각이 들었습니다. 이러한 점에서, 입문자에게는 권장하지 않습니다.
첫 장에서 자바의 발전이 어떻게 이루어지는지 흐름에 따라서 잘 설명해주고 있습니다. 자바는 8을 기점으로 크게 변하게 되었는데, 멀티코어 CPU 대중화로 인하여 모든 코어를 효율적으로 사용해야 한다, 간결하게 데이터를 다룬다 라는 요구사항을 기반으로 짜여졌다고 말하고 있습니다. 기존 소스코드 대비 짧아지고, 병렬 연산을 효율적으로 구현할 수 있다고 합니다. 어떠한 변화가 필요한 이유를 먼저 설명하고 변화에 대하여 서술하여 개인적으로 좋았습니다.
그 이후로는 위에서 언급한 자바의 발전하게 된 계기를 토대로 발전하게 된 요소들에 대하여 서술해줍니다. 람다, 스트림, 함수형 프로그래밍 내용을 굉장히 디테일하게 여러 단원에 걸쳐서 설명해주고 있습니다. 위의 목차에서 나온 것과 같은 흐름으로 진행됩니다. 해당 내용을 다 서술하기는 너무 어렵고 자세하여, 직접 서점에 가서 보시고 판단해보시면 좋을 것 같습니다.
위의 내용을 토대로 자바 코드를 훨씬 더 효율적으로 작성할 수 있을 것 같습니다. 기존 코드와 나오게 된 이유, 바뀐 코드에 대하여 정확하게 숙지하고 자바 버전을 원하는 대로 선택하여 구현하는 것은 초보자는 쉽게 할 수 없는 역할이라고 생각합니다. 저는 버전에 대한 이해없이 단순히 언어를 사용하기만 했는데, 이 책을 보면서 '언어에 대한 심층적인 이해가 필요하다'라는 생각이 들었습니다.
이러한 내용을 마지막 단원에서 정리해주고 있습니다. 정리된 내용을 바탕으로 향후 미래에 자바가 발전할 방향까지 알려주고 있습니다. 자바에 대하여 위에서 언급한 내용에 대하여 자세하게 알고 싶은 사람이라면 읽어볼 만한 책이라고 생각합니다. 상당히 많은 분량을 통하여 위에서 언급한 내용을 상세하게 설명하고 있기 때문에, 도움이 많이 될 것 같습니다. 또, 자바 컬렉션이나 기본 문법 같은 기반 지식도 필요하기 때문에, 입문자는 다소 어려울 것 같습니다. 저도 디테일하게 다 보지는 못하여, 천천히 시간을 두고 체계적으로 읽고싶습니다.