module-info.java just causes problems
David M. Lloyd
david.lloyd at redhat.com
Thu May 12 16:37:34 UTC 2016
This is along the lines of what I've requested. Still waiting for any
kind of feedback though.
On 05/12/2016 11:19 AM, Paul Benedict wrote:
> Why can't the layer assist specifying the Module Configuration to each
> module in the Module system? By that I mean that the module-info.class
> shouldn't be read and accepted without mediation. The Layer should get
> the chance to augment (add, change, remove) anything it wants. Now
> perhaps the default behavior is to blindly accept module-info.class, but
> in an EE world, I say this is insufficient. The container should be able
> to do whatever it wants to the module information before it gets applied
> by the JDK.
>
> Cheers,
> Paul
>
> On Thu, May 12, 2016 at 6:46 AM, David M. Lloyd <david.lloyd at redhat.com
> <mailto:david.lloyd at redhat.com>> wrote:
>
> On 05/12/2016 02:28 AM, Alan Bateman wrote:
>
> On 11/05/2016 15:14, David M. Lloyd wrote:
>
>
> We package several hundred JARs in our modular environment
> today, only
> some of which originate in-house. The dependency
> information for
> these modules is established not by the author of these
> JARs, but by
> us. The Maven artifact for such a JAR might stipulate
> certain things,
> like Log4j or a certain version of ASM. When we distribute
> that JAR
> though, we don't package the exact artifacts and versions of the
> dependencies that were stipulated in the Maven POM; instead
> we package
> single consistent versions which are ABI-compatible with all
> of its
> dependents, or maybe even a completely different artifact
> that meets
> the same ABI but performs its functions in a different manner.
>
> Over time the environment we distribute evolves, and we
> split or join
> modules, or we rename old modules to introduce a new major
> version of
> the same module in parallel, or we replace one
> implementation with
> another. When we do this we may chose to deprecate or
> eliminate a
> module from our environment. Thus we update all the module
> descriptors that reference the deprecated module, and set new
> dependencies on them, and after a certain amount of time, we
> delete
> the old module name.
>
> None of the artifacts that we package are impacted by this
> process,
> and generally no recompilation is necessary: after all, many
> of these
> artifacts come directly from Maven or are otherwise built
> independently at an earlier time outside of the context of
> our target
> environment. It's the ABI that matters; as long as that
> doesn't change
> (in an incompatible way), recompilation should never be
> necessary. I
> think "recompile just to be safe" puts us squarely into
> "turn it off
> and on again" territory, logically speaking.
>
> Thanks for the context. So I'm curious what will happen when you
> download JAR that is a modular JAR where the author have put in the
> effort to declare their dependences and exports, maybe services
> too. Are
> you going to override that too?
>
>
> Almost certainly. At the very least we're going to review it to see
> if the module names match with our environment. If we retain our
> current modularity system then we'd likely have to externalize the
> descriptor as well, probably manually, and the internal one would be
> stripped out or ignored. But, that is as yet undecided and may
> depend on whether and how many of our issues get resolved in Jigsaw.
>
> --
> - DML
>
>
--
- DML
More information about the jigsaw-dev
mailing list