Jakarta EE is an open source Java platform that provides a wide range of APIs for building enterprise applications. It is made up of specifications covering areas like web services, security, and object-relational mapping. The document discusses the history and evolution of Jakarta EE, its relationship to other technologies like Spring and MicroProfile, and its importance for businesses, careers, and the Java ecosystem. It also outlines proposals for future versions like Jakarta EE 10 that aim to improve areas like security, messaging, and NoSQL support.
4. What is Jakarta EE?
• Community and vendor driven open STANDARD
• Originally named ”Java EE” or ”J2EE”
• Transitioned from Oracle to Eclipse Foundation in 2018
• Composed of specifications covering:
• Messaging, web services, security, servlets, websockets, JSP, object relational
mapping, concurrency, mail, distributed transactions etc.
• Multiple open source and commercial implementations
• Specifications include compatibility tests verifying
conformance
• Implementations claiming Jakarta EE support must pass a
test kit (TCK)
5. Jakarta EE
• 1999 first release of Java EE / Jakarta EE
• Applications are portable between implementations
• Backward compatible*
• Application written in 2001 can still run today!
• You might already be a Jakarta EE developer if you use:
• JPA (ex. Hibernate)
• JSP / Servlets (Tomcat, Jetty, etc.)
• Web services (Jersey, Apache Axis)
• JMS (ex. ActiveMQ)
6. Jakarta EE Evolution
Release Dates
• J2EE 1.2 (12/1999)
• J2EE 1.3 (9/2001)
• J2EE 1.4 (11/2003)
• Java EE 5 (5/2006)
• Java EE 6 (12/2009)
• Java EE 7 (6/2013)
• Java EE 8 (9/2019)
• Jakarta EE 9 (11/2021)
• Jakarta EE 10 2021?
7. Jakarta EE’s Age Perspective
Technology Age
Java 25
Python 30
JavaScript 25
R 27
C 49
C++ 36
Go 11
React 7
Angular 4
Node.js 11
Jakarta EE is 21
9. JSON-P
• Support for IETF standards on – JSON Pointer (RFC 6901)
– JSON Patch (RFC 6902)
– JSON Merge Patch (RFC 7396)
• Support for a streaming API, together with Collectors
• Support for processing big JSON, e.g. add filters to JSON parsing
14. JSON-B – Binding Java & JSON
• Standardize means of converting JSON to Java objects and vice
versa
• Default mapping algorithm for converting Java classes
• Draw from best of breed ideas in existing JSON binding solutions
• Provide JAX-RS a standard way to support “application/json” for
POJOs
• JAX-RS currently supports JSON-P
15. JSON-B Mapping
@Entity public class Person {
@Id String name;
String gender;
@ElementCollection
Map<String, String> phones;
...
}
Person duke = new Person();
duke.setName("Duke");
duke.setGender("Male");
phones = new HashMap<>();
phones.put("home", "650-123-4567");
phones.put("mobile",
"650-234-5678");
duke.setPhones(phones);
{
"name":"Duke",
"gender":"Male",
"phones":{
"home":"650-123-4567",
"mobile":"650-234-5678"
}
}
17. What is a Jakarta EE Application?
Monolithic
Apps
Cloud Application
Command Line
Desktop
18. What is a Jakarta EE Application?
• Jakarta EE applications CAN BE:
• Hosted in an application container:
• Jboss, WilfeFly, OpenLiberty, IBM WebSphere, WebLogic, Payara, TomEE
• Container can host multiple applications
• Hosted in a web container:
• Tomcat, Jetty, etc.
• Java SE application depending upon a single specification
• Microservice
• Applications deployed via standard packaging (simplifies cloud deployment)
• Structured zip file with .war/.ear file extension
• Application containers range:
• Payara Micro: server in a single file!
• WebLogic/WebSphere: complex application servers
19. Jakarta EE Specifications
You want to:
• Map Java objects to database entities:
• JPA – Hibernate, EclipseLink, Apache OpenJPA, etc.
• Implement or call a remote RESTful web service:
• JAX-RS – Apache CXF, Restlet, Jersey, etc.
• Send an email to reset a password:
• Mail – GNU Mail, etc.
• Validate data passed into a web service or from a UI:
• Bean Validation – Hibernate Validator, Apache BVal
• Dependency Injection
• CDI – Weld, Apache OpenWebBeans
Specifications can be
used standalone!
20. Implementations & Features
• All implementation of a specification pass a TCK
• Implementations can and do add ADDITIONAL FEATURES
• Hibernate implements JPA Specification but adds tons of additional features.
• Spring Batch versus reference implementation
• Implementations differ in features, licensing, support, and cost.
• Code to the specifications to avoid vendor lock-in
21. • Java EE transitioned from JCP to Eclipse Foundation as Jakarta EE
• Open governance, open source, open compatibility testing
• Well defined specification process, clear IP flow, vendor-neutral open
collaboration, level playing field
• Key stakeholders maintained if not expanded including Oracle, IBM, Red
Hat, Payara and VMware
• Community participation and contribution key
https://jakarta.ee
Java EE to Jakarta EE
23. Jakarta EE & Open Source
• Jakarta EE specifications and compatibility tests are open source
• YOU code against APIs and not implementations
• Some implementations are open source:
• GlassFish, Payara, TomEE, OpenLiberty etc.
• Development controlled via Jakarta EE Specification Process
• Vendor neutral and level playing field for all participants
• Policies around IP and ensuring IP ownership
• Goal is continuity and backwards compatibility
• 20+ year track record of releases
25. Jakarta EE & Spring
Did you know that Spring depends and contributes to Jakarta EE?
Spring contributes to these specifications:
• Servlet
• JPA
• Batching
26. Jakarta EE & MicroProfile
Did you know that MicroProfile depends and contributes to Jakarta EE?
27. Jakarta EE Industry Adoption
2020 Jakarta EE Developer Survey: https://outreach.jakartaee.org/2020-developer-survey-report
• Jakarta EE is critical to Java ecosystem and cloud
• 25-35% of Java applications run on Jakarta EE application servers
• WebLogic, WebSphere/Liberty, JBoss EAP, WildFly, Payara
• 70-80% of Java applications depend on at least one or more Jakarta EE APIs
• Tomcat, Hibernate, ActiveMQ, Jetty, MicroProfile, Spring, Quarkus
A healthy ecosystem continues
to evolve, with a stable Jakarta
EE core
Quarkus and MicroProfile are
enjoying a notable increase in
interest
30. Jakarta EE Adoption
• Individual specifications can be used without running in a container!
• Many options for deploying applications.
• Can pick a single specification and add the JAR (JSON-P for example) or run
in a container.
• Containers can be installed or run from a JAR depending on vendor:
• java -jar payara-micro-4.1.2.174.jar --deploy SimpleService-1.0.war
MicroProfile further enhances Jakarta EE
31. What is MicroProfile?
• Eclipse Foundation Project
• Open source set of specifications
• Started to push Java EE innovation forward
• Multiple Implementations
• Java EE/Jakarta EE containers
• Non-Java EE/Jakarta EE implementations
• Baseline subset of Jakarta EE technologies (CDI/JAX-RS)
• Current release: 4.0
32. Jakarta EE / MicroProfile FAQ
• What’s the relationship between MicroProfile and Jakarta EE?
• Are MicroProfile projects standalone?
• Do all Jakarta EE containers support MicroProfile?
• Do all MicroProfile implementations support Jakarta EE?
Two independent Eclipse projects.
- Not necessarily -
- No -
- No* -
33. Jakarta EE / MicroProfile FAQ
• Will Jakarta EE and MicroProfile merge?
• What are the release cycles?
• Can Jakarta EE apps use MicroProfile APIs?
• Do MicroProfile APIs require a microservices architecture?
- Probably Not -
4 MicroProfile: Quarterly
Jakarta EE: Maybe Yearly?
- Yes -
- No -
36. Open API
• Unified Java API for OpenAPI v3 specification
• Generates Open API (Swagger) documents from JAX-RS endpoints (WSDL
for REST)
• Enabled by default in all MicroProfile applications
• Configurable via the MicroProfile Config API
37. Fault Tolerance
• Separate execution from execution logic
• Dictates whether and when executions should take place and fallbacks offer an
alternative result when an execution does not complete successfully
• Influenced by Hystrix/Failsafe
• Fault tolerance policies:
• RetryPolicy - define criteria on when to retry.
• Fallback - provide an alternative solution for a failed execution.
• Bulkhead - isolate failures in part of the system
• CircuitBreaker - offer a way to fail fast
38. Health Checks
• Health checks probe state of a computing node from another machine
• Example: Kubernetes service controller
• APM tool
• Primary target cloud environments where automated processes maintain the
state of computing nodes
• Health check response:
• Name to identify the probe
• UP/Down flag to indicate state
• Meta-data (key/values)
http://127.0.0.1:8080/health
39. Config API
Configuration sources:
• META-INF/microprofile-config.properties
• System Properties
• Environment Variables
• Custom – provide providers via ServiceLoader (SPI)
40. Jakarta EE & MicroProfile
• MicroProfile used heavily for development of MicroServices and cloud
development
• MicroProfile depends upon Jakarta EE
• Most Jakarta EE containers also support MicroProfile
41. Jakarta EE & Careers
• When the technology dies so can your career!
• Technologies you use determine your career
• Resume Driven Development anyone?
• Many Java developers do not consider themselves “Jakarta EE Developers”
• Java resumes are full of Jakarta EE acronyms!
• Tying yourself to a vendor solution is bad long-term strategy.
42. Jakarta EE & Careers
www.livecareer.com
Recruiting systems screen Java positions for this alphabet
soup. Many Java resumes have EVERY Jakarta EE spec
listed.
44. Jakarta EE TCK
• Test Compatibility Kit – verifies conformance to the specifications.
• Each specification has its own set of tests to verify compatibility
46. Jakarta EE TCK & Conformance
http://www.inforbus.com/InforsuiteAS/platform-tckresults/index1.html
47. Jakarta EE TCK & Conformance
http://www.inforbus.com/InforsuiteAS/platform-tckresults/index1.html
48. Jakarta EE’s Future
• Future of Jakarta EE is BRIGHT.
• Relationship between Jakarta EE and MicroProfile being formalized.
• Jakarta EE 9 released in December!
• javax changes to jakarta namespace
• No feature changes – goal is to simplify the namespace transition
• Container can support older namespace
• Jakarta EE 9.1 with support of Java 11 releasing soon
• Many implementations already support Java 11+
• 9.1 CHANGES the minimum required
• Planning for Jakarta EE 10 has started
• Hopefully new release end of 2021
49. Jakarta EE 10 Themes
• CDI Alignment
• @Asynchronous, @Schedule, @Lock, @MaxConcurrency in Concurrency, @MessageListener
in Messaging, @RolesAllowed, @RunAs in Security
• Better CDI support in REST, Batch, Concurrency
• Java SE Alignment
• CompletableFuture in Concurrency
• Bootstrap APIs for REST, Messaging
• Decoupling TCKs, modularization
• Closing standardization gaps
• Security, Batch, Concurrency, Persistence, Transactions
• Microservices Profile
• Innovation: NoSQL, MVC, Configuration
50. Jakarta EE 10: Messaging Proposal
• CDI based, modernized @MessageListener
• Standalone bootstrap API
• AMQP interoperability
• Kafka interoperability
@ApplicationScoped
@MaxConcurrency(10)
public class HandlingEventRegistrationAttemptConsumer {
@MessageListener(
destinationLookup="jms/HandlingEventRegistrationAttemptQueue",
selector="source = 'mobile'",
batchSize=10, retry=5, retryDelay=7000,
orderBy=TIMESTAMP)
public void onEventRegistrationAttempt(
HandlingEventRegistrationAttempt... attempts) {
...
}
}
@MessageListener Example
51. Jakarta EE 10: NoSQL Standardization
• Specification for accessing NoSQL databases
• Layers of flexible abstractions
• Communication API akin to JDBC
• Mapping/template API akin to JPA
• Repository API akin to DeltaSpike/Spring Data
• API variants by NoSQL taxonomy
• Key-value pair, column family, document and graph
• Bean validation, externalized configuration
52. Jakarta EE 10: NoSQL Example
@Entity public class Order {
@Id private long id;
@Column @NotBlank private String description;
@Column @NotEmpty private List<OrderLine> orderLines;
@Column @NotNull private Customer customer;
@Column @NotNull private Address address;
template.insert(order);
...
DocumentQuery query = select().from("Order")
.where("description").like("^Pinball").build();
logger.info("Found orders for pinball: "
+ template.select(query).count());
53. Jakarta EE 10: Security Proposal
• CDI based, modernized equivalents for @RolesAllowed and @RunAs
• OAuth 2.0, OpenID Connect, JWT support
• EL enabled authorization annotation
55. Beyond Jakarta EE 10
• Persistence alignment with Java SE Records
• JSON schema support
• Reactive/NIO support
• Servlet, REST, MVC
• Persistence - requires reactive/NIO JDBC, ideally in Java SE
• Making modularity and embedded runtimes required
57. Why Jakarta EE Matters?
• Community
• At least 80% of Java applications use a Jakarta EE API
• Underpins many frameworks, libraries, and applications
• Spring and MicroProfile depend upon Jakarta EE
• Differentiates Java from other languages
• Business
• Minimizes vendor lock-in
• Simplifies hiring
• Long-term continuity and stability- write once, not rewrite every year!
• Used widely in the cloud- many solutions!
• Career
• Provides career stability and transferable skills
• Alphabet soup of Jakarta acronyms used for hiring
58. Jakarta EE Misconceptions
• Jakarta EE / Java EE requires you to use JSP/Servlets/JSF/etc.
• Jakarta EE are for monolithic applications.
• Jakarta EE is stagnant.
• Jakarta EE is all or nothing.
- No -
- No -
- No -
- No -
61. Ways of Contributing
• Follow Jakarta EE technologies that interest you and share opinion
• https://jakarta.ee/connect/mailing-lists/
• Advocate for a specific change or feature
• https://jakarta.ee/projects/
• Help implement a change in API, specification, TCK or implementation
• Sign Eclipse Contributor Agreement
• https://www.eclipse.org/legal/ECA.php
• Becoming a committer comes much later
• Engage an Ambassador if needed
• https://jakartaee-ambassadors.io
62. Resources
• Jakarta EE Community alias
• https://accounts.eclipse.org/mailing-list/jakarta.ee-community
• Jakarta EE Twitter handle
• @JakartaEE
• Jakarta Tech Talks
• https://www.meetup.com/jakartatechtalks_
• Jakarta EE Ambassadors
• @jee_ambassadors