back to all blogsSee all blog posts

Jakarta EE beta on Open Liberty

image of author image of author image of author
Alasdair Nottingham , Kevin Sutter , and Laura Cowen on Jun 22, 2020
Post available in languages:

Our first Open Liberty beta (released today) makes available the first three Jakarta EE 9 features that we’ve implemented. We’ll be releasing regular betas and adding more Jakarta EE 9 features as we go.

Open Liberty betas

When we first released the Open Liberty open source project, we focused mainly on adding production-quality capabilities to Liberty and releasing completed features. While we have often talked about our in-development work so that you know what’s coming, the only way to get hold of this unfinished code to it try out was to take a look at our nightly builds. This is never ideal because nightly builds can be somewhat unstable, so we wanted to release a regular Open Liberty beta.

Open Liberty betas will contain everything in the most recent Open Liberty release plus features that are not yet finished. While these features are not yet suitable for use in production, we want to get feedback from our user community and make them available to developers to use ahead of a production release. Of course, something appearing in a beta isn’t a guarantee that it’ll end up released: the feedback might be that it is a horrible, terrible, no good, very bad idea, and should be constrained to the dumpster of git history. At the very least, it might change a bit.

Open Liberty logo

Betas and releases every four weeks

We intend to release a new beta every four weeks at the same time as our normal four-weekly Open Liberty release. Usually, the beta (which previews the next release) will be available on the same day as the normal Open Liberty release. So the second beta, 20.0.0.8-beta, will be released on the same day as the 20.0.0.7 Open Liberty release. Today’s beta (which previews the 20.0.0.7 release) is versioned as 20.0.0.7-beta.

This first beta is out of cycle because we wanted it to align with the Jakarta EE 9 Milestone 1 to showcase our Jakarta EE 9 work. So far, Open Liberty has implementations of the servlet-5.0, jsp-3.0, and el-4.0 features, which are all part of the Jakarta EE 9 specification. We will be adding to this list in future betas as we work towards complying with Jakarta EE 9 specification. We are running the TCKs as we go.

Jakarta EE 9 changes

So, what changed between Jakarta EE 8 and Jakarta EE 9? As a developer, the main change you’ll notice is that all the javax package names have been updated to jakarta (other Jakarta EE 9 changes are behind-the-scenes and don’t much affect how you use it). In line with Liberty’s zero migration policy, we will release new versions of all the relevant features so that your existing applications will continue to work unchanged with the feature versions they are currently using.

If you want to switch to running with the Jakarta EE 9 features, you can either recode to make use of the Jakarta EE 9 APIs, or you can use the Eclipse Transformer to bytecode-rewrite Jakarta EE 8 references to Jakarta EE 9. We have been using this tool on Liberty to provide the new Jakarta EE 9 features and it has so far been very successful.

Open Liberty logo

Try it now

If you want to get started with the beta just update your build tools to pull the Open Liberty beta instead of the main release. The beta works with Java SE 11 or Java SE 8.

If you’re using Maven, here are the coordinates:

<dependency>
    <groupId>io.openliberty.beta</groupId>
    <artifactId>openliberty-jakartaee9</artifactId>
    <version>20.0.0.7-beta</version>
    <type>zip</type>
</dependency>

Or for Gradle:

dependencies {
    libertyRuntime group: 'io.openliberty.beta', name: 'openliberty-jakartaee9', version: '[20.0.0.7-beta,)'
}

Or take a look at our Downloads page.

To enable the new beta features in your app, add one or more of them to your server.xml (if you enable the jsp-3.0 feature, the other two are automatically enabled so you don’t need to explicitly list all three in that case):

<featureManager>
  <feature>jsp-3.0</feature>
  <feature>servlet-5.0</feature>
  <feature>el-4.0</feature>
</featureManager>

Let us know what you think on our mailing list. If you hit a problem, post a question on StackOverflow. If you hit a bug, please raise an issue.

Kevin is a co-Release Lead for the Jakarta EE 9 project, working with the wider community to help ensure that a cohesive specification is delivered and represents the expectations of the Jakarta EE Working Group. He works with Alasdair, who is Chief Architect of the Open Liberty project and helps direct the Jakarta EE implementation on Open Liberty. They both work with Laura, who is Content Strategist for Open Liberty and Editor of this blog.