Practical 자바 유틸리티

0

스프링을 공부하거나, 스프링 부트를 사용하려고 준비중인 자바 개발자 초보분들에게 강력하게 추천하고 싶다. 이 책을 다 읽고 느꼈던 점은 자바의 필수적인 유틸리티를 ‘전부’ 설명하고 있다는 점이다. 정말로 해당 분야의 유틸리티를 전부 설명하고 있다.

1

자바(Java)의 또 다른 이름을 붙여준다면 나는 그 이름을 스프링(Spring)이 적당하다고 생각한다. 친구들과 농담삼아 하는 말이지만 “요즘에 누가 자바쓰니? 스프링 쓰지!”라는 말에서 느낄 수 있지만 스프링의 부분집합으로 자바가 존재한다고 요즘은 과언이 아닌듯 하다. 누군가에겐 안드로이드의 다른 이름일 수도 있겠다. 자바의 고유한 영역이 서서히 사그라들고 있는 이유는 자바를 기반으로 한 거대한 프레임워크나 SDK가 더 많이 활용되고 있기 때문이다.

자바 진영의 발전이 더디 가고 있고 언어적인 선호도와 점유율이 점점 내려가고 있을지라도 […] 널리 사용하는 언어로 계속 자리 잡고 있을 것이라고 확신할 수 있다. - p. vi

그렇다고 스프링을 배우는 과정이 쉬웠으면 좋겠지만 스프링도 녹녹치 않다. 스프링을 구성할 때 고민했던 철학이나 프레임워크의 원리를 배우고 익히는 일도 쉽진 않다. 관점지향 프로그래밍(AOP), 제어의 역전(IoC), 의존성 주입(DI) 등의 흔한 삼각형 그림을 이해하고 잘 사용하기 위한 과정도 험난하다.

[…] 하지만 Git을 선택하고 사용하려면 기존 형상 관리 소프트웨어와는 개념과 프로세스가 달라서 처음에 적응하고 익숙해지는 데 다소 시간이 거릴 수 있음을 고려해야 한다. - p. 51

특히 개발자에게 곤혼스러운 일은 그 흔한 ‘Hello World!’라도 출력하려고 들면 생각보다 복잡한 과정을 거쳐야 된다는 점이다. 자바를 공부할 땐 이클립스를 실행하고 클래스를 만들어서 sysout이라 적고 ‘컨트롤+스페이스’로 손쉽게 슥슥 만들어 낼 수 있었는데, 스프링은 메인븐(Maven) 프로젝트를 만들지, 그레이들(Gradle) 프로젝트를 만들지 결정해야 된다. 이건 시작에 불과하고 하면 할수록 내가 알지 못하는 세부적인 기술들이 너무 많이 등장해서 식은땀이 흐르기 일수다.

[…] 필자의 예측으로는 메이븐에서 그레이들로 빌드 도구의 유행이 이동하는 것은 시간 문제라 생각한다 -p. 230

스프링 혹은 전자전부프레임워크 때문에 자바를 공부했는데 스프링을 사용하려고 하면 다른 것들이 발목을 잡는다. 그렇다고 검색을 하면 잘 나오는 것도 아니고, 이것도 좋고 저것도 좋고, 이것대신 저것을 쓴다는 글이 많아서 너무 혼란스러워서 어디서 부터 시작해야 될지 모르는 경우가 많다.

2

커피한잔 하면서 친구들과 수다를 떨고 놀고 있는데, 친구가 탁자위의 책을 슥슥 넘겨보면서 “ANT라는 이젠 기억도 안 난다!” 라며 한마디 거들었다. 그렇다 나도 기억이 안난다. 예전에 ANT로 jar로 압축하고 배포까지 했고, 이클립스에 내장된걸 사용했던 것 같은데 그냥 아련한 기억으로 남아있다.

책을 다 읽고 느꼈던 점은 자바의 필수적인 유틸리티를 ‘전부’ 설명하고 있다는 점이다. 정말로 해당 분야의 유틸리티를 전부 설명하고 있다.

예를 들어서, 지금 시점에 엔트(Ant)를 사용하는 분들은 없을 것이다. 최소한 메이븐 정도는 사용할 것라 생각된다. 그럼에도 불구하고 책에서 엔트를 설명하는 이유는 ‘빌드 프로세스’의 발전사를 하나하나 소개하고 있기 때문이다. 거의 모든 챕터(형상관리, 의존성 관리 및 빌드도구, 단위테스트, 성능 측정, 협업, CI 등)가 초창기 기술부터 시작해서 현재 사용하고 있는 도구나 기술을 소개하고 있다.

ANT, 메이븐, 그레이들의 기능을 이해하기 전에 반드시 이해해야 할 것이 빌드 프로세스이다. -p. 88

3

이 책의 단점은 당연하게도 모든 것을 설명하다 보니 내용이 너무 방대하다는 점이다. 내용의 방대함 보다 형상관리, 빌드도구, 단위테스트 등 책에서 다루고 있는 큰 주제가 다른 곳에선 책 한권 분량으로 나오기 때문에 내용의 방대함은 초보 자바 개발자 입장에선 받아들여야 하는 난관이라 할 수 있다.

자바가 사용된 시기가 20년이 넘기 때문에 배워야 할 내용이 많고, 스프링을 비롯한 현재 많이 사용하고 있는 프레임워크는 기존의 단점을 보완하기 위해서 만들어진 기술이다 보니 생태계의 방대함에 짖눌리기 쉽다. 그나마 이렇게 체계적으로 갖춰진 가이드북이 있다는 점에서 한결 다행이라 생각되고, 초보 개발자 분들은 책의 ‘목차’와 ‘찾아보기’로 난관을 슬기롭게 해처 나가길 기원한다.

4

한마디로 현재 스프링이나 자바 프레임워크를 구성하고 있는 생태계를 지탱하고 있는 중요한 기술에 대한 맥락과 그 기술의 지향점을 손쉽게 알 수 있도록 모아놓은 책이라 할 수 있다.

[…] 하지만 인텔리제이를 통해 훌륭한 환경과 개발 생산성을 확보할 수 있다고 판단한다면 충분히 투자할 가치는 있다.

Written on October 13, 2016