By the time this second edition is released, we will just be a few months away from the release of Jakarta EE 9! Because of this, you may be wondering, "why not publish the book when 9 is alive and kicking?".
Good question! And the answer is equally clear: because no APIs/features will be changing in this release. So, what's changed that would justify a new release?
Because of one thing in the Jakarta EE field known as big bang. If you've been following Jakarta EE for a while now, you should be aware of it. If not, let me quickly explain it to you.
Due to Java EE being transferred from Oracle to Eclipse Foundation, it was rebranded to Jakarta EE, and due to this, we had the Jakarta EE 8 release. That's why we have the second edition of this book!
As part of the branding and intellectual property process, another thing needed to be changed: the javax namespaces.
The following examples have been taken from this very book, and all of them use the javax namespace:
import javax.ws.rs.core.Application;
import javax.ws.rs.container.AsyncResponse;
import javax.ejb.EJB;
import javax.validation.constraints.Size;
So, all the APIs under Jakarta EE have to change their namespaces from javax to jakarta. This same list in Jakarta EE 9 will look like this:
import jakarta.ws.rs.core.Application;
import jakarta.ws.rs.container.AsyncResponse;
import jakarta.ejb.EJB;
import jakarta.validation.constraints.Size;
Since this book was written to help you deliver the most incredible applications using Jakarta EE 8, I need to answer the following, and most important, question: how does this change affect you and/or your code if you migrate from 8 to 9?
The simple and quick answer is that your code/project will break. Period.
This isn't as bad as it sounds. At the end of the day, Jakarta EE has a huge community of developers around the world (probably one of the biggest communities), and most of them are developers like you that will face these same problems if there's no way out.
So, yes, you'll need to change the imports for all the classes in your project that use the javax namespace. And no, you won't need to do this manually (unless you want to).
While I'm writing this, there is already one tool that is being developed by the Apache Tomcat folks. You can try it out and follow the project for more information at https://github.com/apache/tomcat-jakartaee-migration.
I'm pretty sure that even more tools will become available soon. Stay tuned!
For more information about the big bang, you can read this amazing blog post by Mike Milinkovich: https://eclipse-foundation.blog/2020/01/16/moving-forward-with-jakarta-ee-9/.