모던 자바 인 액션 – 한빛미디어
현장에서 일을 하다 보면 분명 ‘자바’라는 프로그래밍 언어를 통해 업무를 수행하지만 ‘자바 개발자’라고 불러도 될까 싶은 의아한 상황을 만나게 된다. 프로그래밍을 공부하며지난 시간을 돌이켜 보면 버전이 오를 때마다 획기적인 개선과 코드에 대한 간결성과 효율성이 높아진 것이 사실이고 그것을 재미있다고 느끼며 익히는데문제가 없었다. 하지만 1.8 버전(자바 8)이 도래하고 상황은 완전히 달라졌다.
이전의 자바와는 전혀 다른 개념들이 도입되기 시작했고, 프로그래밍관점에서는 OOP 를 흉내내기 위한 다양한 기법들을 구현 하는데 뛰어 넘어 FP 를 도입하고 람다 표현식과 메소드 참조, 스트림 등이 표준으로도입되면서 이전과는 전혀 다른 언어라고 해도 될 정도의 변화가 도입 되었 다. 그리하여 이전의 상황에익숙한 사람들이 자바 컴파일러의 상위 버전을 적용하면서도 실제 코드는 자바 8 이전의 코드 스타일에매몰되어 있는 경우를 너무나 많이 목격하게 된다.
코드가 얼마나 간결하게 작성되는가를 떠나 어떻게 간결화 되는가에 대한 이해를 자신의 것으로 만들기 위해서는 단순히코딩 명령어를 외우고 쓰는 것을 넘어 이전의 상황과 새롭게 도입된 개념, 그리고 그것을 쉽게 구현하는데필요한 관점의 전환 세 단계가 필요한데, 이를 살펴 보고 자신의 것으로 만들 수 있을 때, 비로서 ‘모던 자바’ 를익혔다고 생각할 수 있을 것 같다.
물론 아직 올드 자바 스타일로 개발하지만 모던 자바 코드로 작성된 코드를 볼 줄 알며 읽어 낼 수 있다면 먹고사는데는 아무런 지장이 없고, 심지어 흔한 지옥의 불구덩이 SI/SM현장에서는 모던 자바라는 존재 자체에 대해서도 무지한 경우를 목격하는 것이 현실이다.
예전에 자바 개발자들은 동시성에 대한 학습, 병렬처리에 대한 학습, 컬렉션에 담긴 데이터의 효율적인 처리와 특히 대용량에 대한 처리에 대해서 심도 높은 학습을 하고, 심지어 FP 에 대해서는 다른 언어에서 대안을 찾아야 하는 것인지에대한 고뇌가 깊었다. 이 문제들을 자바 8 버전부터 마치숨겨졌던 무림의 비법서가 열리듯 해결되기 시작했다.
모던 자바 인 액션 이 책은 이전의 자바와 다르게 갑작스럽게 빨라진 개선과 새로운 버전에 담긴 내용을 자바 버전별로 구분하지 않고 컬렉션에서 개선 된 스트림에 대한 충분한 개념 설명과 실체를 보여주며, 모두가 이름은들어 보았지만 실체가 무엇인지 정확히 설명하기 어려워 하는 람다식을 디폴트 메소드에 대한 충실한 설명으로 풀어낸다. 지금은 알지만 자바 8 이 처음 등장했을 때 대체 무슨 말인가 혼란스러웠던기억을 떠올리면, 지금 시점에 모던 자바를 만나게 되는 주니어 개발자들이 참 부럽기까지 하다.
최근 한 스터디에서 “마이크로 서비스 패턴”을 주제로 공부를 하고 있는데, 도대체 팀원들이 무슨 이야기를 하는것인지 혼란스러웠다. 무지한 내 탓도 있지만 사실은 무엇을 모르는지 모르는 상태가 너무 오래 지속 되었던탓이 크다. 그런데 이 책을 읽어 내려가다 보니 앞에서 설명한 기본 내용들을 토대로 동기와 비동기를설명하더니 리액티브 프로그래밍에 대해서 서술하고, 끝내는 OOP 를넘어 FP 에 대해서 서술하는 함수형 프로그래밍의 소개는 나를 부끄럽게 했다. 유행하는 것을 따르다가 정작 기본기를 놓치고 있었다는 생각에 순서가 바뀌었구나 하는 반성을 하게 되었다. 지금 당장 모든 것을 소화해 낼 수 없지만, 일단 길을 찾았으니묵묵히 다시금 걸어볼까 한다.
수년 간 익혔다고 배웠다고 생각했음에도 늘 배우면 처음 같은 프로그래밍.. 자바개발자로 끊임없는 성장을 원한다면 이 책은 반드시 자신의 것으로 만들고 시작하기를 바라는 마음이다. 시간이흐른 뒤 길을 잃는 것보다 오늘 책 한 권을 통해 지도를 손에 쥐고 출발하는 것이 먼 미래에 도움이 될 것임을 믿는다.
이 책은 “책”이 독자에게보여줘야 하는 가장 원초적인 본질에 아주 충실하다.