[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [jakartaee-platform-dev] API compile source and target levels
|
For those of you
unable to attend the Platform call this week (https://docs.google.com/document/d/1EJ2ilaPhMnQqa3aw6AmwjRbBPGL3_np4uuwklgfqPZI/edit?nbsp#),
here is the conclusion for this API source/target level...- Minutes:
- The recommended combining
of the two bullets (Major and Minor version) is approved. We will
leave this as a “recommendation” and not a “requirement” to allow component
APIs to stay at a lower JDK level if the move to Java 11 is not a requirement.
- If your component
Specification is planning a Major or Minor version update for Jakarta EE
10, then the recommendation would be to recompile and distribute your APIs
at the Java SE 11 source/target levels.
- Any building of the
API jar files should use the “--release” option to the compiler (instead
of the source/target java levels).
- <maven.compiler.release>11</maven.compiler.release>
- The Platform and Web
Profile uber API jar files will all be re-built with the Java 11 target
level (consistent with past practices).
- For Jakarta EE 10,
we will keep creating the uber JARs but indicate they are being deprecated
- Later versions of Jakarta
EE may remove these uber JARs
- BOMs are already being
generated and distributed
I will
update the jakartaee-api Issue (https://github.com/eclipse-ee4j/jakartaee-api/issues/107)
as well... Thanks!
---------------------------------------------------
Kevin Sutter
STSM, Jakarta EE and MicroProfile architect @ IBM
e-mail: sutter@xxxxxxxxxx Twitter: @kwsutter
phone: tl-553-3620 (office), 507-253-3620 (office)
LinkedIn: https://www.linkedin.com/in/kevinwsutter
Part-time schedule: Tue, Wed, Thu (off on Mon and Fri)From:
"Brian
Stansberry" <brian.stansberry@xxxxxxxxxx>To:
"jakartaee-platform
developer discussions" <jakartaee-platform-dev@xxxxxxxxxxx>Date:
07/08/2021
17:25Subject:
[EXTERNAL]
Re: [jakartaee-platform-dev] API compile source and target levelsSent
by: "jakartaee-platform-dev"
<jakartaee-platform-dev-bounces@xxxxxxxxxxx>
All of the below
makes sense to me. I'm glad to see this topic being handled this way, i.e.
striving to avoid driving binaries to do new releases when they'd otherwise
work fine.On Thu, Jul 8, 2021 at 7:39 AM BJ Hargrave
<hargrave@xxxxxxxxxx>
wrote:For binary compatibility,
which is the purpose of semantic versioning, we need to think of existing
binaries (libraries and application) and not the Jakarta EE implementations. Recompiling an existing
Jakarta EE API (assuming no semantic change to the API) to change the target
to Java 11 does not affect existing binaries using the API. They can continue
to run unchanged on a new Jakarta EE 10 implementation which itself will
require Java 11. But the existing binaries do not require any change at
all. If you change the major
version of the Jakarta EE API just because you change the target to Java
11, then you signal to everyone that existing binaries using that API cannot
work on Jakarta EE 10 implementations which becomes yet another major inflection
point and shows instability in Jakarta EE evolution. So if there is no change
to a Jakarta EE API for Jakarta EE 10, then no need to rebuild and republish
API artifacts. So the existing artifacts with target 8 are just fine. If Jakarta EE API is
getting a minor or major semantic change for Jakarta EE 10, then compile
for target Java 11. Since a minor semantic change does not affect existing
binaries, they will work fine with the new API running in a Jakarta EE
10 implementation on Java 11. Any code which wishes to use the changes
(minor or major) in the Jakarta EE API will need source code changes and
recompilation and will also have a runtime dependency on a Jakarta EE 10
implementation, so there is no downside for the Jakarta EE API artifact
to be target Java 11. So just recompiling
for target Java 11 does not constitute a semantic change in the API in
that existing binaries work without change. So it is wrong, and sends a
bad message to the market, for us to change the major version of and API
just for a change in target. So Kevin, to your 3
bullets, I am happy with them. With respect to bullet 2, I would also be
happy with just saying use target Java 11 since no new binary can use the
new semantics of the API without running on a Jakarta EE 10 implementation
which itself will require Java 11.--
BJ Hargrave
Senior Technical Staff Member, IBM // office: +1 386 848 1781
OSGi Fellow and OSGi Specification Project lead // mobile: +1 386 848 3788
hargrave@xxxxxxxxxx ----- Original message
-----
From: "Kevin Sutter" <sutter@xxxxxxxxxx>
Sent by: "jakartaee-platform-dev" <jakartaee-platform-dev-bounces@xxxxxxxxxxx>
To: "jakartaee-platform developer discussions" <jakartaee-platform-dev@xxxxxxxxxxx>
Cc:
Subject: [EXTERNAL] Re: [jakartaee-platform-dev] API compile source and
target levels
Date: Wed, Jul 7, 2021 18:56
Thanks, BJ.
I'd like to try to get the discussion going again here on the mailing list
instead of waiting for the call and hoping that everyone shows up...
Maybe we can finalize this on the next call.
To clarify... You are indicating that just because an API is getting
compiled at a new Java target level, that does not affect the binary compatibility
of the API. Yes, the java runtime dependency has changed, but the
API itself is still binary compatible. The decision of whether to
update the Major or Minor version should be solely on the changes to the
API itself, not based on the Java target level.
If I have this right, then the following updates are required to my earlier
statements: - If your component
Specification is planning a Major version update for Jakarta EE 10, then
the recommendation would be to recompile and distribute your APIs at the
Java SE 11 source/target levels.
- If your component
Specification is planning a Minor version update for Jakarta EE 10, then
the recommendation is to continue compiling and distributing your APIs
at the Java 8 source/target levels. If there is a compelling reason
to recompile your APIs at Java 11 target level, you are welcome to do that.
- If your component
Specification is not planning either a Major or Minor version update for
Jakarta EE 10, then just leave your APIs as-is. If you feel compelled
to recompile and distribute at the Java 11 target level, then plan for
a service release (x.y.z) to indicate the change.
-
Better?
Thanks again!
---------------------------------------------------
Kevin Sutter
STSM, Jakarta EE and MicroProfile architect @ IBM
e-mail: sutter@xxxxxxxxxx Twitter: @kwsutter
phone: tl-553-3620 (office), 507-253-3620 (office)
LinkedIn: https://www.linkedin.com/in/kevinwsutter
Part-time schedule: Tue, Wed, Thu (off on Mon and Fri)
From: "BJ
Hargrave" <hargrave@xxxxxxxxxx>
To: jakartaee-platform-dev@xxxxxxxxxxx
Date: 07/07/2021
17:17
Subject: [EXTERNAL]
Re: [jakartaee-platform-dev] API compile source and target levels
Sent by: "jakartaee-platform-dev"
<jakartaee-platform-dev-bounces@xxxxxxxxxxx>
> The reasoning
behind this is that a recompile and redistribution of an API at a higher
Java target level would constitute a semantic "breaking change"
and, thus, require a Major version update.
This seems to go completely against the discussion and conclusion from
the 6/22 call. From the 6/22 minutes:
> CONCLUSION:
As long as existing binaries still work, it’s just a minor update. Binary
compatibility is preserved.
If we are going to revisit already decided things, it is important to get
those involved in the prior decision in the discussion again. Both Tom
Watson and myself did not make the call this week and we still support
the original conclusion from 6/22. So, I think this still needs more discussion.
--
BJ Hargrave
Senior Technical Staff Member, IBM // office: +1 386 848 1781
OSGi Fellow and OSGi Specification Project lead // mobile: +1 386 848 3788
hargrave@xxxxxxxxxx
----- Original message -----
From: "Kevin Sutter" <sutter@xxxxxxxxxx>
Sent by: "jakartaee-platform-dev" <jakartaee-platform-dev-bounces@xxxxxxxxxxx>
To: "jakartaee-platform-dev" <jakartaee-platform-dev@xxxxxxxxxxx>
Cc:
Subject: [EXTERNAL] [jakartaee-platform-dev] API compile source and target
levels
Date: Wed, Jul 7, 2021 15:16
Following up on a couple of recent Platform Call discussion points...
Currently, the Platform and Web Profile API uber jar files are compiled
at the Java 8 source and target levels. Based on the proposed move
to Java 11 as the new minimum, these uber jars will now be compiled at
the Java 11 source and target levels.
A few notes concerning this update...- Documenting the
update via this Issue: https://github.com/eclipse-ee4j/jakartaee-api/issues/107(comments
welcome here or in the Issue)
- There is no requirement
for individual component Specification APIs to compile at the Java 11 source/target
level. The change I am referring to is for the Platform and Web Profile
API uber jar files only.
- If your component
Specification is planning a Major version update for Jakarta EE 10, then
the recommendation would be to recompile and distribute your APIs at the
Java SE 11 source/target levels.
- If your component
Specification is planning a Minor version update for Jakarta EE 10, then
the recommendation is to continue compiling and distributing your APIs
at the Java 8 source/target levels. If there is a compelling reason
to recompile your APIs at Java 11 target level, then you may need to re-do
your Release Plan as a Major version update.
- If your component
Specification is not planning either a Major or Minor version update for
Jakarta EE 10, then just leave your APIs as-is.
- The reasoning
behind this is that a recompile and redistribution of an API at a higher
Java target level would constitute a semantic "breaking change"
and, thus, require a Major version update. To avoid requiring all
Specifications to do a Major version update for Jakarta EE 10, allowing
existing APIs to remain at Java 8 (or even earlier in one case) is a fine
alternative.
- One last note...
There was some discussion about just discontinuing the creation of these
uber jars. At this point, there is still enough interest and usage
of these uber jars to warrant continued generation and distribution.
If and when JPMS creeps into the Platform and Profile API jar files, then
this decision may need to be revisited. But, for Jakarta EE 10, we're
going to continue creating them.
Comments welcome here or via the Issue. Thanks!
---------------------------------------------------
Kevin Sutter
STSM, Jakarta EE and MicroProfile architect @ IBM
e-mail: sutter@xxxxxxxxxx Twitter: @kwsutter
phone: tl-553-3620 (office), 507-253-3620 (office)
LinkedIn: https://www.linkedin.com/in/kevinwsutter
Part-time schedule: Tue, Wed, Thu (off on Mon and Fri)
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev
-- Brian StansberryPrincipal Architect, Red Hat JBoss EAPHe/Him/His_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev