- @참고: https://greatkim91.tistory.com/197
위 글에서
1. Java9 의 장점
2. Java9 의 탄생 목적(기존의 문제점)
3. Java9 에서 가능해진 일
4. Java9에서 고려해야 할 점(넘어야할 산)
등에 대해서 잘 설명해두었다.
기존 Java 의 캡슐화 지원이 부족해서 Java9 가 생겼다고 하는데, 이는
기존에 JAR 로 제공된 패키지에서 사용하는 class 만 노출하기가 안된다는 점이다. 왜냐하면 기존에는 대부분의 클래스가 public 이기 때문이다.
문제는 API 제공자가 기능 향상이나 리팩토링을 하기 위해 이러한 내부용 API 를 바꾸고 싶을 때 문제가 된다.
Java Jigsaw 프로젝트는 유연한 런타임 이미지를 만들 수 있도록 Java 플랫폼을 모듈화한다. 이말은 Java 진형의 개발자가 jdk 자체도 자유롭게 업그레이드 할 수 있게 된다는 말이다.
작은 모듈 단위로 관리됨으로, 언어 레벨에서 모듈간의 의존성을 알 수 있으며, 애플리케이션이 사용하는 모듈만 모아 런타임환경(이미지)를 만들 수 있다.
언어레벨에서 모듈화를 지원하기 때문에 도구레벨에서 가능한 일로
java runtime 을 쪼갤 수 있다. 즉 배포시 사용하지 않는 Swing, XML, SQL 같은 패키지를 제외하고 배포할 수 있다.
- 런타임 이미지가 작아지는 것의 이점으로
1. 소형 디바이스에서 사용가능
2. 경량으로 도커 이미지, 클라우드 컴퓨팅, 마이크로 서비스에서 활용가능
3. 모듈화 시스템은 스타트업 시 필요한 모듈만 로드할 수 있어서 시간, 성능 향상
4. JDK, JRE 통합 가능
단 주의점으로 cyclic dependency(모듈간 상호 참조) 를 주의해야한다.