2016-12-05 4 views
0

저는 Java 9 모듈 시스템에 적합한 모범 사례를 사용하여 이점을 얻으려는 노력이 줄어들므로 (현재 시스템은 일부 모듈성의 이점을 누릴 수 있습니다).Java 9 모듈을 사용하면 여러 모듈이 동일한 패키지를 내보낼 수 있습니까?

모듈 A의 현재 표준에서 com.example.foo 패키지를 내보내거나 모듈 B가 com.example.foo 패키지를 내보낼 수 있습니까?

관련된 질문으로,이 지점이 실제로 정산되었는지 또는 여전히 최종적이지 않은지 여부입니다.

+2

아직 아이디어가 없지만 https://en.wikipedia.org/wiki/Package_principles (CRP에서 esp "inseparable")에 위배되기 때문에 모듈로 그런 일을 시작해야하는지 의심합니다. – zapl

+1

나는 A와 B를 동시에 같은 JVM에로드하려면? – Jay

+2

이 질문의 closers에게 : 링크 된 질문은 수출하지 않은 패키지에 관한 것이며,이 질문은 수출되는 패키지에 관한 것입니다. 나는 그 차이가 적절하다고 생각한다. – Jay

답변

3

최신의 State of the Module System에 따르면, 모듈 시스템은 "모든 모듈이 주어진 패키지를 정의하는 모듈을 하나만 읽으며 동일하게 이름이 지정된 패키지를 정의하는 모듈은 서로 간섭하지 않는다"는 것을 보장합니다. 그리고 : "모듈의 코드가 패키지의 유형을 참조하는 경우 해당 패키지는 해당 모듈 또는 해당 모듈이 읽은 모듈 중 하나에서 정의되도록 보장됩니다."

즉, 빌드 타임과 런타임시 모듈이 동시에 A와 B에 의존하지 않고 A와 B가 서로 종속되지 않으면 두 개의 다른 모듈이 동일한 패키지를 내보낼 수 있습니다. 이론적으로 동일한 패키지를 내보내는 두 개의 모듈을 가질 수 있으며 다른 모듈과 함께 한 번에 하나씩 사용할 수 있습니다.

이미 제안 된 것처럼 패키지를 두 개가 아닌 단일 모듈로 내보내는 것이 좋습니다.

+0

나는 이것이 동일한 클래스를 제공하는 여러 가지 가능한 의존성을 가진 로깅 프레임 워크와 같은 것이 받아 들일 만하지만 다른 모든 것들은 일관되게 나뉘어 질 필요가 있음을 암시한다. –