아이템 15 - 클래스와 멤버의 접근 권한을 최소화하라 - 완벽 공략
이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다.
자바 모듈
자바 9 버전에서의 가장 큰 변화는 Java Platform Module System 이다.
줄여서 JPMS 라고도 부른다.
모듈 시스템은 컴포넌트 간의 더 나은 관계를 표현해 줄 수 있는 방법을 제공한다.
이전에는 어떤 컴포넌트가 다른 컴포넌트에서 사용한다는 걸 표시하는 방법은 classpath 뿐이었다.
classpath 에 jar 파일을 넣음으로써 현재 프로젝트에서 다른 jar 파일을 참조해 사용할 수 있었다.
이 방법은 참조하는 jar 파일이 없더라도 어플리케이션이 동작한뒤 해당 jar 파일을 참조하려고 할 때 알 수가 있었다.
즉, 시작하기 전에 구성하는 jar 파일이 존재하는지 확인하는 기능이 없다는 뜻이다.
Spring Boot 를 사용하는 경우라면 스프링 부트에서 사용하는 jar 파일들을 전부 넣어 jar 파일을 만든다.
이를 우버 자르 또는 fatjar 라고 부른다.
이 경우는 아주 특이한 경우이므로 제외한다.
classpath 는 사용한다는 표현만 있고 컴포넌트들 간의 관계를 표현하는 방법이 존재하지 않는다.
자바 모듈 시스템의 장점은 다음과 같다.
- 자바 모듈 시스템은 컴포넌트들 간의 관계 를 표현할 수 있기 때문에 더 안정적인 설정이 가능해진다.
자바 모듈 시스템은 어떤 패키지를 사용할 것인지 어떤 패키지를 공개할 것인지에 대한 정의 를 할 수 있기 때문에
더 안정적인 설정이 가능하다.
- 보다 강력한 캡슐화가 가능하다.
공개할 수 있는 패키지 를 정할 수 있기 때문에 만약 protected
나 public
으로 된 맴버라도
모듈에서 해당 패키지를 공개하지 않는다면 모듈 외부 에서는 접근 할 수 없다.
하지만 모듈이 아닌 곳에서 모듈을 classpath 에 추가해 사용한다면
모듈에 정의된 protected
나 public
으로 된 맴버를 그대로 사용할 수 있다.
중요한 건 현재 사용하는 어플리케이션이 모듈이냐 아니냐가 중요하다.
이렇게 모듈은 강제하지 않기 때문에 자주 사용하지는 않는다.
- 모듈을 사용하면 자바 런타임 자체를 우리가 필요로 한 것으로만 구성해 만들 수 있다.
자바 9에서 JDK 가 모듈 시스템으로 재구성되었기 떄문에 필요한 모듈을 불러와 JRE 를 구성해 사용할 수 있다.
- 모듈이 없다면 애플리케이션 구동시 알 수 있다.
'개발 공부 > Java' 카테고리의 다른 글
이펙티브 자바 아이템 16 - public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 - 완벽 공략 (1) | 2022.11.14 |
---|---|
이펙티브 자바 아이템 16 - public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 - 핵심 정리 (0) | 2022.11.14 |
이펙티브 자바 아이템 15 - 클래스와 멤버의 접근 권한을 최소화하라 - 핵심 정리 (0) | 2022.11.08 |
이펙티브 자바 아이템 14 - Comparable 을 구현할지 고민하라 - 완벽 공략 (0) | 2022.10.31 |
이펙티브 자바 아이템 14 - Comparable 을 구현할지 고민하라 - 핵심 정리 (0) | 2022.10.31 |
댓글