이제 당신도 새로운 도구에 익숙해질 시간입니다.
from http://tiobe.com
위의 표는 2019년 9월 발표된 프로그래머들이 선호하는 프로그래밍 언어의 순위를 나타내는 TIOBE Index 이다. 또한 아래 표는 2001년 6월부터 현재까지 상위 10개 언어의 점유율 분포를 나타낸 그래프이다. 표와 그래프에서 보는 것과 같이 최근 20여년간 Java는 C와 더불어 가장 많이 쓰이는 언어의 자리를 굳건히 지키고 있다. (최근 인공지능에 대한 열풍 등으로 파이썬의 강력한 추격을 받고 있은 것은 주지의 사실이나, 분야가 조금 다를 수 있다는 게 필자의 생각이다.)
from http://tiobe.com
Java가 이렇게 많은 인기를 누리는 이유는 무엇일까? 반대로 인기있는 프로그래밍 언어가 되려면 어떤 조건이 필요할까? 이 질문에 대한 첫번째 대답은 바로 ‘쓸모’있는 것이어야 한다는 것이 필자의 생각이다. 이 세상에는 정말 수많은 프로그래밍 언어가 존재한다. 개별 언어는 나름의 존재 이유가 있고 쓸모가 있다. 그래서 만들어진 것이다. 범용적인 언어 뿐 아니라 특정 분야에 한정되어 사용되는 언어, 예를 들면 발전소를 동작시키기 위해 만든 언어도 있고, 통신 기기를 제어하기 위해 만든 언어도 있다. 이런 언어가 널리 사용되려면 그 언어가 가진 ‘쓸모’가 더 많은 사람에게 유용해야 한다. 그리고 그 유용성은 프로그래밍을 하는 환경에 많은 영향을 받게 된다. Java가 초기에 이 유용성을 확보하게 된 것은 ‘객체지향’이었다. 그 전에도 객체지향 언어가 없었던 것은 아니지만 개발자가 다루어야 하는 문제의 복잡도가 커짐과 동시에 그러한 문제들을 해결하기 위한 객체 지향적 해결 방안이 활발이 연구되던 시기였다. 이와 더불어 Java를 무료로 사용할 수 있도록 한 썬마이크로시스템즈의 정책, Java VM을 사용함으로써 얻을 수 있는 플랫폼 독립성 등으로 대학을 비롯한 학계 뿐 아니라, 산업 전반에서 널리 Java를 사용하게 되었다. 초기 Java의 대중에게 자리를 잡을 수 있게 된 이유는 한마디로 기존과 달라진 프로그래밍 환경에 대한 새로운 ‘쓸모’가 있었기 때문이다.
(Java SE 12 Download Page : http://java.oracle.com/ )
1996년 JDK 1.0이 발표된 이후로, Java는 변화를 계속하고 있다. 현재 Oracle을 통해 배포되고 있는 Java는 Java SE 12 이다. Java는 환경에 따라 SE, EE, ME 등으로 나눌 수 있지만, 그 중심에는 Standard Edition인 SE가 있고, Java 기술의 기본이 된다. 이렇게 Java가 계속해서 버전 업 되는 이유는 무엇일까? 초창기 Java가 복잡해진 프로그래밍 환경에 새로운 ‘쓸모’로 등장했던 것처럼, 변화하고 있는 환경에 계속해서 ‘쓸모’있음을 유지하기 위한 것이다. 문제를 보다 더 간결하게 해결하거나, 문제를 푸는 새로운 방법을 제시할 수 있도록 진화하고 있는 것이다.
‘모던 자바 인 액션’은 이렇게 진화하고 있는 Java의 새로운 면모를 집중적으로 다루고 있다. 특히 Java 8, 9, 10 에서 도입된 여러 변화를 설명하며, 이후 자바의 미래에 대해서도 짧게 나마 알아 볼 수 있도록 하였다. 전체 Chapter의 수는 21개에 달하며, 이를 6개의 파트로 구성하고 있다. 첫번째 파트인 1부에서는 Java 진화에 대한 이야기를 위한 기초 내용을 다룬다. 특히 람다 표현식이 익숙하지 못한 기존 개발자들을 위한 부분은 이 책과 함께 하는 긴 여정의 필수 코스이다.
두번째 파트인 2부 ‘함수형 데이터 처리’에서는 스트림이 무엇이며, 이를 통해 간결하고 효율적으로 데이터 컬렉션을 처리하는 방법을 소개하고 있다. 3부에서는 스트림과 람다를 이용해서 보다 효과적인 프로그래밍을 하는 방법과 더불어 최신 기법을 통해 코드를 개선하는 방법을 다룬다. 여기까지 잘 따라왔다면 이제 보다 능숙하게 진화된 Java를 사용하기 위한 훈련에 들어간다. 4부 ‘매일 자바와 함께’는 프로젝트를 구성하는 코드를 더 쉽고 안정적으로 만들 수 있는 Java의 새로운 기능을 살펴본다. 5부 ‘개선된 자바 동시성’은 비동기 Futures, 발행-구독 프로토콜을 기반으로 하는 리액티브 프로그래밍, 플로 API의 캡슐화를 통해 보다 쉽고 안전하게 병렬 프로그래밍을 구현할 수 있는 방법을 다룬다. 마지막 파트인 6부에서는 앞서 다룬 Java의 변화를 둘러보며, 앞으로 Java에 도입될 것으로 예상되는 기능들을 짧게 소개하고 있다.
앞서 살펴본 것처럼, Java는 변화하는 환경에서 새로운 ‘쓸모’를 제공했고, 지금도 그 역할을 위해 변화하고 있다. 이를 개발자의 입장에서 생각해보면 문제 해결을 위한 새로운 도구이다. 기존의 Java를 통해서도 문제를 해결할 수 있지만, 새로운 도구는 문제를 보다 쉽게 해결할 수 있도록 해준다. ‘모던 자바 인 액션’은 새로운 Java를 정복하는 데 좋은 길잡이가 될 것이다.