책 리뷰

[리뷰] Java 9 모듈 프로그래밍

seungdols 2018. 5. 27. 13:26

[Book] Java 9 모듈 프로그래밍 후기

말도 많고, 탈도 많던 프로젝트 Jigsaw가 드디어 java9의 스펙이 표준안으로 채택 되었습니다.

원래는 투표에서 탈락하여 빠지는 것으로 방향이 바뀌기도 했었는데, 결국 재투표를 통하여 이 프로젝트가 java9 스펙에 포함되었습니다.

Jigsaw는 무엇이냐면, 자바 플랫폼 자체에 모듈화의 개념과 기능을 도입하는 것을 말하며, 이를 Jigsaw 프로젝트라 명명했고, 대두된 시기는 상당히 오래 전입니다.

Jigsaw는 아래와 같은 노력으로 이루어진 결과라 할 수 있습니다.

  1. 플랫폼 소스 코드를 모듈화에 적합하게 재구성한다.

  2. 사전 정의된 입력과 출력 인터페이스, 명확한 의존성 지도로 모듈을 정의하고 만든다.

  3. 내부 클래스를 캡슐화하고, 오직 공개 API만 호출할 수 있게 한다.

  4. 작고 모듈화된 런타임 이미지를 생성하는 도구를 제공하여 모놀리식 rt.jar를 대체한다.

사실 java9에 REPL도 포함되면서 많은 주목을 받기도 했으나, 모듈화라는 개념 도입이 가장 큰 패러다임의 변화였습니다.

java8에서는 함수형 패러다임을 담으려고 stream API를 도입했죠.

물론, 많은 이들이 모르지만, Java8에서 콤팩트 프로파일이란 것을 도입했다고 하더군요. 자바 런타임의 소형 버전을 선택할 수 있도록 하는 것입니다.

java9에서는 전체 java 플랫폼이 모듈로 그룹화되어있다고 합니다. CollectionThread부터 ConnectionLogger까지 모든 자바 클래스가 해당 됩니다.

모든 플랫폼 클래스는 런타임, JDK와 함께 바로 사용할 수 있는 새로 생성된 자바 모듈에 보관됩니다. 각 모듈은 독립적이며, 공개 API와 내부 클래스로 구성되고 일반적으로 잘 어울리는 타입과 클래스로 묶여있습니다.

즉, 앞으로는 의미 없이 항상 import하던 java.*, javax.* 패키지를 추가하지 않아도 됩니다.

앞으로의 자바 플랫폼 모듈이 캡슐화 되어 내부 클래스를 외부로부터 온전히 보호 할 수 있다는 장점에 있다고 생각합니다. 특히, 플랫폼 개발자들에게는 더할 나위 없는 장점이 될거라 생각합니다.

그리고 모듈화에 대한 개념이 추가 되며, 링킹이라는 개념도 추가적으로 도입하게 되었습니다. 이러한 모듈화 관련한 java9에 대한 개념들을 상세하게 소개 하고 있습니다.

그리고 Java8의 유지보수 정책 기간이 2019.1월까지로 설정 되어있습니다. 고로, 웹 어플리케이션의 JDK 업데이트 시기가 점점 다가온다는 뜻입니다. JDK9은 이미 지나고, JDK10이 릴리즈 되었습니다.

JDK11이 LTS버전으로 최소한의 장기간 업데이트 보장을 하는 버전으로 대부분의 서비스들이 java8에서 9로의 마이그레이션 시점이 가장 혼동이 심해지는 시기라고 생각되며, 9에서 11로 가는 데에는 그보다는 반감된 수고스러움으로 마이그레이션이 되리라 생각합니다.

아마 tomcat,jetty등과 같은 어플리케이션 또한 지원을 하기 위한 준비를 하고 있으리라 생각합니다.

새로운 전환점을 맞이하는 Java가 되어 가고 있으며, Java10에서는 Javascript style의 변수 선언 방식이 도입된다는 글도 보았습니다.

모듈화라는 개념에 대해서만해도 책 한권의 분량으로 나오게 되었습니다. 앞으로의 Java는 lightweight를 지향하는 방향과 함께 진정한 함수형 패러다임의 도입과 완전한 일급 객체를 도입 할 수도 있을거라 생각합니다.

반응형