Hashtag Jakarta EE #59

Welcome to the fifty-ninth issue of Hashtag Jakarta EE!

Last week, I wrote a post about Compatible implementations of Jakarta EE specifications and how to get listed on the specification pages. This week, we got LeadPony Joy 2.1.0 listed as a compatible implementation of Jakarta JSON Processing 2.0. Great work!

Jfokus 2021 happened this week. I was involved as a stage host in this year’s edition which was virtual. Next year, I hope to be back in Stockholm for Jfokus 2022.

On Tuesday, the JUG Leaders Summit takes place as a prequel to Devnexus. I look very much forward to meeting many of my fellow JUG leaders at the summit.

The release plan for Jakarta EE 9.1 has been published. The target release date is the end of March 2021. Follow the progress with our GitHub Project Board. While we are working full speed on completing Jakarta EE 9.1, we are also starting to look ahead a little. In the Platform Call this week, we decided to set a deadline for specifications to start their plan reviews in order to be a part of the next release. This deadline is April 15, 2021. Make sure to check the minutes from the platform calls if you are not able to attend a call. I try to publish the minutes as soon as possible after the call. The platform calls happen every Tuesday at 11:00 AM EST and the details can be found in the Jakarta EE Platform Calendar.

Hashtag Jakarta EE #58

Welcome to the fifty-eighth issue of Hashtag Jakarta EE!

This was the weekend of Fosdem. I had a Jakarta EE talk on Saturday in the Foojay devroom. The talk was recorded and I was looking forward to wearing my new, nice T-shirt on the video during the Q&A. A last-minute decision by the organizers turned this into a chat Q&A, which turned out to work very well. The Fosdem audience is awesome!

I also visited the Eclipse Foundation stand. Do come by if you happen to read this before the conference is over. You can win a nice Eclipse Foundation hoodie!

Jfokus 2021 is happening on Tuesday, February 9. I will be hosting Track D together with Grace Jansen. There will be talks by Paul Bakker, Jonathan Giles, and Dmitry Alexsandrov during our time as hosts. I encourage you to visit us, and of course, do check out the other tracks as well.

For a recap of what happened in the Jakarta EE working group, during 2020, check out What a Difference a Year Makes! – Jakarta EE 2020 review by Tanja Obradović.

Compatible Implementations

As you probably are aware, the concept of a single reference implementation (RI) to prove that a specification is implementable does not exist in Jakarta EE. The Jakarta EE Specification Process (JESP) mandates at least one compatible implementation (CI), but preferably as many as possible.

Take a look at Arjan Tijms‘ list of Implementation components used by Jakarta EE servers for a more complete list of compatible implementations and which Jakarta EE compatible product they are included in.

An unintentionally hidden “secret” is how easy it is to get your compatible implementation listed on a specification page. I hope this blog post will clarify the process and make it a little less “hidden“. We are looking into how we can simplify this even further by automating some of the steps, but this is how it looks like right now.

TLDR;

Step 1. Pass the TCK and publish the results
Step 2: File a Certification Request
Step 3. Submit a PR to get listed (we are looking at ways to automate this step)

Step 1. Pass the TCK and publish the results

The prerequisite is that you pass the TCK for the specification you implement. The TCK may be downloaded from the specification page and is specific to a version of the specification.

The next step is to publish the TCK results. This is the heart of self-certification. You run the TCK and publish the results yourself. This means that you don’t have to rely on others to run the tests for you. And by publishing the results, you take responsibility for the correctness of the results.

TCK Results

For some examples of how to publish the TCK results, check out the results for Eclipse Yasson 2.0.0 (implements Jakarta JSON Binding 2.0), Weld 4.0.0 (implements Jakarta CDI 3.0), and Eclipse Krazo 2.0.0 (implements Jakarta MVC 2.0).

After publishing the TCK results, the only thing you need to do is to send an email to tck@eclipse.org to make the Eclipse Foundation aware that you have passed the TCK.

Step 2. File Certification Request

In order to get listed on a specification’s page under on jakarta.ee/specifications as a compatible implementation, the next thing you need to do is to file a certification request in the specification’s issue tracker.

Certification

A certification request needs to follow a specific template to provide the necessary information. I have added the source for the template here:

- [ ] Organization Name ("Organization") and, if applicable, URL:
  // Add here
- [ ] Product Name, Version and download URL (if applicable):
  // Add here
- [ ] Specification Name, Version and download URL:
   // Add here
- [ ] TCK Version, digital SHA-256 fingerprint and download URL:
  // Add here
- [ ] Public URL of TCK Results Summary:
  // Add here
- [ ] Any Additional Specification Certification Requirements:
  // Add here
- [ ] Java runtime used to run the implementation:
  // Add here
- [ ] Summary of the information for the certification environment, operating system, cloud, ...:
  // Add here
- [ ] By checking this box I acknowledge that the Organization I represent accepts the terms of the [EFTL](https://www.eclipse.org/legal/tck.php).
- [ ] By checking this box I attest that all TCK requirements have been met, including any compatibility rules.

When a specification team receives a certification request, they will add the accepted label after verifying the contents of the request. See the certification requests for Eclipse Yasson 2.0.0, Weld 4.0.0, and Eclipse Krazo 2.0.0 for examples of certification requests.

Step 3. Submit a PR to get listed

When the certification request has been approved, the last step is to submit a Pull Request to the specifications repository where you add your implementation to the list of compatible implementations for the specification.

Pull Request

The file you should update is the _index.md file located in the version sub-directory of the specification you are implementing. For example, to add a new compatible implementation called OpenKangaroo 1.0.0 to the Jakarta Wombat specification, I would add the line marked with (+) below:

  # Compatible Implementations 

  * [Little Wallaby 2.0](https://wallaby.org/download/2.0)
+ * [OpenKangaroo 1.0.0](https://open.roo/downloads/roo-1.0.0)

Summary

That’s it! We are looking into automating as much as possible of this process to make it as easy as possible while maintaining the necessary control mechanisms. Until we get there, the three steps described in this post are what you need to do.

Step 1. Pass the TCK and publish the results
Step 2: File a Certification Request
Step 3. Submit a PR to get listed (we are looking at ways to automate this step)

Please don’t hesitate to reach out to us on one of our mailing lists if you have questions.

Hashtag Jakarta EE #57

Welcome to the fifty-seventh issue of Hashtag Jakarta EE!

I wanted to take the opportunity to show you that I don’t always sit by my desk writing blog posts and attending virtual events. I do other stuff as well! At the end of this week, we got some days of sub-zero temperatures here in Sweden. That means that the lakes freeze and skating season is on for a couple of days until the warmer weather is back again.

Don’t worry, it’s not open water behind me… It’s just how the water freezes occasionally. But it looks pretty cool, though.

Talking about cool stuff, make sure to revisit the Studio Jakarta EE LIVE session I had with Emily this week. In the video, we talk about the new MicroProfile 4.0 release. Emily gives a thorough walk-through of all the changes as well as showing it in practice.

https://youtu.be/xsILj33Ei0I

Next weekend is FOSDEM weekend! I have one Jakarta EE talk in the Foojay track. Join me on Saturday at 14:40 CET. The talk is recorded, but I will be online during the talk and will also be available for 10 minutes Q&A after the playback of the talk.

The Eclipse Foundation has a virtual stand where all working groups are presented. Stop by the stand for a chat with us there and for a chance to win a hoodie!

Hashtag Jakarta EE #56

Welcome to the fifty-sixth issue of Hashtag Jakarta EE!

It is time for a new edition of Studio Jakarta EE LIVE! This time I have Emily Jiang from IBM with me in the studio. We will talk about MicroProfile 4.0 and I am pretty sure that Emily will show some cool demos as well.

https://youtu.be/xsILj33Ei0I

Check out microprofile.io for details about MicroProfile 4.0 and MicroProfile in general. And of course, make sure to tune in to Studio Jakarta EE LIVE: MicroProfile 4.0 on Thursday!

MicroProfile 4.0 contains updates to all the specifications. It is based on the Jakarta EE 8 versions of the four specifications that form the foundation of MicroProfile. This means that it is still on the javax.* namespace.

How difficult the migration from the javax.* to the jakarta.* namespace is for your particular use case depends on the complexity of your application. The focus has mainly been on the Java package names, but there are some other areas that may require some effort as well. Check out my Migration Guide for an example of how to migrate an application that touches most of the areas.

Please reach out to me if you discover areas that I have missed in the guide. I will be happy to update it!

There is only one more stop planned on the Jakarta EE Virtual Tour. We really enjoy giving these talks, so please reach out if you are interested in hosting us at your JUG or MeetUp.

Migration Guide

In my post Migrate to Jakarta EE 9 last year, I wrote about how to migrate your application from the javax.* to the jakarta.* namespace. I think it is time to revisit this topic and outline the steps involved.

In the recent versions of the Jakarta EE 9 and Beyond talk, I have included a slide that lists the steps needed for the migration. Note that all the steps does not necessarily apply to your application.

I strongly recommend that you use the help provided by your IDE to fix the Java package names. If you choose to go the brute force way and replace all occurrences of javax. with jakarta., you will most likely experience some issues. This is important! There are still classes in Java SE that are in the javax.* namespace. These are not affected by the Jakarta EE namespace migration, but stay as they are. Some examples are:

javax.sql.*
javax.transaction.xa.*
javax.xml.*
javax.naming.*
javax.swing.*

These are just some of the examples, so be careful with the global search-and-replace!

Take a look at the Complete Duke application for a full step-by-step example of how to migrate from Jakarta EE 8 to Jakarta EE 9. I hope it helps!

Hashtag Jakarta EE #55

Welcome to the fifty-fifth issue of Hashtag Jakarta EE!

We are two weeks into the new year already, and I want to remind the specification teams that about the deadline for submitting a plan review in order to be a candidate for inclusion in the Jakarta EE 9.1 release. The deadline is January 31 as the timeline below shows.

The Jakarta EE Platform team are having weekly calls where various topics related to the platform specification are discussed. Please, do join this call if you are interested in participating in shaping the platform. Details for how to join can be found in the Jakarta EE Platform Calendar.

Barcelona JUG is the next stop on our Jakarta EE Virtual Tour. Join here! We really enjoy giving these talks, so please reach out if you are interested in hosting us at your JUG or MeetUp.

The first Jakarta EE Update Call of 2021 will happen on January 21! The topics we will cover in this call are the program plan and budget, the release plan for Jakarta EE 9.1 as well as upcoming events, programs and marketing campaigns. And, of course, there will be an opportunity to get your questions asked and answered.

Visit the Community Calendar to find the details about how to join the call.

Hashtag Jakarta EE #54

Welcome to the fifty-fourth issue of Hashtag Jakarta EE!

The main goal of Jakarta EE 9.1 is to support the Java SE 11 runtime. The APIs will still be compiled to Java SE 8 level in order to be usable to both Java SE 8 and Java SE 11. That means that there will not be need for any new releases for the individual specifications unless the specification teams have changes they wish to push forward. The absolute deadline for such plans to be put forward is January 31, 2021. See the timeline below.

Note that, it is up to the platform project to decide if any new versions should be included in the Jakarta EE 9.1 release even if a plan review is submitted within this deadline.

The Jakarta Contexts and Dependency Injection project continues with weekly calls with the goal to define a CDI Lite specification. Follow the discussions on the CDI Developer Discussions mailing list.

The Jakarta EE Virtual Tour continues in 2021. The ones we have planned so far are Silesia JUG (Jan 13), JUG Darmstadt (Jan 13), Barcelona JUG (Jan 20), and Chicago JUG (Feb 25). Please reach out if you are interested in hosting us at your JUG or MeetUp.

The jChampions Conference is starting next week. I will be a moderator for at least one of the sessions. Check out the schedule.

Hashtag Jakarta EE #53

Welcome to the fifty-third issue of Hashtag Jakarta EE!

Happy New Year!

It’s 2021 and a year since I wrote the very first Hashtag Jakarta EE. I find it useful for myself to write these short recaps of what’s going on in the community, and I hope you enjoy them as well!

On the very last day of 2020, Eclipse GlassFish 6 was released! Go to glassfish.org/download to check it out. GlassFish 6 meets the compatibility requirements of Jakarta EE 9. Downloads are available for both the Platform and the Web Profile.

If you want to have a look at the other fishes in the Jakarta EE and MicroProfile space, take a look at A day of fishing with Jakarta EE and MicroProfile by Edwin Derks. In this blog post, Edwin describes the differences and similarities between GlassFish, Payara, and Piranha.

The Jakarta EE Virtual Tour continues in 2021. The ones we have planned so far are Silesia JUG (Jan 13), JUG Darmstadt (Jan 13), Barcelona JUG (Jan 20), and Chicago JUG (Feb 25). Please reach out if you are interested in hosting us at your JUG or MeetUp.

Hashtag Jakarta EE #52

Welcome to the fifty-second issue of Hashtag Jakarta EE!

This is the last Hashtag Jakarta EE in 2020. But don’t worry, I will continue these weekly updates in 2021 as well.

This week, MicroProfile 4.0 was released! It’s been a long wait since the previous release (3.3) back in February. But now it’s here, the first release of MicroProfile following the MicroProfile Specification Process (MPSP).

This release contains updates to all specifications. See the MicroProfile Presentation for details. Note that the four Java EE 8 specifications that form the foundation of MicroProfile have been updated to the Jakarta EE 8 counterparts. This means that MicroProfile is still on the javax.* namespace. I expect that there will be a release during 2021 that will be based on Jakarta EE 9 versions of the specifications and by that support the jakarta.* namespace.

MicroProfile 4.0 will be covered in detail in the next Studio Jakarta EE LIVE as my guest on January 28th is Emily Jiang. Make sure to tune in to get all information about the 4.0 release directly from Emily.

https://youtu.be/xsILj33Ei0I

As I mentioned in the previous Hashtag issue, I will participate in a Tech Summary Panel organized by the Barcelona JUG on December 29. In this event, we will summarize 2020 and look ahead towards 2021. It has an amazing lineup of speakers, and I am honored to be among them. You don’t want to miss this!

I’ll end this last Hashtag Jakarta EE of 2020 with a pointer to a great blog post by Payara‘s Steve Millidge: Cloud Myth: Ahead of Time Compilation Will Save You Money.