In our last blog on Jakarta EE we discussed that moving Java EE technologies to Jakarta EE was a huge undertaking. We have made enormous progress over the past few months, contributing all of Oracle GlassFish sources to Jakarta EE, as well as contributing sources for the Java EE Technology Compatibility Kits (TCKs). Completion of this step in the process represents a significant milestone for the Jakarta EE initiative, so we thought we'd take some time to review why we're doing this and what we've done.
We're contributing this software for a number of reasons. First, we want Jakarta EE to evolve based on community directions, without the perception of control by any single vendor. Moving Oracle GlassFish and its components into Eclipse projects enables these technologies to evolve in a vendor-neutral manner. Second, as we establish Jakarta EE as a set of standards and a brand, we want to demonstrate that we have real implementations that deliver on our compatibility goals. Eclipse GlassFish, built from the Oracle GlassFish sources contributed to the Eclipse Foundation, will not be the reference implementation of Jakarta EE - there will not be a single reference implementation - but it is likely to become one of the first Jakarta EE implementations, and it will be a tangible demonstration that Jakarta EE technologies are compatible with Java EE. Finally, we intend to establish a well defined set compatibility tests for Jakarta EE implementations. We felt the best place to start was with Java EE 8 TCKs, which are the latest version of the Java EE compatibility tests that have been used to establish Java EE compatibility for years. With the contribution of these TCKs, we in Jakarta EE are empowered to immediately define a first set of compatibility tests for Jakarta EE 8, and to evolve these tests as evolution of the standards dictates, by evolving the TCK sources.
To deliver these sources, Oracle first organized all of the Oracle GlassFish 5.0 sources into a set of components that could be mapped to specific Eclipse projects under the umbrella EE4J project. There are 39 EE4J projects, including recognizable components such as Jersey, JAX-RS, Mojarra, JSON-P, a project for the TCKs, and the Krazo MVC project - a new Jakarta EE technology not included in GlassFish. For each of these projects we created a set of GitHub repositories at Eclipse to host contributed sources. Oracle went through a process of reviewing Oracle GlassFish sources and associated licenses to ensure readiness to contribute, and then executed the Eclipse process for contributions, including review of sources by the Eclipse Foundation. As contributions completed this review, they have been published to the corresponding GitHub repositories. Per the summary status page we have published contributions to all of the project repositories, except for Krazo and the Platform project which is intended to host Jakarta EE specifications. So we now have open sources that can be used for Jakarta EE implementations, hosted at the Eclipse Foundation. Some of these projects have already completed the Eclipse release review process.
We have begun creating Eclipse GlassFish builds using these sources and will be posting downloads of nightly builds. We will run the Java EE 8 TCKs against these nightly builds with the goal of creating a release of Eclipse GlassFish that is Java EE 8 compatible. We hope to complete this process per the schedule posted here. Become a committer for EE4J and reach out to project leads if you'd like to help.
You will have the opportunity to here more about this at EclipseCon Europe and Oracle Code One. See the Cloud Native Java track at EclipseCon Europe and Jakarta EE sessions in the Java Server-Side Development and Microservices track at Oracle Code One. Hope to see you at one or the other!