Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow Jakarta EE 9.1 level APIs, but require TCKs pass and CCRs are clear #293

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions spec/src/main/asciidoc/architecture.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,10 @@ The specifications for each release are listed in reverse chronological order.
[[microprofile6.0]]
=== MicroProfile 6.0

MicroProfile 6.0 replaces required individual Jakarta specifications in prior releases like Jakarta Restful Web Services and JSON Binding with the Jakarta EE 10 Core Profile.

Based on MicroProfile's time-boxed release process, this is a major release that includes backward incompatible changes. This release requires Jakarta EE Core Profile 10, which uses the `jakarta` namespace introduced in Jakarta EE 9.
MicroProfile 6.0 adds support for the Jakarta EE 10 Core Profile as an alternative to supporting individual Jakarta specifications like Jakarta Restful Web Services and JSON Binding as in prior releases. Additionally, 6.0 adds requirements for all required Jakarta TCKs to be passed.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The phrase:

Additionally, 6.0 adds requirements for all required Jakarta TCKs to be passed.

seems redundant since that requirement was already there.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean it was already there in other sections that mention 6.0 or was already there in 5.0?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean there was a long discussion a few years back about whether or not a MicroProfile implementation required the CDI/JAX-RS and JSON-* specifications to pass and my understanding of the conclusion of that discussion was that they were. Making it clearer in the text that this is required is obviously a good thing, but stating that you are adding a requirement that was already there reverses the outcome of the discussion we had in the past about CDI/JAX-RS and JSON-* TCKs needed to be passing.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@NottyCode it was the reverse. Prior to this PR from John in October the spec said, "Passing the Jakarta specifications TCKs is optional." I was attempting to be consistent with that PR and state that if you are on Jakarta EE 9.1, passing the related Jakarta TCKs is still required.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the past, it was argued that CDI TCKs contained EJB, which was not supported by MicroProfile. The whole point of Jakarta EE 10 Core Profile was to fix the problem so that Jakarta EE 10 Core Profile can be consumed by MicroProfile and strengthen up the compliance, which was why MP adopts Jakarta EE 10 Core Profile.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are ok passing all related Jakarta EE 9.1 TCK tests.


If you are still dependent on Jakarta EE 9.1, please consider using the https://github.com/eclipse/microprofile/releases/tag/5.0[5.0 release of MicroProfile].
Support for individual Jakarta EE 9.1 is no longer required. If you are still dependent on Jakarta EE 9.1, please see the compatible implementations page on microprofile.io for implementations that support Jakarta EE 9.1 or consider using the https://github.com/eclipse/microprofile/releases/tag/5.0[5.0 release of MicroProfile].
If you are still dependent on Jakarta EE 8, please consider using the https://github.com/eclipse/microprofile/releases/tag/4.1[4.1 release of MicroProfile].
If you are still dependent on Java EE 8, please consider using the https://github.com/eclipse/microprofile/releases/tag/3.3[3.3 release of MicroProfile].
If you are still dependent on Java EE 7, please consider using the https://github.com/eclipse/microprofile/releases/tag/1.4[1.4 release of MicroProfile].
Expand All @@ -60,7 +59,7 @@ MicroProfile 6.0 has the following backward incompatible changes compared to Mic

* https://download.eclipse.org/microprofile/microprofile-metrics-5.0.0/microprofile-metrics-spec-5.0.0.html#_incompatible_changes[MicroProfile Metrics Incompatible changes]
* MicroProfile OpenTracing replaced by MicroProfile Telemetry
* Includes Jakarta EE 10 Core Profile
* Support for individual Jakarta EE 9.1 APIs no longer required

The Maven coordinates for this Eclipse release are as follows:
[source,xml]
Expand Down
24 changes: 18 additions & 6 deletions spec/src/main/asciidoc/required-apis.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@

MicroProfile implementations must include the following specifications:

- <<jakartaee-core-profile, Jakarta EE Core Profile 10>>
- <<mp-config, MicroProfile Config 3.0>>
- <<mp-fault-tolerance, MicroProfile Fault Tolerance 4.0>>
- <<mp-health-check, MicroProfile Health 4.0>>
Expand All @@ -33,8 +32,7 @@ MicroProfile implementations must include the following specifications:
- <<mp-rest-client, MicroProfile Rest Client 3.0>>
- <<mp-telemetry, MicroProfile Telemetry 1.0>>

A MicroProfile compatible implementation must pass *all* required TCKs provided by each MicroProfile specification,
including the Jakarta EE Core Profile 10 TCK.
A MicroProfile compatible implementation must pass *all* required TCKs provided by each MicroProfile specification.
Passing the MicroProfile optional TCKs is not required.

These APIs and versions guarantee application developers a minimum set of APIs, but they are not intended to be
Expand All @@ -46,10 +44,10 @@ restrictive.
This MicroProfile platform specification requires Java SE 11 for both source and target compatibility. Some component specifications may still support a Java SE 8 minimum version when used standalone. MicroProfile
implementations that support the MicroProfile platform specification can provide support Java SE 11 or higher.

[[jakartaee-core-profile]]
=== Jakarta EE Core Profile 10
[[jakartaee]]
=== Jakarta EE

MicroProfile 6.0 and above requires https://jakarta.ee/specifications/coreprofile/10/[Jakarta EE 10 Core Profile] support.
MicroProfile 6.0 adds support for the https://jakarta.ee/specifications/coreprofile/10/[Jakarta EE 10 Core Profile].

* Jakarta Annotations 2.1
* Jakarta Contexts and Dependency Injection (Lite Section) 4.0**
Expand All @@ -59,8 +57,22 @@ MicroProfile 6.0 and above requires https://jakarta.ee/specifications/coreprofil
* Jakarta JSON Processing 2.1
* Jakarta RESTful Web Services 3.1

Implementations based on the Jakarta EE 10 Core Profile must pass *all* required Jakarta EE 10 Core Profile TCKs.

pass:[**] Full CDI support is not required. CDI SE support is not required.

MicroProfile 6.0 allows optional support for Jakarta EE 9.1 and other Jakarta EE profiles provided the minimum APIs are implemented and *all* required TCK tests pass:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm surprised to read this given the email thread on this subject concluded with the following:

Thank you for the good discussion. I think in the interest of moving things forward we can wrap this up as there being no real support for including MicroProfile 6.0 implementations based on Jakarta EE 9.1. Not due to technical limitations, but due to preference, which is ok.
https://groups.google.com/g/microprofile/c/ZngsfSv3RrQ

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See my note on the list. Emily reached out me and there was another discussion on Tuesday where some willingness to revisit was expressed and I was requested to create a PR for people to evaluate.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But I think there are technical problems. A user can build an application with MP 6.0 API as the sole dependency and can use, for example the classes BeanContainer, BuildCompatibleExtension, EntityPart, etc..

The application builds fine but fails deployment as those classes are not available in a Jakarta EE 9.1 runtime.

So the compatibility no longer means it is able to run all applications build on top of the MP 6.0 API and thus certification s meaningless for vendors and users.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dblevins Can you provide me with a link to the discussion on Tuesday? I don't see it on the list.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@NottyCode it was the on the technical call. I don't know where those are being posted these days. @jclingan is that up anywhere?


* Jakarta Annotations 2.0 _or higher_
* Jakarta Contexts and Dependency Injection 3.0 _or higher_
* Jakarta Dependency Injection 2.0 _or higher_
* Jakarta Interceptors 2.0 _or higher_
* Jakarta JSON Binding 2.0 _or higher_
* Jakarta JSON Processing 2.0 _or higher_
* Jakarta RESTful Web Services 3.0 _or higher_

Implementations must list in CCRs and Public TCK Results Summary pages the exact Jakarta EE version and profile that is supported.

[[mp-config]]
=== MicroProfile Config 3.0

Expand Down