SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Why Jakarta EE Matters
Ryan Cuprak
President Jakarta EE Ambassador
@jee_ambassadors
@rcuprak
2021
Introduction
3ds.com
Ryan Cuprak
President Jakarta EE Ambassador
@jee_ambassadors
@rcuprak
Introduction
https://www.youtube.com/watch?reload=9&v=HiZLfOmH56U
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)
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)
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?
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
Jakarta EE Specifications
Interceptors
Servlet
CDI
JAX-RS
Concurrency
Utilities
EJB
JPA
JSF
JCA
EL
JSP
Common Annotations
Portable
Extensions
JMS
Managed Beans
JTA
Batch
Applications
API for JSON
WebSockets
Mail
JSON Binding
Authentication
Security
Bean Validation
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
JSON-P Pointer Support
…
JSR 374
”confoo”,
“Montreal”,
“2018”
”confoo”,
“Virtual”,
“2021”
JSON-P Patch
• IETF RFC 6902
• Modify parts of JSON document
• Patch is a JSON document itself
• Operations
• add, replace, remove, move, copy
• HTTP PATCH method (application/json-patch+json)
https://goo.gl/mKkPSY
JSON-P Patch
…
…
Bean Validation Examples
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
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"
}
}
Too many specification to cover!
What is a Jakarta EE Application?
Monolithic
Apps
Cloud Application
Command Line
Desktop
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
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!
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
• 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
Jakarta EE
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
Jakarta EE Ecosystem
Jakarta EE & Spring
Did you know that Spring depends and contributes to Jakarta EE?
Spring contributes to these specifications:
• Servlet
• JPA
• Batching
Jakarta EE & MicroProfile
Did you know that MicroProfile depends and contributes to Jakarta EE?
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
Jakarta EE Versions in Production
OmniFaces Jakarta EE Survey 2020/2021
Jakarta EE Specifications Usage
OmniFaces Jakarta EE Survey 2020/2021
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
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
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* -
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 -
MicroProfile Benefits
• Application monitoring
• Standardized configuration
• REST documentation
• Fault tolerance / resiliency
• Scalability
• Service tracing
• Security (JWT)
MicroProfile 4.0
infoq.com
MicroProfile depends upon Jakarta EE
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
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
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
Config API
Configuration sources:
• META-INF/microprofile-config.properties
• System Properties
• Environment Variables
• Custom – provide providers via ServiceLoader (SPI)
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
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.
Jakarta EE & Careers
www.livecareer.com
Recruiting systems screen Java positions for this alphabet
soup. Many Java resumes have EVERY Jakarta EE spec
listed.
Technology Graveyard
Microsoft COM/DCOM
Some of these are still “alive.”
Jakarta EE TCK
• Test Compatibility Kit – verifies conformance to the specifications.
• Each specification has its own set of tests to verify compatibility
Jakarta EE TCK & Conformance
Jakarta EE TCK & Conformance
http://www.inforbus.com/InforsuiteAS/platform-tckresults/index1.html
Jakarta EE TCK & Conformance
http://www.inforbus.com/InforsuiteAS/platform-tckresults/index1.html
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
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
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
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
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());
Jakarta EE 10: Security Proposal
• CDI based, modernized equivalents for @RolesAllowed and @RunAs
• OAuth 2.0, OpenID Connect, JWT support
• EL enabled authorization annotation
Jakarta EE 10: Security Proposal
@OpenIdConnectIdentityStoreDefinition(
clientId=“${client.id}”, clientSecret=“${client.secret}”,
discoveryEndpoint=“https://.../openid-configuration”,
userNameAttribute=“preferred_username”)
@JwtIdentityStoreDefinition(
jwksUri="https://.../keys",
issuer="https://.../${tenant.id}/v2.0",
audiences="${client.id}",
userNameAttribute="preferred_username")
@OAuth2IdentityStoreDefinition(
clientId="${client.id}", clientSecret="${client.secret}",
tokenEndpointAuthMethod="client_secret_post",
authorizationEndpoint="https://.../authorize",
userNameAttribute="preferred_username",
website="https://.../authentication/")
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
Jakarta EE 10: Get Involved!
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
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 -
Demo Application: Cargo Tracker
Jakarta EE Starter
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 UpdateRyan Cuprak
 
Scala and Play with Gradle
Scala and Play with GradleScala and Play with Gradle
Scala and Play with GradleWei Chen
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System IntroductionDan Stine
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Spring Framework 3.2 - What's New
Spring Framework 3.2 - What's NewSpring Framework 3.2 - What's New
Spring Framework 3.2 - What's NewSam Brannen
 
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Sam Brannen
 
Workshop Framework(J2EE/OSGi/RCP)
Workshop Framework(J2EE/OSGi/RCP)Workshop Framework(J2EE/OSGi/RCP)
Workshop Framework(J2EE/OSGi/RCP)Summer Lu
 
Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Saeed Zarinfam
 
Getting Started with Java EE 7
Getting Started with Java EE 7Getting Started with Java EE 7
Getting Started with Java EE 7Arun Gupta
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experienceAlex Tumanoff
 
Scala play-framework
Scala play-frameworkScala play-framework
Scala play-frameworkAbdhesh Kumar
 
Expect the unexpected: Anticipate and prepare for failures in microservices b...
Expect the unexpected: Anticipate and prepare for failures in microservices b...Expect the unexpected: Anticipate and prepare for failures in microservices b...
Expect the unexpected: Anticipate and prepare for failures in microservices b...Bhakti Mehta
 
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMigrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMario-Leander Reimer
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
 

Was ist angesagt? (20)

Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 Update
 
Scala and Play with Gradle
Scala and Play with GradleScala and Play with Gradle
Scala and Play with Gradle
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Spring Framework 3.2 - What's New
Spring Framework 3.2 - What's NewSpring Framework 3.2 - What's New
Spring Framework 3.2 - What's New
 
Java 9 preview
Java 9 previewJava 9 preview
Java 9 preview
 
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
 
Why Play Framework is fast
Why Play Framework is fastWhy Play Framework is fast
Why Play Framework is fast
 
Workshop Framework(J2EE/OSGi/RCP)
Workshop Framework(J2EE/OSGi/RCP)Workshop Framework(J2EE/OSGi/RCP)
Workshop Framework(J2EE/OSGi/RCP)
 
Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
 
Getting Started with Java EE 7
Getting Started with Java EE 7Getting Started with Java EE 7
Getting Started with Java EE 7
 
JSF2
JSF2JSF2
JSF2
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Scala play-framework
Scala play-frameworkScala play-framework
Scala play-framework
 
Expect the unexpected: Anticipate and prepare for failures in microservices b...
Expect the unexpected: Anticipate and prepare for failures in microservices b...Expect the unexpected: Anticipate and prepare for failures in microservices b...
Expect the unexpected: Anticipate and prepare for failures in microservices b...
 
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMigrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
 
Java 9 Modularity in Action
Java 9 Modularity in ActionJava 9 Modularity in Action
Java 9 Modularity in Action
 

Ähnlich wie Why jakarta ee matters (ConFoo 2021)

Migrating to Jakarta EE 10
Migrating to Jakarta EE 10Migrating to Jakarta EE 10
Migrating to Jakarta EE 10Josh Juneau
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011Arun Gupta
 
Haj 4328-java ee 7 overview
Haj 4328-java ee 7 overviewHaj 4328-java ee 7 overview
Haj 4328-java ee 7 overviewKevin Sutter
 
Utilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with MicroservicesUtilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with MicroservicesJosh Juneau
 
Java ee 8 + security overview
Java ee 8 + security overviewJava ee 8 + security overview
Java ee 8 + security overviewRudy De Busscher
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesEdward Burns
 
Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Kile Niklawski
 
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native CompanionJakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native CompanionJakarta_EE
 
MicroProfile for MicroServices
MicroProfile for MicroServicesMicroProfile for MicroServices
MicroProfile for MicroServicesMert Çalışkan
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future KeynoteSimon Ritter
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatVMware Hyperic
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConLudovic Champenois
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKWolfgang Weigend
 
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in PracticeOpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in PracticeJesse Gallagher
 
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»DataArt
 
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUGOverview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUGMarakana Inc.
 
1java Introduction
1java Introduction1java Introduction
1java IntroductionAdil Jafri
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)Kevin Sutter
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EEJ On The Beach
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EEMarkus Eisele
 

Ähnlich wie Why jakarta ee matters (ConFoo 2021) (20)

Migrating to Jakarta EE 10
Migrating to Jakarta EE 10Migrating to Jakarta EE 10
Migrating to Jakarta EE 10
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011
 
Haj 4328-java ee 7 overview
Haj 4328-java ee 7 overviewHaj 4328-java ee 7 overview
Haj 4328-java ee 7 overview
 
Utilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with MicroservicesUtilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with Microservices
 
Java ee 8 + security overview
Java ee 8 + security overviewJava ee 8 + security overview
Java ee 8 + security overview
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth Slides
 
Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann
 
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native CompanionJakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
 
MicroProfile for MicroServices
MicroProfile for MicroServicesMicroProfile for MicroServices
MicroProfile for MicroServices
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future Keynote
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
 
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in PracticeOpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
 
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
 
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUGOverview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUG
 
1java Introduction
1java Introduction1java Introduction
1java Introduction
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EE
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EE
 

Mehr von Ryan Cuprak

Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Ryan Cuprak
 
DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)Ryan Cuprak
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaRyan Cuprak
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]Ryan Cuprak
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the CloudRyan Cuprak
 
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Ryan Cuprak
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Ryan Cuprak
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014Ryan Cuprak
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014Ryan Cuprak
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Ryan Cuprak
 
JavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local CommunityJavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local CommunityRyan Cuprak
 

Mehr von Ryan Cuprak (12)

Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)
 
DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS Lambda
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
 
JavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local CommunityJavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local Community
 

Kürzlich hochgeladen

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 

Kürzlich hochgeladen (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 

Why jakarta ee matters (ConFoo 2021)

  • 1. Why Jakarta EE Matters Ryan Cuprak President Jakarta EE Ambassador @jee_ambassadors @rcuprak 2021
  • 2. Introduction 3ds.com Ryan Cuprak President Jakarta EE Ambassador @jee_ambassadors @rcuprak
  • 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
  • 8. Jakarta EE Specifications Interceptors Servlet CDI JAX-RS Concurrency Utilities EJB JPA JSF JCA EL JSP Common Annotations Portable Extensions JMS Managed Beans JTA Batch Applications API for JSON WebSockets Mail JSON Binding Authentication Security Bean Validation
  • 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
  • 10. JSON-P Pointer Support … JSR 374 ”confoo”, “Montreal”, “2018” ”confoo”, “Virtual”, “2021”
  • 11. JSON-P Patch • IETF RFC 6902 • Modify parts of JSON document • Patch is a JSON document itself • Operations • add, replace, remove, move, copy • HTTP PATCH method (application/json-patch+json) https://goo.gl/mKkPSY
  • 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
  • 28. Jakarta EE Versions in Production OmniFaces Jakarta EE Survey 2020/2021
  • 29. Jakarta EE Specifications Usage OmniFaces Jakarta EE Survey 2020/2021
  • 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 -
  • 34. MicroProfile Benefits • Application monitoring • Standardized configuration • REST documentation • Fault tolerance / resiliency • Scalability • Service tracing • Security (JWT)
  • 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.
  • 43. Technology Graveyard Microsoft COM/DCOM Some of these are still “alive.”
  • 44. Jakarta EE TCK • Test Compatibility Kit – verifies conformance to the specifications. • Each specification has its own set of tests to verify compatibility
  • 45. Jakarta EE TCK & Conformance
  • 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
  • 54. Jakarta EE 10: Security Proposal @OpenIdConnectIdentityStoreDefinition( clientId=“${client.id}”, clientSecret=“${client.secret}”, discoveryEndpoint=“https://.../openid-configuration”, userNameAttribute=“preferred_username”) @JwtIdentityStoreDefinition( jwksUri="https://.../keys", issuer="https://.../${tenant.id}/v2.0", audiences="${client.id}", userNameAttribute="preferred_username") @OAuth2IdentityStoreDefinition( clientId="${client.id}", clientSecret="${client.secret}", tokenEndpointAuthMethod="client_secret_post", authorizationEndpoint="https://.../authorize", userNameAttribute="preferred_username", website="https://.../authentication/")
  • 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
  • 56. Jakarta EE 10: Get Involved!
  • 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