JCP 25-Year Anniversary

The Java Community Process (JCP) was founded in New York 25 years ago, so it only made sense to kick off the 25-year anniversary celebrations when the JCP Executive Committee (JCP EC) met in New York. The JCP EC had its second face-to-face meeting of 2023 in New York this week, this time hosted by BNY Mellon.

Eclipse Foundation has been a proud member of the JCP EC since 2007 as a representative of the Open Source community. I have had the honor of being the primary representative for Eclipse Foundation since 2020. Before that, I held an associate seat on the Executive Committee as an individual.

The 25-year anniversary celebrations will continue all throughout next year. As with previous anniversaries, there will be possibilities for Java User Groups (JUGs) to organize celebration events. More information to come about that in the near future.

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: https://jakarta.ee/specifications/annotations/3.0/

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: https://jakarta.ee/specifications/authentication/3.1/

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 java.security.Policy, and removing all references to the SecurityManager.

More details at: https://jakarta.ee/specifications/authorization/3.0/ 

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: https://jakarta.ee/specifications/bean-validation/3.1/ 

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: https://jakarta.ee/specifications/concurrency/3.1/ 

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: https://jakarta.ee/specifications/cdi/4.1/

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: https://jakarta.ee/specifications/expression-language/6.0/

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: https://jakarta.ee/specifications/faces/5.0/

Jakarta Interceptors 2.2

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

More details at: https://jakarta.ee/specifications/interceptors/2.2/

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: https://jakarta.ee/specifications/pages/4.0/

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: https://jakarta.ee/specifications/persistence/3.2/

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: https://jakarta.ee/specifications/restful-ws/4.0/

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: https://jakarta.ee/specifications/security/4.0/

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: https://jakarta.ee/specifications/servlet/6.1/

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: https://jakarta.ee/specifications/websocket/2.2/

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: https://jakarta.ee/specifications/data/1.0/

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: https://jakarta.ee/specifications/mvc/3.0/

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: https://jakarta.ee/specifications/nosql/1.0/

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.

Hashtag Jakarta EE #190

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

I’m currently on vacation, so this will be a rather short one. As you recall from last week (i.e. if you read my post then…), there was a vote going on whether to include new specifications in Jakarta EE 11. The specifications on the ballot were Jakarta Data, Jakarta MVC, and Jakarta NoSQL.

After the votes were counted, Jakarta Data made it! I am extremely happy that this specification will be a part of the Jakarta EE Platform. I think it will be a valuable addition that the developer community will embrace. There is a follow-up vote going on to decide if it should be a part of the Jakarta EE Web Profile. For this decision, I am kind of indifferent. It could always be added to Jakarta EE Web Profile later.

North America JUG Tour 🇺🇸 🇨🇦

In about a month, I am going on a five-day JUG tour of North America together with Gerrit Grunwald from Azul. In a rather packed schedule, we are going to visit the following JUGs:

If you are in the neighborhood of any of these JUGs, make sure to mark your calendar and sign up for the events! It’s going to be an absolute blast!

Hashtag Jakarta EE #189

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

For the first time in a while, I won’t list specifications with plans approved, or under review. They are all done! Well, almost…the Jakarta EE Platform (PR), Jakarta EE Web Profile (PR), and Jakarta EE Core Profile (PR) specifications still have to pass their respective plan reviews. The release plan for Jakarta EE 11 is almost done. Ed Burns, the release coordinator for Jakarta EE 11 will present the plan to the Jakarta EE Steering Committee in their meeting in the upcoming week.

Among the topics for Jakarta EE 11 is whether to include new specifications. The specifications in discussion are Jakarta Data 1.0, Jakarta MVC 3.0, and JakartaNoSQL 1.0. Cast your vote today on the respective voting thread (Data, MVC, NoSQL)on the Jakarta EE Platform Project Mailing List.

The fall conference season is shaping up. It looks like September and October will be pretty busy for me with trips currently planned to eight countries (Belgium, Canada, Germany, Israel, Morocco, Netherlands, United States, and Sweden) on four continents (Africa, Asia, Europe, and North America). It is a nice mix of Java User Groups and developer conferences. There are still some conferences that haven’t finalized their schedule yet, so the list may be longer.

I have freshened up the list of conferences on my Developer Advocate page by using flags rather than spelling out the countries. Adds a little color to the page. This list is always kept up-to-date with future, current, and past conferences, so you will know where to find me.

Hashtag Jakarta EE #188

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

We are finally there! All plan reviews for specifications targeting Jakarta EE 11 are done (Snapshot from Sunday, August 6, 2023):

Plan Approved
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 Data 1.0 *
Jakarta Expression Language 6.0
Jakarta Faces 5.0
Jakarta Interceptors 2.2
Jakarta MVC 3.0 *
Jakarta NoSQL 1.0
*
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

Under Review
none

Getting Ready for Review
Jakarta EE Platform 11 (PR)
Jakarta EE Web Profile 11 (PR)
Jakarta EE Core Profile 11 (PR)

As you can see, there are eighteen approved plans for Jakarta EE 11. Three of these (marked with *) are candidates for inclusion and are currently being discussed and voted on on the Jakarta EE Platform mailing list. Please chime in and cast your vote, even non-binding votes are valuable!

As I wrote in Hashtag Jakarta EE #186, I am very much in favor of including Jakarta Data 1.0. It will move the platform forward by providing a proven technology that the developer community is in favor of. Please make your voice heard on the mailing list by casting your vote today!

The three plan reviews for Jakarta EE Platform, Jakarta EE Web Profile, and Jakarta EE Core Profile are being worked on and will be submitted for plan review shortly.