[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [jakartaee-platform-dev] JPMS requirements discussion
|
On 08/06/2021 04:11, Scott Stark wrote:
The "We need to define the JPMS strategy for EE10 and beyond" issue:
https://github.com/eclipse-ee4j/jakartaee-platform/issues/329
<https://github.com/eclipse-ee4j/jakartaee-platform/issues/329>
Has a number of comments. My takeaway from the thread is that we need to
focus on:
1. Do we required that specification API jars provide a
module-info.class description?
If we want the JARs to be usable in a JPMS environment, which I assume
we do, then the answer has to be yes.
2. If yes, what are the requirements for the module-info.class description?
That is defined in the JLS isn't it? (Roughly name plus appropriate
directives for requires, exports, opens, uses and provides.)
There are additional discussions in the thread about whether
multi-release jars could be produced and whether EE applications could
be composed by defining a single application module-info description. I
don't see these as in scope for EE10, but feel free to object.
If a project wants to produce a multi-release JAR I don't see any reason
why they can't but that can be a per project decision. At the platform
level we just need to set the minimum Java version. (Has this been
decided yet?)
How modules interact with Jakarta EE is still TBD in my mind. The module
system doesn't - as far as I can tell - include the concepts of
versioning modules or multiple class loaders. This makes it hard to see
how JPMS can be used through out a Jakarta EE container where there may
be multiple separate applications each using a different version of the
same JPMS module.
Is the https://wiki.eclipse.org/JakartaEE_Maven_Versioning_Rules
<https://wiki.eclipse.org/JakartaEE_Maven_Versioning_Rules> the agreed
upon naming and versioning conventions that answers the open
https://github.com/eclipse-ee4j/jakartaee-platform/issues/174
<https://github.com/eclipse-ee4j/jakartaee-platform/issues/174> issue?
Yes, it is my understanding that those are the agreed naming
conventions. However, they do not cover JPMS module names (which I think
is the only gap).
My previous suggestion was to use the OSGi Bundle-SymbolicName with any
"-" characters replaced by "." but that means names ending in "api" for
the spec JARs and there was pushback on that.
It looks like the consensus is to use ${API_PACKAGE} for the JPMS name.
I don't think it is necessary but I'd add "... with any '-' characters
replaced by '.'" just in case.
As an aside, Apache Tomcat has been using bnd to auto-generate both OSGi
and JPMS metadata with reasonable success.
Mark