SlideShare a Scribd company logo
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

More Related Content

Similar to core-profile_jakartaOne2022.pdf

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.
Dimitris Andreadis
 
Node and Azure
Node and AzureNode and Azure
Node and Azure
Jason Gerard
 
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, Inc.
 
Docker Registry V2
Docker Registry V2Docker Registry V2
Docker Registry V2
Docker, Inc.
 
Gradual Migration to MicroProfile
Gradual Migration to MicroProfileGradual Migration to MicroProfile
Gradual Migration to MicroProfile
Payara
 
Gradual migration to MicroProfile
Gradual migration to MicroProfileGradual migration to MicroProfile
Gradual migration to MicroProfile
Rudy De Busscher
 
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
 
Docker presentation for sharing
Docker presentation   for sharingDocker presentation   for sharing
Docker presentation for sharing
Waruna Viraj Perera
 
The tools & technologies behind Resin.io
The tools & technologies behind Resin.ioThe tools & technologies behind Resin.io
The tools & technologies behind Resin.io
GreeceJS
 
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
 
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
Rajesh Kolla
 
The MySQL Server ecosystem in 2016
The MySQL Server ecosystem in 2016The MySQL Server ecosystem in 2016
The MySQL Server ecosystem in 2016
Colin Charles
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
Ludovic Champenois
 
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
Rudy De Busscher
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
Ganesh Kondal
 
.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
Fatih Şimşek
 
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)
Codemotion
 
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!
SolarWinds
 

Similar to 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!
 

More from Rudy De Busscher

jakarta-integration-testing.pdf
jakarta-integration-testing.pdfjakarta-integration-testing.pdf
jakarta-integration-testing.pdf
Rudy De Busscher
 
MicroStream-WithoutDatabase.pdf
MicroStream-WithoutDatabase.pdfMicroStream-WithoutDatabase.pdf
MicroStream-WithoutDatabase.pdf
Rudy De Busscher
 
Jakarta EE 8 on JDK17
Jakarta EE 8 on JDK17Jakarta EE 8 on JDK17
Jakarta EE 8 on JDK17
Rudy De Busscher
 
Creating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaCreating a Kubernetes Operator in Java
Creating a Kubernetes Operator in Java
Rudy De Busscher
 
Finally, easy integration testing with Testcontainers
Finally, easy integration testing with TestcontainersFinally, easy integration testing with Testcontainers
Finally, easy integration testing with Testcontainers
Rudy De Busscher
 
Control and monitor_microservices_with_microprofile
Control and monitor_microservices_with_microprofileControl and monitor_microservices_with_microprofile
Control and monitor_microservices_with_microprofile
Rudy De Busscher
 
Transactions in micro-services (fall 2019)
Transactions in micro-services (fall 2019)Transactions in micro-services (fall 2019)
Transactions in micro-services (fall 2019)
Rudy De Busscher
 
Transactions in micro-services (summer 2019)
Transactions in micro-services (summer 2019)Transactions in micro-services (summer 2019)
Transactions in micro-services (summer 2019)
Rudy De Busscher
 
Monitor Micro-service with MicroProfile metrics
Monitor Micro-service with MicroProfile metricsMonitor Micro-service with MicroProfile metrics
Monitor Micro-service with MicroProfile metrics
Rudy De Busscher
 
Secure JAX-RS
Secure JAX-RSSecure JAX-RS
Secure JAX-RS
Rudy De Busscher
 
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
Rudy De Busscher
 
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
Rudy De Busscher
 
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)
Rudy De Busscher
 
Java ee 8 + security overview
Java ee 8 + security overviewJava ee 8 + security overview
Java ee 8 + security overview
Rudy De Busscher
 
Extending Arquillian graphene
Extending Arquillian graphene Extending Arquillian graphene
Extending Arquillian graphene
Rudy De Busscher
 
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
Rudy De Busscher
 

More from 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
 

Recently uploaded

How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
Yara Milbes
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Undress Baby
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 

Recently uploaded (20)

How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 

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