Introducing Jakarta EE 9...
Tags: java, jakartaee, programming, news
Published: 2020-12-21 00:15:32

Since Oracle's announcement that it would submit Java EE to the Eclipse Foundation the Java community has received 2 official Jakarta EE releases, the latest being Jakarta EE 9 (released on 22 November 2020).

So what can we look forward to with this release?

## Objectives with Jakarta EE 9
The main objective of Jakarta EE 9 is to deliver a set of specifications functionally similar to Jakarta EE 8 but in the new Jakarta EE 9 namespace `jakarta.*`. That's right: the old `javax.*` namespace has been replaced by the `jakarta.*` namespace. This makes it the very first official Jakarta EE release that is not reliant on the previous Oracle namespace.

## Changes in Jakarta EE 9
With the shift of the Jakarta EE namespace, developers must be aware of changes and updates on the following:
 - Every API were transitioned from `javax` namespace to `jakarta` namesapce. This means that the Jakarta EE specification were changed to reflect the API changes as well as the implementation specification of the API were changed to handle the new APIs.
 - Jakarta EE 9 release removes specifications from Jakarta EE 8 that were old, optional, or deprecated in order to reduce the surface area of the APIs. Thus, CORBA implementations no longer exists in Jakarta EE 9. SOAP specifications are deemed stable. There won't be any future plans to work on the technology.
 - All specifications included in the Jakarta EE 9 release have been versioned to a new major version of the specification document. For example, JPA 2.x (in Jakarta EE 8) is now JPA 3.0 in Jakarta EE 9
 - **No backward compatibility**. Jakarta EE 9 is not backward compatible with Jakarta EE 8 or Java EE 8. It's not recommended to mix Jakarta EE 8 artifacts with Jakarta EE 9 and vice versa.

## Migrating to Jakarta EE 9
Migrating to Jakarta EE 9 will require that developers/users must begin transitioning to [Jakarta EE 9 compatible application servers](https://jakarta.ee/compatibility/#tab-9). Currently, at the time of writing this post, [Glassfish 6](https://glassfish.org/download) supports Jakarta EE 9. Until other vendors release Jakarta EE 9 compatible products and applications servers, user migration and transitioning to Jakarta EE 9 might take a while. Note that this might be an expensive exercise to upgrade to Jakarta EE 9 so users must be aware of whether the rich feature set that comes Jakarta EE 9 is worth the upgrade.

For developers willing to start working with Jakarta EE 9 release, one needs to just update their `pom.xml` (if the project is Mavenized), by adding the following dependency:

```xml
<dependency>
    <groupId>jakarta.platform</groupId>
    <artifactId>jakarta.jakartaee-api</artifactId>
    <version>9.0.0</version>
    <scope>provided</scope>
</dependency>
```
And ensuring that they organise their import to change their namespace from `javax` to `jakarta`. Jakarta EE 9 is compatible with Java SE 8. 

## The Future of Jakarta EE (Jakarta EE 10 and beyond)

The future of Jakarta EE will be a much more exciting release for application developers than Jakarta EE 9 because the Eclipse Foundation encourages developers and the Java community to put their ideas forward so that features and functionality that we can help drive what technology to include (such as cloud-native technology, etc.) to help move Jakarta EE forward.

The best way is to join the [Jakarta EE mailing lis](https://jakarta.ee/connect/mailing-lists/)t to start driving the discussion of Jakarta EE 10 forward.

Have you migrated to Jakarta EE 9 yet or are you planning to migrate to Jakarta EE 9? We look forward to continuing to see how this most recent update to Jakarta EE 9 will impact the Java community.