Eclipse Jakarta EE 9 Reaches Milestone 1

The Eclipse Foundation this week announced Jakarta EE 9 Milestone 1, the final version of the enterprise Java specification before the first Release Candidate (RC).

The Jakarta EE 9 release marks the final transition away from the javax.* namespace (which Oracle refused to give up) to Eclipse's jakarta.*. This release updates all the APIs to use jakarta.* in package names.

In fact, Mike Milinkovich, executive director of the Eclipse Foundation, says that transition is really what this release is all about.

"The main purpose of Jakarta EE 9 is to provide a release that is very similar to Java EE 8," Milinkovich told ADTmag, "with everything converted to the jakarta.* namespace. We're providing a stable technical conversion platform, so all the tools and frameworks in the ecosystem that are using, say, javax.servlet, can make the change with confidence."

Giving the ecosystem solid footing for the transition from the Java EE coffee cup to the Jakarta EE sailboat is the Foundation's way of setting the stage for rapid innovation, Milinkovich said, once the transition is largely complete.

"These technologies have been around for an awfully long time," he added, "and we had to provide folks with a stable platform for the conversion. At the same time, thanks to a contribution from IBM, we have the Eclipse Transformer Project, which is going to provide runtime enablement. If someone has an application they don't want to recompile, and that application is using the javax.* namespace, they will be able to run it on top of a Jakarta-compatible app server. That's going to provide binary compatibility for apps, going forward. There are a lot of different pieces coming together here, and the contributions have been coming from a number of different sources. I want to mention Kevin Sutter at IBM, who's really taking on the burden of moving the specifications forward. If you look at Glassfish, you'll see that the project leads are from Payara and Fujitsu. If you look at the TCKs, you'll see that a lot of the work going into that is coming from Red Hat. We have this nice balance of different interests coming together on different parts of the initiative."

Jakarta EE defines a standard architecture with the following elements:

  • Jakarta EE Platform - A standard platform for hosting Jakarta EE applications.
  • Jakarta EE Compatibility Test Suite - A suite of compatibility tests for verifying that a Jakarta EE platform product complies with the Jakarta EE platform standard.
  • Jakarta Compatible Implementations - Certified implementations for building and deploying Jakarta EE applications.

The Eclipse Foundation also announced 12 new product certifications for Jakarta EE 9.

"The Eclipse foundation specification process says that before you can release a new version of the spec, you have to have at least one compatible implementation available under an open source license," Milinkovich explained. "And at least currently, just from a pure technical perspective, the TCK [Technology Compatibility Kit]. That was originally contributed by Oracle is tied to glassfish. So, as of this moment, in order to ship or release, we have to get Glassfish, which is made up of about 20 projects. There's a whole bunch of stuff that implements the various reference implementations for a bunch of the specs."

Jakarta EE 9 release also removes specifications from Jakarta EE 8 that were old, optional, or deprecated, according to the GitHub site, in order to reduce the surface area of the APIs and ensure that it's easier for new vendors to enter the ecosystem. This also reduces the burden on implementation, migration, and maintenance of the old APIs.

The GitHub site states that the Jakarta EE Platform Project team sees Jakarta EE 9 primarily as a tooling release:

  • A platform from which tooling vendors can create and update their tools to support the new jakarta.* namespace.
  • A platform that development teams can use as a stable target for testing migration of their applications to the new namespace.
  • A platform that runtime vendors can use to test and deliver options and capabilities that support migration and backwards compatibility with Jakarta EE 8.
  • A foundation for innovation that Jakarta EE specification projects can use to drive new features for release in Jakarta EE 10 and beyond.

"There are a lot of moving parts," Milinkovich said, "and we have to line them all up on the same day to actually do the release. The day we do the release, it all has to work perfectly. So, when the compatible implementation passes 100% of the test cases in the TCK, can we declare victory."

About the Author

John K. Waters is the editor in chief of a number of sites, with a focus on high-end development, AI and future tech. He's been writing about cutting-edge technologies and culture of Silicon Valley for more than two decades, and he's written more than a dozen books. He also co-scripted the documentary film Silicon Valley: A 100 Year Renaissance, which aired on PBS.  He can be reached at [email protected].