SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Explore the New
Jakarta EE Core Profile
Rudy De Busscher
Topics
• Jakarta EE Core Profile
• CDI 4.0 (Lite)
• JAX-RS SE Bootstrap API
• Modularity
• Some runtimes
Rudy De Busscher
Rudy De Busscher
Rudy De Busscher
• Jakarta EE Expert
• Owner of Atbash
• Involved in
• Committer in Eclipse EE4J groups (Jakarta EE)
• Committer of MicroPro
fi
le
• Java EE Security API Expert group member
@rdebusscher @rdebusscher/mastodon.online
https://www.atbash.be
Core Profile
• Why a new Profile?
• What are the use cases
Rudy De Busscher
Rudy De Busscher
Servlet,
JSP, EJB,
JMS, RMI
CMP, JCA
Web
Services,
Mgmt,
Deplymnt
Ease of
Use,
EJB 3, JSF,
JPA, JAXB,
JAX-WS
JAX-RS,
CDI, Bean-
Validation,
Web Profile
Batch,
Concurrenc
y, Web-
Sockets,
JSON
Security API
CDI Lite
Project
JPE
J2EE 1.2 J2EE 1.3 J2EE 1.4 Java EE 5 Java EE 6 Java EE 7 Java EE 8
Jakarta EE 8
Jakarta EE 10
MicroProfile
6.0
MicroProfile
2.0
1999
2009
2022
Full
Rudy De Busscher
Web
Java EE 6
Full
Web
Core
MP 6
Jakarta EE 10
Core
Core Profile goals
Rudy De Busscher
• Core Profile
• Modern cloud applications
• MicroServices
• Ahead-of-time-compilation
• Modularisation
From
spec document
Rudy De Busscher
Rudy De Busscher
(Optional)
Servlet
??
Config
??
Compatible Products
Rudy De Busscher
Web
Core
CDI Lite - Why?
• CDI
• Determines beans at startup
• Scanning - Programmatic (Extension)
• Fast startup
• Much can be done upfront
• Native compilation
Rudy De Busscher
CDI Lite
• Largest part of CDI
• Upfront execution possible and less reflection at runtime
• Does not contain
• BeanManager -> BeanContainer
• Extension -> BuildCompatibleExtension
• Decorator / Specializes
• SessionScoped / ConversationScoped
• Optional
Rudy De Busscher
BeanManager
• CDI.current().getBeanManager();
• CDI.current().getBeanContainer();
Rudy De Busscher
Expression Language
• Within BeanManager interface
• public ExpressionFactory
wrapExpressionFactory(ExpressionFactory
expressionFactory);
• public ELResolver getELResolver();
• To resolve CDI beans from EL expressions
• Requires to bring in Expression Language spec in Core Profile
as optional.
Rudy De Busscher
BuildCompatibleExtension
• Works in a similar way as Extension (CDI full)
• Prepares metadata about beans at compile time (possible)
• Faster start up (since less work to do)
Rudy De Busscher
Build Phases
1. Discovery
• Add annotations that will also be discovered
• Use annotation that isn’t a qualifier.
2. Enhancement
• Allow transforming of annotations
• For ex: Assume @Inject for each qualifier usage.
Rudy De Busscher
Build Phases
3. Registration
• Get access to defined beans
• Called a second time for all Synthetic beans after Synthesis
phase.
4. Synthesis
• Define beans programmatically
Rudy De Busscher
Build Phases
5. Validation
• Custom validation of CDI Bean metadata
• After default validation
Rudy De Busscher
CDI Implementations
• Weld
• CDI Full
• OpenDI
• CDI Lite
• In progress
• Based on Micronaut
• https://github.com/eclipse-ee4j/odi
Rudy De Busscher
CDI Lite Problem
• 1 artifact (1 API jar) for entire CDI
• Includes also CDI full only classes
• These are optionally supported in Core Profile.
• Compile against API jar
• Fails at runtime
• Potentially
• When I use CDI full only classes and runtime doesn’t support
it.
Rudy De Busscher
Core Profile tester
• Am I using
CDI full classes?
Rudy De Busscher
JAX-RS new features
• Support for multipart media type
• Automatic loading of Provider extensions
• Better alignment with JSON-B
• Java SE Bootstrap API
Rudy De Busscher
Java SE Bootstrap API
• Run JAX-RS implementation directly on Java SE
• No need for WAR deployment
• Also CDI can be started with pure SE
• Since CDI 2.0 / Java EE 8
Rudy De Busscher
Rudy De Busscher
Demo
Modular
• Part of goal of Core Profile
• Make runtime as small as possible
• Load only what is really needed
• Helps in faster startup*
Rudy De Busscher * Other techniques like CDS more efficient
WildFly - Galleon
• Galleon : Provisioning tool designed to create and maintain software
distributions
• Define modules that are loaded/started
• Binaries include always everything
• ./galleon.sh install wildfly/final#27.0.0.Final --
layers=jaxrs,cdi,jsonb,jsonp --dir=<target>
• Adds also Undertow (Servlet), Bean Validation, SmallRye Config
(MP Config)
Rudy De Busscher
OpenLiberty
• OSGI based
• Most modular Jakarta runtime
• Defines features in server.xml
• (Jakarta EE 10 = Beta = not modular yet)
Rudy De Busscher
Other runtimes
• Besides the certified runtimes
• Not certified ones (yet)
• In progress
• Might create a Core Profile version
Rudy De Busscher
Helidon
• Helidon MP
• MicroProfile specs ~ Core profile
• JDK 17+
• Native compilation available
• Modular
• Core artifact
• Status
• 3.0.x -> Jakarta EE 9.1
Rudy De Busscher
Quarkus
• Quarkus 3.0 development started
• Support for Jakarta namespace
• JDK 11+
• Native compilation available
• Modular
Rudy De Busscher
Micronaut
• Micronaut 3.x
• javax namespace
• Not all specs supported
• JDK 11+
• Native compilation available
• Modular
Rudy De Busscher
Piranha Cloud
• Version 22.0.9 +
• Core Profile runtime
• JDK 17+
• No Native compilation available by default
• Single artefact
• Servlet (partial), EL Expression, Bean Validation
• But is small
Rudy De Busscher
Atbash Runtime
• 1.0.0.alpha
• Core Profile runtime
• JDK 11+
• No Native compilation available by default
• Modular
Rudy De Busscher
Atbash Runtime
• As runtime
• java -jar atbash_runtime.jar <path/to/app.war>
• Server mode - Remote deployment
• As Runner
• public static void main
• Using same core and modules (service loader)
• Extensions for MicroProfile Config, JWT Auth, …
Rudy De Busscher
Core Profile - Conclusion
• Typical for todays REST based applications
• Should by small, modular and support native compilation
• Easy to create your runtime
• Near future 5 - 10 supporting products
• Challenges
• Missing critical elements (Config, Security, Data access)
• Potential CDI Lite pitfalls
Rudy De Busscher
Code Repository
• https://github.com/atbashEE/core-profile-demo
• Core profile tester source code
• BCE @Enhancement example
• BCE @Synthesis example
• Running Jakarta Core application on Java SE
• Example with OpenLiberty
Rudy De Busscher
Q & A
Rudy De Busscher
Thank you
•Atbash
• Blog
• https://www.atbash.be
• Github
• https://github.com/atbashEE
Rudy De Busscher

Weitere ähnliche Inhalte

Ă„hnlich wie core-profile_jakartaOne2022.pdf

A new model for Docker image distribution
A new model for Docker image distributionA new model for Docker image distribution
A new model for Docker image distribution
Docker, Inc.
 
Karwin bill zf-db-zend_con-20071009
Karwin bill zf-db-zend_con-20071009Karwin bill zf-db-zend_con-20071009
Karwin bill zf-db-zend_con-20071009
robinvnxxx
 
Rich faces in_the_cloud_mini_booth
Rich faces in_the_cloud_mini_boothRich faces in_the_cloud_mini_booth
Rich faces in_the_cloud_mini_booth
balunasj
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
Ludovic Champenois
 

Ă„hnlich wie core-profile_jakartaOne2022.pdf (20)

WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
 
Node and Azure
Node and AzureNode and Azure
Node and Azure
 
DockerCon SF 2015: A New Model for Image Distribution
DockerCon SF 2015: A New Model for Image DistributionDockerCon SF 2015: A New Model for Image Distribution
DockerCon SF 2015: A New Model for Image Distribution
 
Docker Registry V2
Docker Registry V2Docker Registry V2
Docker Registry V2
 
Gradual migration to MicroProfile
Gradual migration to MicroProfileGradual migration to MicroProfile
Gradual migration to MicroProfile
 
Gradual Migration to MicroProfile
Gradual Migration to MicroProfileGradual Migration to MicroProfile
Gradual Migration to MicroProfile
 
A new model for Docker image distribution
A new model for Docker image distributionA new model for Docker image distribution
A new model for Docker image distribution
 
Karwin bill zf-db-zend_con-20071009
Karwin bill zf-db-zend_con-20071009Karwin bill zf-db-zend_con-20071009
Karwin bill zf-db-zend_con-20071009
 
Docker presentation for sharing
Docker presentation   for sharingDocker presentation   for sharing
Docker presentation for sharing
 
The tools & technologies behind Resin.io
The tools & technologies behind Resin.ioThe tools & technologies behind Resin.io
The tools & technologies behind Resin.io
 
Rich faces in_the_cloud_mini_booth
Rich faces in_the_cloud_mini_boothRich faces in_the_cloud_mini_booth
Rich faces in_the_cloud_mini_booth
 
Containers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aciContainers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aci
 
The MySQL Server ecosystem in 2016
The MySQL Server ecosystem in 2016The MySQL Server ecosystem in 2016
The MySQL Server ecosystem in 2016
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
 
.NET7.pptx
.NET7.pptx.NET7.pptx
.NET7.pptx
 
Docker With Asp.net Core
Docker With Asp.net CoreDocker With Asp.net Core
Docker With Asp.net Core
 
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
 
Hi! Ho! Hi! Ho! SQL Server on Linux We Go!
Hi! Ho! Hi! Ho! SQL Server on Linux We Go!Hi! Ho! Hi! Ho! SQL Server on Linux We Go!
Hi! Ho! Hi! Ho! SQL Server on Linux We Go!
 

Mehr von Rudy De Busscher

Mehr von Rudy De Busscher (16)

jakarta-integration-testing.pdf
jakarta-integration-testing.pdfjakarta-integration-testing.pdf
jakarta-integration-testing.pdf
 
MicroStream-WithoutDatabase.pdf
MicroStream-WithoutDatabase.pdfMicroStream-WithoutDatabase.pdf
MicroStream-WithoutDatabase.pdf
 
Jakarta EE 8 on JDK17
Jakarta EE 8 on JDK17Jakarta EE 8 on JDK17
Jakarta EE 8 on JDK17
 
Creating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaCreating a Kubernetes Operator in Java
Creating a Kubernetes Operator in Java
 
Finally, easy integration testing with Testcontainers
Finally, easy integration testing with TestcontainersFinally, easy integration testing with Testcontainers
Finally, easy integration testing with Testcontainers
 
Control and monitor_microservices_with_microprofile
Control and monitor_microservices_with_microprofileControl and monitor_microservices_with_microprofile
Control and monitor_microservices_with_microprofile
 
Transactions in micro-services (fall 2019)
Transactions in micro-services (fall 2019)Transactions in micro-services (fall 2019)
Transactions in micro-services (fall 2019)
 
Transactions in micro-services (summer 2019)
Transactions in micro-services (summer 2019)Transactions in micro-services (summer 2019)
Transactions in micro-services (summer 2019)
 
Monitor Micro-service with MicroProfile metrics
Monitor Micro-service with MicroProfile metricsMonitor Micro-service with MicroProfile metrics
Monitor Micro-service with MicroProfile metrics
 
Secure JAX-RS
Secure JAX-RSSecure JAX-RS
Secure JAX-RS
 
From Monolith to micro-services and back : The Self Contained Systems
From Monolith to micro-services and back : The Self Contained SystemsFrom Monolith to micro-services and back : The Self Contained Systems
From Monolith to micro-services and back : The Self Contained Systems
 
Java EE Security API - JSR375: Getting Started
Java EE Security API - JSR375: Getting Started Java EE Security API - JSR375: Getting Started
Java EE Security API - JSR375: Getting Started
 
What is tackled in the Java EE Security API (Java EE 8)
What is tackled in the Java EE Security API (Java EE 8)What is tackled in the Java EE Security API (Java EE 8)
What is tackled in the Java EE Security API (Java EE 8)
 
Java ee 8 + security overview
Java ee 8 + security overviewJava ee 8 + security overview
Java ee 8 + security overview
 
Extending Arquillian graphene
Extending Arquillian graphene Extending Arquillian graphene
Extending Arquillian graphene
 
Octopus framework; Permission based security framework for Java EE
Octopus framework; Permission based security framework for Java EEOctopus framework; Permission based security framework for Java EE
Octopus framework; Permission based security framework for Java EE
 

KĂĽrzlich hochgeladen

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

KĂĽrzlich hochgeladen (20)

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 

core-profile_jakartaOne2022.pdf

  • 1. Explore the New Jakarta EE Core Profile Rudy De Busscher
  • 2. Topics • Jakarta EE Core Profile • CDI 4.0 (Lite) • JAX-RS SE Bootstrap API • Modularity • Some runtimes Rudy De Busscher
  • 3. Rudy De Busscher Rudy De Busscher • Jakarta EE Expert • Owner of Atbash • Involved in • Committer in Eclipse EE4J groups (Jakarta EE) • Committer of MicroPro fi le • Java EE Security API Expert group member @rdebusscher @rdebusscher/mastodon.online https://www.atbash.be
  • 4. Core Profile • Why a new Profile? • What are the use cases Rudy De Busscher
  • 5. Rudy De Busscher Servlet, JSP, EJB, JMS, RMI CMP, JCA Web Services, Mgmt, Deplymnt Ease of Use, EJB 3, JSF, JPA, JAXB, JAX-WS JAX-RS, CDI, Bean- Validation, Web Profile Batch, Concurrenc y, Web- Sockets, JSON Security API CDI Lite Project JPE J2EE 1.2 J2EE 1.3 J2EE 1.4 Java EE 5 Java EE 6 Java EE 7 Java EE 8 Jakarta EE 8 Jakarta EE 10 MicroProfile 6.0 MicroProfile 2.0 1999 2009 2022
  • 6. Full Rudy De Busscher Web Java EE 6 Full Web Core MP 6 Jakarta EE 10 Core
  • 7. Core Profile goals Rudy De Busscher • Core Profile • Modern cloud applications • MicroServices • Ahead-of-time-compilation • Modularisation From spec document
  • 10. Compatible Products Rudy De Busscher Web Core
  • 11. CDI Lite - Why? • CDI • Determines beans at startup • Scanning - Programmatic (Extension) • Fast startup • Much can be done upfront • Native compilation Rudy De Busscher
  • 12. CDI Lite • Largest part of CDI • Upfront execution possible and less reflection at runtime • Does not contain • BeanManager -> BeanContainer • Extension -> BuildCompatibleExtension • Decorator / Specializes • SessionScoped / ConversationScoped • Optional Rudy De Busscher
  • 14. Expression Language • Within BeanManager interface • public ExpressionFactory wrapExpressionFactory(ExpressionFactory expressionFactory); • public ELResolver getELResolver(); • To resolve CDI beans from EL expressions • Requires to bring in Expression Language spec in Core Profile as optional. Rudy De Busscher
  • 15. BuildCompatibleExtension • Works in a similar way as Extension (CDI full) • Prepares metadata about beans at compile time (possible) • Faster start up (since less work to do) Rudy De Busscher
  • 16. Build Phases 1. Discovery • Add annotations that will also be discovered • Use annotation that isn’t a qualifier. 2. Enhancement • Allow transforming of annotations • For ex: Assume @Inject for each qualifier usage. Rudy De Busscher
  • 17. Build Phases 3. Registration • Get access to defined beans • Called a second time for all Synthetic beans after Synthesis phase. 4. Synthesis • Define beans programmatically Rudy De Busscher
  • 18. Build Phases 5. Validation • Custom validation of CDI Bean metadata • After default validation Rudy De Busscher
  • 19. CDI Implementations • Weld • CDI Full • OpenDI • CDI Lite • In progress • Based on Micronaut • https://github.com/eclipse-ee4j/odi Rudy De Busscher
  • 20. CDI Lite Problem • 1 artifact (1 API jar) for entire CDI • Includes also CDI full only classes • These are optionally supported in Core Profile. • Compile against API jar • Fails at runtime • Potentially • When I use CDI full only classes and runtime doesn’t support it. Rudy De Busscher
  • 21. Core Profile tester • Am I using CDI full classes? Rudy De Busscher
  • 22. JAX-RS new features • Support for multipart media type • Automatic loading of Provider extensions • Better alignment with JSON-B • Java SE Bootstrap API Rudy De Busscher
  • 23. Java SE Bootstrap API • Run JAX-RS implementation directly on Java SE • No need for WAR deployment • Also CDI can be started with pure SE • Since CDI 2.0 / Java EE 8 Rudy De Busscher
  • 25. Demo
  • 26. Modular • Part of goal of Core Profile • Make runtime as small as possible • Load only what is really needed • Helps in faster startup* Rudy De Busscher * Other techniques like CDS more efficient
  • 27. WildFly - Galleon • Galleon : Provisioning tool designed to create and maintain software distributions • Define modules that are loaded/started • Binaries include always everything • ./galleon.sh install wildfly/final#27.0.0.Final -- layers=jaxrs,cdi,jsonb,jsonp --dir=<target> • Adds also Undertow (Servlet), Bean Validation, SmallRye Config (MP Config) Rudy De Busscher
  • 28. OpenLiberty • OSGI based • Most modular Jakarta runtime • Defines features in server.xml • (Jakarta EE 10 = Beta = not modular yet) Rudy De Busscher
  • 29. Other runtimes • Besides the certified runtimes • Not certified ones (yet) • In progress • Might create a Core Profile version Rudy De Busscher
  • 30. Helidon • Helidon MP • MicroProfile specs ~ Core profile • JDK 17+ • Native compilation available • Modular • Core artifact • Status • 3.0.x -> Jakarta EE 9.1 Rudy De Busscher
  • 31. Quarkus • Quarkus 3.0 development started • Support for Jakarta namespace • JDK 11+ • Native compilation available • Modular Rudy De Busscher
  • 32. Micronaut • Micronaut 3.x • javax namespace • Not all specs supported • JDK 11+ • Native compilation available • Modular Rudy De Busscher
  • 33. Piranha Cloud • Version 22.0.9 + • Core Profile runtime • JDK 17+ • No Native compilation available by default • Single artefact • Servlet (partial), EL Expression, Bean Validation • But is small Rudy De Busscher
  • 34. Atbash Runtime • 1.0.0.alpha • Core Profile runtime • JDK 11+ • No Native compilation available by default • Modular Rudy De Busscher
  • 35. Atbash Runtime • As runtime • java -jar atbash_runtime.jar <path/to/app.war> • Server mode - Remote deployment • As Runner • public static void main • Using same core and modules (service loader) • Extensions for MicroProfile Config, JWT Auth, … Rudy De Busscher
  • 36. Core Profile - Conclusion • Typical for todays REST based applications • Should by small, modular and support native compilation • Easy to create your runtime • Near future 5 - 10 supporting products • Challenges • Missing critical elements (Config, Security, Data access) • Potential CDI Lite pitfalls Rudy De Busscher
  • 37. Code Repository • https://github.com/atbashEE/core-profile-demo • Core profile tester source code • BCE @Enhancement example • BCE @Synthesis example • Running Jakarta Core application on Java SE • Example with OpenLiberty Rudy De Busscher
  • 38. Q & A Rudy De Busscher
  • 39. Thank you •Atbash • Blog • https://www.atbash.be • Github • https://github.com/atbashEE Rudy De Busscher