Get a jump on Jakarta EE9 with Open Liberty Beta

Wednesday, December 16, 2020 - 14:36 by David Mueller

The Open Liberty team's involvement with Jakarta EE goes back the beginning of the project. We believe in the importance of an open source, vendor-neutral framework for cloud-native enterprise Java™ applications. Our team is active across the Jakarta Working Group, with Kevin Sutter serving as a co-Release Lead, Dan Bandera and Ian Robinson sitting on the Steering Committee, and Alasdair Nottingham directing the implementation on Open Liberty.

Open Liberty was certified as Jakarta EE 8 compatible as of our release in June of 2019. Since then, we have been working to prepare the runtime for Jakarta EE 9 compatibility. Although the most noticeable difference between Jakarta EE 8 and 9 is the change in package names from javax to jakarta, many other changes are developing behind the scenes.

Our developers are committers to numerous Jakarata EE specifications, including Connectors, Concurrency, and XML Web Services. We are taking a leading role in the Jakarta EE Platform umbrella specification.

We are also providing leadership and support for the Eclipse Transformer project, which is an important resource for making the transition to Jakarta EE 9. This project supports changing package names from javax to jakarta by enabling a class loader to dynamically rename type references at run time while classes are being loaded. We have been using this tool on Open Liberty to bytecode-rewrite Jakarta EE 8 references to Jakarta EE 9.

The Open Liberty zero migration architecture ensures that existing, unmodified configuration and application files work with an updated version of Open Liberty, without unexpected changes in application behavior. To preserve this principle, the changes to Jakarta package names are delivered in new feature versions, as are all significant changes to Open Liberty. Therefore, Jakarta EE 8 applications can continue to use the old package names with older feature versions, while Jakarta EE 9 applications can use newer feature versions with the new package names. Although we are working to make Open Liberty Jakarta EE 9 compatible as soon as possible, our users have the flexibility to make the change whenever they see fit.

To ensure the robust, stable standards that enterprise applications require, Jakarta EE 9 compatibility tests are thorough and rigorous. The Jakarta Technology Certification Kits (TCKs) are tests that ensure that the implementation of a feature meets the Jakarta EE 9 specification. Every implementation must run and pass the TCKs before it can be considered Jakarta EE compatible. We’re running the TCKs and fixing any problems as we go to ensure that we can pass 100% of the tests before we officially release our Jakarta EE 9 features.

Since June of 2020, we have gradually introduced new Jakarta EE 9-ready features in our 4-week beta releases. So far, we've added features that provide access to a wide range of Jakarta APIs, including JDBC, Persistence, Concurrency, WebSockets, JSON P, JSON B, and many more. You can try out the Jakarta EE 9 features that we have so far by building either our All Beta Features package or our Jakarta EE 9 Beta Features package.

The following Jakarta EE 9-ready Open Liberty features are available now through our beta packages:

  • Jakarta Faces Container 3.0 (facesContainer-3.0)
  • Jakarta Enterprise Beans Persistent Timer 4.0 (enterpriseBeansPersistentTimer-4.0)
  • Jakarta WebSocket 2.0 (websocket-2.0; now with full CDI integration)
  • RESTful Web Services 3.0 (restfulWS-3.0 and restfulWSClient-3.0)
  • Jakarta Server Faces 3.0 (faces-3.0)
  • Jakarta Connectors 2.0 (connectors-2.0)
  • Jakarta Enterprise Beans 4.0 (enterpriseBeans-4.0)
  • Jakarta Enterprise Beans Remote 4.0 (enterpriseBeansRemote-4.0)
  • Jakarta Enterprise Beans Home 4.0 (enterpriseBeansHome-4.0)
  • Jakarta Enterprise Beans Lite 4.0 (enterpriseBeansLite-4.0)
  • Jakarta EE Application Client 9.0 (javaeeClient-9.0)
  • Jakarta Authentication 2.0 (jaspic-2.0)
  • Jakarta Authorization 2.0 (jacc-2.0)
  • Jakarta Persistence 3.0 (includes Eclipselink 3.0-RC1.) (jpa-3.0)
  • Jakarta XML Binding 3.0 (jaxb-3.0)
  • Jakarta Managed Beans 2.0 (managedBeans-2.0)
  • Jakarta Concurrency 2.0 (concurrent-2.0)
  • Jakarta Bean Validation 3.0 (beanValidation-3.0)
  • Jakarta Contexts and Dependency Injection 3.0 (cdi-3.0)
  • Message-Driven Beans 4.0 (mdb-4.0)
  • JDBC 4.2 & 4.3 (jdbc-4.2 & jdbc-4.3)
  • Jakarta Transactions 2.0 (transaction-2.0)-
  • Jakarta JSON Binding 2.0 (jsonb-2.0)
  • Jakarta JSON Processing 2.0 (jsonp-2.0)
  • Jakarta Servlet 5.0 (servlet-5.0)
  • Jakarta Server Pages 3.0 (pages-3.0)
  • Jakarta Expression Language 4.0 (expressionLanguage-4.0)

We continue to add more Jakarata EE 9 features every four weeks in our beta releases as we work toward full compatibility. The Open Liberty team is committed to supporting developers by making Jakarta EE 9 the best framework for open source cloud-native Java that it can be. You can follow our progress on the Open Liberty blog. To learn more about Open Liberty, take a look at our Open Liberty guides on Jakarta EE technologies. You can also let us know what you think on our mailing list, we'd love to hear from you!