North America JUG Tour 2023 – Detroit 🇺🇸

The third stop on the North America JUG Tour 2023 was Detroit and the Detroit Java User Group.

Gerrit did the Jungle talk about all the available distributions of OpenJDK. It is a talk you really should attend if he is at a conference near you and you are wondering which JDK to choose. Directly after, I did the migration talk from Spring Boot 2 to Spring Boot 3. I even spiced up the demo by using Java 21 and demoed how to use preview features in a Spring Boot application. Check out the slides from my talk.

I enjoy being on these trips when you check in to the next flight before you disembark the current one and you have to rely on the hotel app to remember what room number you have this time. I was lucky in New York this time as I got the exact number I had in my hotel in Las Vegas. Easy to remember. Not so lucky thereafter. Both Gerrit and I ended up taking the elevator to the wrong floor in Detroit, which happened to be the floor we stayed at in Newark the day before 🙂

North America JUG Tour 2023 – New Jersey 🇺🇸

The second stop of the North America JUG Tour 2023 was Garden State JUG in New Jersey.

Gerrit first did a talk about navigating the JVM landscape. Then I did a talk about Jakarta EE 10 where I introduced two brand new demos. One was using preview features of Java 21 which was well timed since Java 21 was released yesterday. The other demo used a beta for the new Jakarta Data specification in Jakarta EE 11. Both went well. I just had to google how to set up compiling with preview features in Maven on the fly since I did a git checkout . right before the talk and had forgotten to commit my new changes. Google to the rescue…

North America JUG Tour 2023 – Columbus 🇺🇸

The first stop on the North America JUG Tour 2023 was Columbus where we visited the Central Ohio Java User Group. The meetup was hosted at the office of Manifest Solutions and the turnout was around 30-40 people. I admit I didn’t count, but that’s the feeling. There were also a couple attending online.

Gerrit talked about vulnerabilities in Java and how to secure your build chain. A topic that is extremely relevant and spurred some good discussions. I did a talk on how to migrate from Spring Boot 2 to Spring Boot 3 with a focus on the impact of the namespace change made in Jakarta EE 9. I also showed how to leverage Jakarta EE 10 features in Spring applications. My slides are available on SpeakerDeck.

No rest for the brave! Today we are continuing our journey with a visit to New Jersey and the Garden State Java User Group.

Hashtag Jakarta EE #194

Welcome to issue number one hundred and ninety-four of Hashtag Jakarta EE!

It has been a busy week for me. First, I went to Las Vegas for IBM TechXchange 2023. Less than two hours after my talk ended, my flight took off for New York and the JCP Executive Committee Face-to-Face meeting. Good thing the airport in Las Vegas is very close to the MGM Grand.

And, always time for a morning run, New York no exception. My run this morning went through Battery Park and then the up boardwalk along the Hudson River before heading back to my hotel. Nice views and great to see the city waking up to a new day.

Writing this, I am at Newark International Airport waiting for my flight to Columbus where I will meet up with Gerrit to go on our five JUGs in five days tour of North America.

The work with Jakarta EE 11 moves forward. In the platform call last week, we spent a great deal of time discussing a milestone release of Jakarta EE 11 before the end of the year. We even discussed setting up a release train with milestone releases with a fixed cadence. I really like this approach. The individual component specifications could opt-in to releasing a milestone to any or all of these. Whatever is ready will be released. Of course, the dependencies between some of the specifications would have to be managed somehow, but I think this is achievable.

IBM TechXchange 2023

The inaugural IBM TechXchange occurred at MGM Grand in Las Vegas from September 11 to September 14 with a respectable attendee count of somewhere around 3000.

I was invited to speak there and did a talk with Emily as a co-speaker. It would be an exaggeration to claim that the talk was well attended, but those who showed up got a very interactive session presented with lots of code samples and questions answered. The slides are, as always available on my SpeakerDeck.

Wherever Emily shows up, there will be morning runs, and IBM TechXchange 2023 was no exception. Running in the morning is the key in Las Vegas when the temperatures are at 35 degrees Celsius (95 Fahrenheit).

The social activity on Tuesday was at Topgolf, where we could enjoy some food and try out our swings. I was happy to hit the ball a couple of times, but it was great fun nevertheless.

Hashtag Jakarta EE #193

Welcome to issue number one hundred and ninety-three of Hashtag Jakarta EE!

Last week’s trip to Amsterdam and the Picnic Java Meetup was a success. Next up is IBM TechXchange in Las Vegas. While I am on the other side of the Atlantic, I am going to have a pretty busy schedule. Directly after IBM TechXchange, I am headed to New York for the second JCP EC face-to-face meeting of 2023.

After the EC meeting in New York, I will team up with Gerrit Grunwald from Azul and together we will go on a five-day North America JUG Tour.

I hope you will join us if you are anywhere in the area of these JUGs on these dates. It is an excellent opportunity to listen to a couple of great talks, ask questions, discuss, and network with your local community.

Talking about community, don’t forget to register for Community Day for Java Developers at EclipseCon on October 16. Take a look at the program. I am pretty sure you will find some interesting talks. And fall this for only €40. There are still some additional talks that will be added to the program in the following days.

Picnic Java Meetup

I initiated my Fall 2023 Conference season with a short trip to Amsterdam to speak at Picnic Java Meetup. There were two talks on related topics. I did a talk on how to migrate from Spring Boot 2 to Spring Boot 3, focusing on the part Jakarta EE plays in that. The other talk was by Pieter Dirk Soels, and he gave an overview of Picnic’s experiences with the migration. Check out his write-up from the event. The slides from my talk are available on SpeakerDeck.

There were somewhere around 50-60 people who showed up for the event, despite the unsuspected summer temperatures heating up Amsterdam this early September evening. All in all a great turnout, and a great event with good questions and discussions with the attendees. And of course, (Dutch) fries with mayonnaise.

Jakarta EE 11 is Shaping Up!

This article was first published in the August 2023 Eclipse Foundation Newsletter.

The work on defining the next major update of Jakarta EE has been going on for a while. Back in January 2023, the Jakarta EE Working Group Steering Committee defined the high-level guidelines for Jakarta EE 11. One of the items in these guidelines was to target Java 21. To accommodate this, the runtimes implementing Jakarta EE 11 will be tested on Java 21.

The Steering Committee is looking to establish a regular cadence of Jakarta EE releases approximately six months after a Java LTS release. With Java 21 scheduled for release in September 2023, the target date for Jakarta EE 11 is H1 2024.

The overall theme for Jakarta EE 11 is Performance and Developer Productivity. Some specifications will need to make API changes to support language features introduced between Java 11 and Java 21, specifically: Virtual Threads and Records. With this release, Jakarta EE will continue becoming more CDI-centric and more streamlined.

Specification Updates

The following specifications will all have updated versions for Jakarta EE 11. Each of them is described in more detail below.

  • Jakarta Annotations 3.0
  • Jakarta Authentication 3.1
  • Jakarta Authorization 3.0
  • Jakarta Bean Validation 3.1
  • Jakarta Concurrency 3.1
  • Jakarta Contexts and Dependency Injection 4.1
  • Jakarta Expression Language 6.0
  • Jakarta Faces 5.0
  • Jakarta Interceptors 2.2
  • Jakarta Pages 4.0
  • Jakarta Persistence 3.2
  • Jakarta RESTful Web Services 4.0
  • Jakarta Security 4.0
  • Jakarta Servlet 6.1
  • Jakarta WebSocket 2.2

Three additional specifications are candidates for inclusion in Jakarta EE 11. At the time of writing, the inclusion of the following specifications is being discussed in the Jakarta EE Platform project:

  • Jakarta Data 1.0
  • Jakarta MVC 3.0
  • Jakarta NoSQL 1.0

Out of these, Jakarta Data is most likely to be included in Jakarta EE 11. Jakarta MVC and Jakarta NoSQL will then continue as independent specifications outside of the Platform.

The figure below shows an overview of how Jakarta EE 11 will look if these predictions fall through.

As you can see in the figure, about half of the specifications of the Jakarta EE Platform will be updated in Jakarta EE 11. Let’s look at the changes planned for each of the specifications.

Jakarta Annotations 3.0

The purpose of Jakarta Annotations 3.0 is to fully remove the deprecated @ManagedBeans annotation.

More details at:

Jakarta Authentication 3.1

Jakarta Authentication 3.1 will contain minor updates to support the overall goals of Jakarta Security. The changes include clarifications around state and concurrency as well as the removal of all references to the SecurityManager.

More details at:

Jakarta Authorization 3.0

The primary goal of Jakarta Authorization 3.0 is to future-proof the specification and make it more suitable for cloud deployments. This will be achieved by adding an API for programmatically registering policy providers, creating a replacement for, and removing all references to the SecurityManager.

More details at: 

Jakarta Bean Validation 3.1 

Jakarta Bean Validation 3.1 will add support for Java Records. Records are classes that act as transparent carriers for immutable data and were introduced by JEP 395 in Java 16.  Jakarta Bean Validation is also currently in the process of being renamed to Jakarta Validation.

More details at: 

Jakarta Concurrency 3.1

The most significant feature of Jakarta Concurrency 3.1 is adding integration to Virtual Threads. Virtual Threads are lightweight threads and were introduced by JEP 444 in Java 21. Other changes in this release of Jakarta Concurrency are taking further steps toward being more CDI-centric.

More details at: 

Jakarta Contexts and Dependency Injection 4.1

The main objective of Jakarta Contexts and Dependency Injection 4.1 is to address several minor issues in the Specification, APIs, and TCK.

More details at:

Jakarta Expression Language 6.0

Jakarta Expression Language 6.0 makes the dependency on the java.desktop module optional. It also removes the references to the SecurityManager, as well as a small number of enhancements.

More details at:

Jakarta Faces 5.0

Jakarta Faces 5.0 removes references to the SecurityManager and continues the alignment with CDI. This release also splits out the API into its own project.

More details at:

Jakarta Interceptors 2.2

Jakarta Interceptors 2.2 is a minor update that adds a standard accessor to interceptor bindings. 

More details at:

Jakarta Pages 4.0

Jakarta Pages 4.0 removes functionality that was deprecated in previous releases, as well as updates to align with Jakarta Servlet 6.1 and Jakarta Expression Language 6.0.

More details at:

Jakarta Persistence 3.2

The Jakarta Persistence 3.2 release comes with a lot of goodies for developers, including: 

  • Java Records will be usable as an embeddable type
  • Added support for subqueries
  • Programmatic schema management
  • Stateless SecurityManager
  • A wide range of additional functions and operators

This version also deprecates support for java.util.Calendarjava.util.Datejava.SQL.Time, and java.SQL.Timestamp.

More details at:

Jakarta RESTful Web Services 4.0

The goal of Jakarta RESTful Web Services 4.0 is to provide better alignment with Jakarta Contexts and Dependency Injection (CDI). Better integration with Jakarta Concurrency will also be explored. The support for @Context injection and related artifacts will be dropped.

More details at:

Jakarta Security 4.0

Jakarta Security 4.0 focuses on evolving the API in various ways. It will also provide APIs for the authorization theme, including interceptors and an abstraction for the permission store. This release will also remove all references to the SecurityManager.

More details at:

Jakarta Servlet 6.1

Jakarta Servlet 6.1 will provide small enhancements and adjustments to the specification and remove all references to the SecurityManager.

More details at:

Jakarta WebSocket 2.2

The focus of Jakarta WebSocket 2.2 is to remove all references to the SecurityManager. In addition to this, the release also contains minor updates and adjustments.

More details at:

Candidates for Inclusion

The following three specifications are candidates for inclusion in Jakarta EE 11. The discussion is still ongoing. 

Jakarta Data 1.0

Jakarta Data will provide an API for easier data access by letting the developer split the persistence from the model with the repository interface, thus increasing the productivity of performing common database operations. This release will provide the CrudRepository feature and allow pagination on a repository with PageableRepository

More details at:

Jakarta MVC 3.0

This is the third major release of Jakarta MVC. It will ensure alignment with Jakarta RESTful Web Services 4.0 and remove the requirement to support the Facelets view engine. Other features in this release are adding an accessor for FORM method overwrite field name and switching the CSRF default to implicit.

More details at:

Jakarta NoSQL 1.0

Jakarta NoSQL is a framework for streamlining the integration of Jakarta EE applications with NoSQL databases. This release defines mapping annotations for Entity, Id, and Column, as well as the DocumentTemplateColumnTemplate, and KeyValueTemplate specializations.

More details at:

Hashtag Jakarta EE #192

Welcome to issue number one hundred and ninety-two of Hashtag Jakarta EE!

I’m back! From vacation, that is. The upcoming weeks will be pretty busy with travels, starting softly on Wednesday with a short trip to Amsterdam for the Picnic Java Meetup. After that, I will be going overseas for IBM TechXchange, JCP EC f2f, and the North America JUG Tour (with Gerrit). I will get back to all these events in the following Hashtags as well as in separate posts.

The plans for Jakarta EE Platform 11 and Jakarta EE 11 Core Profile are approved. The only plan review left is for Jakarta EE Web Profile 11. That ballot will close later this week. You may have noticed that there has been a little bit of discussion around the decision to include Jakarta Data in Jakarta EE 11. This is normal, and in the old days of Java EE, it would probably been added as an optional specification. That was how it was done in the old days. In Jakarta EE, however, optional specifications are not allowed in the Platform and Profile specifications.

The next date to pay attention to is January 30, 2024. By this date, the individual component specifications are expected to have engaged in their release reviews. I suspect that there may be more dates communicated between now and then related to a potential milestone release.

EclipseCon 2023 is fast approaching. On October 16, the day before the main show starts, we are hosting the Community Day for Java Developers. If you’re not able to join us for the entire week of EclipseCon, please consider this day. It is as little as €40 for the entire day. A full day, two-track conference on its own!

Hashtag Jakarta EE #191

Welcome to issue number one hundred and ninety-one of Hashtag Jakarta EE!

Last week, I wrote that Jakarta Data will be included in Jakarta EE 11. The vote passed with flying colors. Currently, there is a vote going on in the Jakarta EE Platform Project to decide whether it should be included in Jakarta EE Web Profile as well. This vote seems to be a little tighter, so my guess is that it will not be included in the Web Profile. It will then be up to the implementors to decide whether they want to include it or not in their Jakarta EE Web Profile compatible products, and up to the developers which implementation to choose for their applications. Jakarta Data can always be included in Jakarta EE Web Profile in a later release if that’s what the community decides.

While I’m enjoying my last week of vacation before the fall conference season hits us with its broadside, here’s a task for you: Check out your local JUG or community to see if there are any events coming up in your neighborhood. For those of you in the Amsterdam area, check out Picnic Java Meetup on September 6 where I will be one of the speakers.