A sanitized version of an internal Microsoft presentation Ed gave on 2023-10-09. It covers the history of Java EE and Spring, and the future of Java EE.
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Jakarta EE 11 Status Update
1. Jakarta EE 11 Status Update
COPYRIGHT (C) 2023, ECLIPSE FOUNDATION. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
2023-10-11
Ed Burns, Principal Architect for Java on Azure, Microsoft
2. Jakarta EE and Spring
Historical Contex
COPYRIGHT (C) 2023, ECLIPSE FOUNDATION. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
3. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
Pre-history: Apache HTTP server, CGI-BIN, pre J2EE-Servlet
● 1993 NCSA HTTPd creates CGI-BIN
3
4. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
Pre-history: Apache HTTP server, CGI-BIN, pre J2EE-Servlet
● 1996-05 – Sun releases Java 1.0
● 1996-12 – Servlet 1.0
○ Basically a way to do CGI-BIN. Servlet 2.0 1997-12
○ 1998-12 clean-room specification for Servlet 2.1 defined
○ Birth of the Java Community Process (JCP)
● JCP: From the start
○ Multi-vendor
○ Separate interface from implementation
■ API jar
■ Specification document
■ Test software (Test Compatibility Kit, TCK)
4
5. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
J2EE to Java EE to Jakarta EE, including creation of Spring
● 1999-12 – Java 1.2 re-branded as Java 2 or J2
○ Standard Edition J2SE
○ Enterprise Edition J2EE
○ Micro Edition J2ME
■ For “feature phones” (remember those? WAP?)
● J2EE 1.2
○ A line up of individual specifications
○ Each with its own API jar, Specification document and TCK
○ Each addressing a different aspect of enterprise software development, circa 1999
5
6. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
J2EE to Java EE to Jakarta EE, including creation of Spring
● J2EE 1.2 specifications included
• Persistence (Java Persistence Architecture)
• Network (Java Servlet 2.2)
• Transactions (Java Transaction Architecture 1.0)
• Software model (Enterprise Java Beans 1.1)
• Security and Authorization
• Presentation (Java Server Pages 1.1)
• Identity (Java Naming and Directory Interface 1.2)
• Messaging (Java Messaging Service 1.0)
6
7. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
J2EE to Java EE to Jakarta EE, including creation of Spring
● 2001-09 J2EE 1.3
● 2003-11 J2EE 1.4
○ Included JavaServer Faces (JSF) the thing I’m most associated with
○ This is when Rod Johnson wrote his breakthrough book, “J2EE without EJB” (Wrox Press
2004). Due to the transparent development process, he could time the release of the book
along with J2EE 1.4. This timing continues to the present day.
7
8. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
J2EE to Java EE to Jakarta EE, including creation of Spring
● Now we have two Enterprise Java frameworks
○ J2EE
○ Spring
8
9. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
J2EE to Java EE to Jakarta EE, including creation of Spring
● Now we have two Enterprise Java frameworks
○ J2EE, the Open Standard, with JCP as governing body
■ Multiple vendors
■ Needs API, Spec, Impl
■ Has a requirement to be open (has gotten more and more open since 1998)
■ Has a formal process for accepting contributions.
■ Transparent development process
● Public mailing lists
● Issue trackers
9
10. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
J2EE to Java EE to Jakarta EE, including creation of Spring
● Now we have two Enterprise Java frameworks
○ Spring, the closed standard
■ Single vendor
■ It is open source (Apache 2.0 license) but
● No requirement to be open to contributions
● No IP protection for contributors
● No way for contributors to monetize their contributions
■ Dependent on the Open Standard framework for core features
● Persistence
● Servlet
● Concurrency
● Messaging
10
11. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
J2EE to Java EE to Jakarta EE, including creation of Spring
● 2006 – Java EE 5, Spring Framework 2.0
● 2007 – Sun open sources OpenJDK
● 2008 – Java ME stops being developed
● 2009 – Java EE 6, Spring Framework 3.0
● 2010 Oracle buys Sun, including Java
● 2013 – Java EE 7, Spring Framework 4.0
● 2014 – Spring Boot 1.1 released
● 2016 – MicroProfile project founded
○ https://www.infoq.com/news/2016/09/microprofile-panel-javaone/
○ Idea was to be faster than JCP, more designed for microservices
○ Have just enough process. More process than Spring, but less process than JCP.
○ Still multi-vendor, but more agile.
● December 2017, MicroProfile moves to Eclipse
○ https://www.redhat.com/en/blog/its-official-microprofile-now-eclipse-microprofile
11
12. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
J2EE to Java EE to Jakarta EE, including creation of Spring
● 2017 – Java EE 8, Spring Framework 5.0
● 2019 – Oracle Oracle divests itself of Java EE.
○ Because Sun had already stopped developing Java ME, this leaves only Java SE.
○ Massive exercise to scrub multi-vendor IP in Java EE to hand off to Eclipse Foundation as the
Jakarta project.
○ Jakarta EE 8 is released in 2019. It's exactly the same as Java EE 8.
● 2020 – Jakarta EE 9
○ This one has the new package name for all API jars jakarta.* instead of javax.*. Oracle
kept the ownership of the javax.* package.
12
13. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
J2EE to Java EE to Jakarta EE, including creation of Spring
● 2018-06 – MicroProfile 2.0
● 2018-10 – MicroProfile 2.1
● 2019-02 – MicroProfile 2.2
● 2019-06 – MicroProfile 3.0
● 2020-12 – MicroProfile 4.0
● 2021-12 – MicroProfile 5.0
● 2022 – Jakarta EE 10, Spring Framework 6.0
● 2022-12 – MicroProfile 6.0
13
14. Jakarta EE 11
COPYRIGHT (C) 2023, ECLIPSE FOUNDATION. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
15. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
Microsoft’s Role
● Microsoft joined Jakarta EE and MicroProfile in July 2022
● Our interest
○ Ensure our customers who use Jakarta EE technology have a great experience on Azure.
○ Security: OpenID Connect and OAuth compatible with Azure AD
○ Monitoring: MicroProfile Metrics and telemetry compatible with Azure Application Insights via
OpenTelemetry
○ Database: Jakarta No SQL compatible with CosmosDB
○ Messaging compatible with Azure Service Bus Premium
15
16. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
Microsoft’s Role
● Jakarta EE needed someone to take on the release-coordinator role for Jakarta EE 11.
○ I assured Xiaoyan I could do it without impacting our team's OKRs.
○ I took the role in 2023-06, with a co-release-coordinator from the community.
● The Jakarta EE team
○ Works with Jakarta EE Vendors to create product truth for customers who use those vendor's
products on Azure
■ Oracle
■ Red Hat
■ IBM
○ Writes guidance for using these technologies on Azure
○ Writes and maintains software
○ Quarkus extensions for Azure
○ Azure MicroProfile libraries
16
17. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
Jakarta EE landing page
● https://jakarta.ee/
17
18. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
Milestone Release
● https://jakartaee.github.io/platform/jakartaee11/
● https://dev.azure.com/jakarta-ee-azdo/jakarta-ee-azdo/
● All of the specs and more at https://github.com/jakartaee/
18
19. RESTful Web Services 4.0
JSON Processing 2.1
JSON Binding 3.0
Annotations 3.0
CDI Lite 4.1
Interceptors 2.2
Dependency Injection 2.0
Servlet 6.1
Pages 4.0
Expression Language 6.0
Debugging Support 2.0
Standard Tag Libraries 3.0
Faces 5.0
WebSocket 2.2
Enterprise Beans Lite 4.0
Persistence 3.2
Transactions 2.0
CDI 4.1
Authentication 3.1
Concurrency 3.1
Security 4.0
Validation 3.1
Data 1.0
Authorization 3.0
Activation 2.1
Batch 2.1
Connectors 2.1
Mail 2.1
Messaging 3.1
Enterprise Beans 4.0
Jakarta EE 11 Platform
Updated
Not Updated
New
20. Jakarta EE 11 Web Profile
RESTful Web Services 4.0
JSON Processing 2.1
JSON Binding 3.0
Annotations 3.0
CDI Lite 4.1
Interceptors 2.2
Dependency Injection 2.0
Servlet 6.1
Pages 4.0
Expression Language 6.0
Debugging Support 2.0
Standard Tag Libraries 3.0
Faces 5.0
WebSocket 2.2
Enterprise Beans Lite 4.0
Persistence 3.2
Transactions 2.0
CDI 4.1
Authentication 3.1
Concurrency 3.1
Security 4.0
Validation 3.1
Data 1.0
Updated
Not Updated
New
21. Jakarta EE 11 Core Profile
Updated
Not Updated
New
RESTful Web Services 4.0
JSON Processing 2.1
JSON Binding 3.0
Annotations 3.0
CDI Lite 4.1
Interceptors 2.2
Dependency Injection 2.0
22. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Jakarta EE 11
API source level: Java SE 21
API binary level: Java SE 21
TCK run with: Java SE 21
23. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Release Cadence
24. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Milestone 1
December 5, 2023
25. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Specification Document
API
TCK
M1 Specification
Compatible
Implementation(s)
26. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Jakarta EE 11
H1, 2024
27. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Performance
and
Developer Productivity
28. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Cross-Cutting
Concerns
29. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Removed
Replaced by CDI
Managed Beans 2.0
30. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Removed
SecurityManager
JEP 411: Deprecate the
Security Manager for Removal
31. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
Optional Features
Jakarta EE Platform
Jakarta EE Web Profile
Jakarta EE Core Profile
CORBA
RMI-IIOP
Java IDL
OMG
XML Binding
XML Web Services
SOAP
32. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
Recording of Ivar’s presentation at Devoxx last week
• Slides: https://speakerdeck.com/ivargrimstad/prepare-for-jakarta-ee-11
• Video: https://www.youtube.com/watch?v=1fn87WAhrQw
32
33. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
What’s new: New spec: Jakarta Data
● 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/
33
34. Jakarta Data Demo on Open Liberty
@emilyfhjiang
@wernerwedge
https://github.com/OpenLiberty/sample-jakarta-data
35. Demo
Entity:
CrewMember
Repository:
CrewMembers
CRUD Service
CrewService
@Inject
CrewMembers crewMembers;
…
@DELETE
@Path("/{id}")
public String remove(@PathParam("id") String
id) {
crewMembers.deleteByCrewID(id);
return "";
}
@Repository
public interface CrewMembers extends
DataRepository<CrewMember, String> {
@OrderBy("crewID")
List<CrewMember> findAll();
void deleteByCrewID(String crewID);
void save(CrewMember a);
}
@Entity
public class CrewMember {
@NotEmpty(message = "All crew members must have a name!")
private String name;
@Pattern(regexp = "(Captain|Officer|Engineer)", message =
"Crew member must be one of the listed ranks!")
private String rank;
@Id
@Pattern(regexp = "^d+$", message = "ID Number must be a
non-negative integer!")
private String crewID;
36. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
Complete deep dive on Jakarta Data
● Jakarta Data presentation at Jcon 2023
36
37. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
What’s new: Cross-cutting concerns
● Removal of legacy ManagedBean replace with CDI, across the entire platform.
● Removal of SecurityManager.
● Clarify JPMS requirements on Platform wiki.
● Propagate the ruling of the spec committee regarding "optional”
○ "An individual specification can have optional features. However when a component
specification is included in the Platform, Web Profile, and Core Profile, an optional feature
must be explicitly declared as required, otherwise it is not required. This requirement is noted
in the Platform specification.”
● CDI lite
○ There is no such thing.
○ Instead, CDI will split out the ”integration” related spec text into a separate spec document.
○ This solves circular dependency problems.
37
38. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
What’s new: Component spec updates
● Validation: support validating records.
● Persistence: Records will be usable as an embeddable type.
● Concurrency: support for Virtual Threads.
● RESTful Web Services: Better integration with CDI and Concurrency.
● Security
○ APIs for the authorization theme, including interceptors and an abstraction for the permission
store.
○ Any changes necessary to play well with the new MicroProfile and Jakarta EE bridge
specification (next slide)
38
39. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
What’s new: MicroProfile and Jakarta EE collaboration
● Integrate Jakarta Security and MicroProfile JWT
● No duplication of effort
● Standalone Spec in MicroProfile
● https://github.com/eclipse/microprofile-jwtBridge
39
Jakarta Security MicroProfile JWT
MicroProfile
JWTBridge
40. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
What’s new: for more details, see Ivar’s newsletter post
● https://newsroom.eclipse.org/eclipse-newsletter/2023/august/jakarta-ee-11-
next-major-jakarta-ee-update-shaping
40
41. How
COPYRIGHT (C) 2023, ECLIPSE FOUNDATION. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
42. COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2020-08
How: Azure Boards + GitHub
● https://dev.azure.com/jakarta-ee-azdo/jakarta-ee-azdo/
○ Email edburns@Microsoft.com with to be added. Best to share email address already
associated with a Microsoft account.
● Uses the Azure Boards GitHub app
○ Issue tracker of record remains GitHub issues as usual.
○ More professional grade project management facilities for Epics/Features/User
Stories/Tasks and Sprints.
● No other changes to dev process
○ Existing Eclipse CI/CD
○ Existing GitHub Repos
42
43. THANK YOU!
COPYRIGHT (C) 2023, ECLIPSE FOUNDATION. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)