SlideShare a Scribd company logo
Just Enough App Server
by antonio goncalves
@agoncal
2@agoncal
Antonio Goncalves
Take what you need from
Java EE
and resize your App Server
4@agoncal
How do we see Java EE App Servers ?
One Monolith !
Slow
Fat
Heavyweight
Old
Not sexy
Boring
App servers are
monolithic !
6@agoncal
Java EE
7@agoncal
Web Profile
8@agoncal
Servlets
9@agoncal
Three types of Java EE App Servers
Three Monoliths !
10@agoncal
Bits & Pieces
11@agoncal
Servlets
JSP
Expression
Language
Servlets
JSTL
12@agoncal
Web Profile
JSP
Expression
Language
Servlets
JSTL
Interceptors JAX-RS
JSON-P
CDI
JPAWebSocket
JTA
Bean Validation
13@agoncal
Java EE
JSP
Expression
Language
Servlets
JSTL
Interceptors JAX-RS
JSON-P
CDI
JPAWebSocket
JTA
Bean Validation
JMSJSFJAX-WS EJB
JavaMail
JCA
Concurrency
Batch
JASPIC
14@agoncal
JVM
JSP
Expression
Language
Servlets
JSTL
Interceptors JAX-RS
JSON-P
CDI
JPAWebSocket
JTA
Bean Validation
JMSJSFJAX-WS EJB
JavaMail
JCA
Concurrency
Batch
JASPIC
JVM
15@agoncal
JVM
JTA
JMS
JSP
Interceptors JAX-RS
Expression
Language
JSF
Servlets
JSON-P
CDI
JAX-WS
JPA
Bean Validation
EJB
JavaMail
WebSocket
JSTL
JCA
Concurrency
Batch
JASPIC
JDBC JNDI Logging JAX-B JMX
Commons
Annotations
16@agoncal
Your own app
JTA
JMS
JSP
Interceptors JAX-RS
Expression
Language
JSF
Servlets
JSON-P
CDI
JAX-WS
JPA
Bean Validation
EJB
JavaMail
WebSocket
JSTL
JCA
Concurrency
Batch
JASPIC
JDBC JNDI Logging JAX-B JMX
Commons
Annotations
My code
17@agoncal
Your own app dependencies
JTA
JMS
JSP
Interceptors JAX-RS
Expression
Language
JSF
Servlets
JSON-P
CDI
JAX-WS
JPA
Bean Validation
EJB
JavaMail
WebSocket
JSTL
JCA
Concurrency
Batch
JASPIC
JDBC JNDI Logging JAX-B JMX
Commons
Annotations
My code SLF4J Angular ReactPrimefaces Bootstrap JQuery
App servers are
slow !
19@agoncal
Startup time of App Servers
20@agoncal
Startup time of JBoss
Using a Windows XP virtual machine (Virtual Box)
3.2.8 4.2.3 5.1 6.1 7 Beta
0
5
10
15
20
25
30
35
40
Startup time
Specs
App servers
consume resources !
22@agoncal
Memory consumption of App Servers
App servers use
outdated packaging !
24@agoncal
Your own app… needs packaging
JTA
JMS
JSP
Interceptors JAX-RS
Expression
Language
JSF
Servlets
JSON-P
CDI
JAX-WS
JPA
Bean Validation
EJB
JavaMail
WebSocket
JSTL
JCA
Concurrency
Batch
JASPIC
JDBC JNDI Logging JAX-B JMX
Commons
Annotations
My code SLF4J Angular ReactPrimefaces Bootstrap JQuery
25@agoncal
Skinny War
JTA
JMS
JSP
Interceptors JAX-RS
Expression
Language
JSF
Servlets
JSON-P
CDI
JAX-WS
JPA
Bean Validation
EJB
JavaMail
WebSocket
JSTL
JCA
Concurrency
Batch
JASPIC
JDBC JNDI Logging JAX-B JMX
Commons
Annotations
My code SLF4J Angular ReactPrimefaces Bootstrap JQuery
26@agoncal
My code
Fat War
JTA
JMS
JSP
Interceptors JAX-RS
Expression
Language
JSF
Servlets
JSON-P
CDI
JAX-WS
JPA
Bean Validation
EJB
JavaMail
WebSocket
JSTL
JCA
Concurrency
Batch
JASPIC
JDBC JNDI Logging JAX-B JMX
Commons
Annotations
SLF4J
Apache
Commons
Drools SLF4J Angular React
Demo
CD-BookStore
Top Books
Top CDs
https://github.com/agoncal/agoncal-sample-javaee/06-EnoughAppServer
3 apps
3 different needs !
29@agoncal
CD-Book Store
JTA
JMS
JSP
Interceptors JAX-RS
Expression
Language
JSF
Servlets
JSON-P
CDI
JAX-WS
JPA
Bean Validation
EJB
JavaMail
WebSocket
JSTL
JCA
Concurrency
Batch
JASPIC
JDBC JNDI Logging JAX-B JMX
Commons
Annotations
My code Primefaces Bootstrap JQuery
30@agoncal
Top Books
JTA
JMS
JSP
Interceptors JAX-RS
Expression
Language
JSF
Servlets
JSON-P
CDI
JAX-WS
JPA
Bean Validation
EJB
JavaMail
WebSocket
JSTL
JCA
Concurrency
Batch
JASPIC
JDBC JNDI Logging JAX-B JMX
Commons
Annotations
My code
31@agoncal
Top CDs
JTA
JMS
JSP
Interceptors JAX-RS
Expression
Language
JSF
Servlets
JSON-P
CDI
JAX-WS
JPA
Bean Validation
EJB
JavaMail
WebSocket
JSTL
JCA
Concurrency
Batch
JASPIC
JDBC JNDI Logging JAX-B JMX
Commons
Annotations
My code
What a Waste !
Let's package what we need…
...in a “uber” Jar
33@agoncal
My code
CD-Book Store
JTAInterceptors
JAX-RS
Expression
Language
JSF
Servlets
JSON-PCDI
JPA
Bean Validation
EJB
JDBC JNDI Logging JAX-B
Commons
Annotations
Primefaces Bootstrap JQuery
34@agoncal
My code
Top Books
JTAInterceptors
Expression
Language
Servlets
JSON-PCDI
JPA
Bean Validation
JDBC JNDI Logging JAX-B
Commons
Annotations
JAX-RS
35@agoncal
My code
Top CDs
Servlets
Commons
Annotations
Logging
36@agoncal
Several solutions to choose from
● Full Java EE
●
WildFly Swarm
● Payara Micro
●
TomEE
● KumuluzEE
● “Sort of” Java EE
● Spring Boot
● Other
● Dropwizard
●
Lagom
Demo
WildFly Swarm
https://github.com/agoncal/agoncal-sample-javaee/06-EnoughAppServer
And what about multiple apps ?
39@agoncal
My code
Top CDsssssssss
Servlets
Commons
Annotations
Logging
My code
Servlets
Commons
Annotations
Logging
My code
Servlets
Commons
Annotations
Logging
My code
Servlets
Commons
Annotations
Logging
My code
Servlets
Commons
Annotations
Logging
My code
Servlets
Commons
Annotations
Logging
40@agoncal
My code
Top CDsssssssss
Commons
Annotations
Logging
My code
Commons
Annotations
Logging
My code
Commons
Annotations
Logging
My code
Commons
Annotations
Logging
My code
Commons
Annotations
Logging
My code
Commons
Annotations
Logging
Servlets
Local Maven Repo
If only we had Jigsaw !
Demo
WildFly Swarm
with M2_REPO
https://github.com/agoncal/agoncal-sample-javaee/06-EnoughAppServer
Some metrics
43@agoncal
Packaging Size
44@agoncal
Startup time
And how do I manage it now ?
46@agoncal
Configure your app
public class MyMain {
public static void main(String...args) {
new Container()
.fraction(new DatasourcesFraction()
.jdbcDriver("h2", (d) -> {
d.driverClassName("org.h2.Driver");
d.driverModuleName("com.h2database.h2");
})
.dataSource("ExampleDS", (ds) -> {
ds.driverName("h2");
ds.connectionUrl("jdbc:h2:mem:test");
ds.userName("foo");
ds.password("bar");
}))
.start()
.deploy();
Demo
WildFly Swarm
with management
https://github.com/agoncal/agoncal-sample-javaee/06-EnoughAppServer
And what about Docker ?
49@agoncal
Dockerfile
FROM java:openjdk-8-jdk
EXPOSE 8081
ADD target/topcds-swarm.jar /opt/topcds-swarm.jar
ENTRYPOINT ["java", "-jar", "/opt/topcds-swarm.jar"]
Demo
Docker
https://github.com/agoncal/agoncal-sample-javaee/06-EnoughAppServer
Demo
Raspberry PI
https://github.com/agoncal/agoncal-sample-javaee/06-EnoughAppServer
Final word
53@agoncal
Wildfly Swarm
● Based on good old JBoss AS
● Bundles several fractions
● Java EE
●
Netflix OSS (Ribbon, Hystrix, RxJava)
● Spring
●
Logstash
● Swagger
●
...
54@agoncal
Java EE App Servers
● Java EE app server have changed
● Are not monolithic, slow, consume resources
● Package the way you want (skinny/fat war, uber
jar)
● Re-use your Java EE expertise
● Look Ma, « Microservices inside »
● « I’m centralised and I’m proud! »
That's it !
56@agoncal
http://amazon.com/author/agoncal
57@agoncal
https://www.pluralsight.com/authors/antonio-goncalves
Thanks
www.antoniogoncalves.org
antonio.goncalves@gmail.com
@agoncal
@pluralsight
@devoxxfr
@lescastcodeurs
Q & A
60antonio goncalves
Creative Commons
● Attribution — You must attribute the work in
the manner specified by the author or licensor
(but not in any way that suggests that they
endorse you or your use of the work).
● Noncommercial — You may not use this work for
commercial purposes.
● Share Alike — If you alter, transform, or build
upon this work, you may distribute the resulting
work only under the same or similar license to
this one.

More Related Content

PDF
KYSUC - Keep Your Schema Under Control
PDF
An Introduction to Play 2 Framework
ODP
What's new in Java EE 6
PDF
Introduction of CategoLJ2 #jjug_ccc
PPTX
Top 50 java ee 7 best practices [con5669]
PDF
Preparing your code for Java 9
PDF
Web application development using Play Framework (with Java)
PPTX
Future of Java EE with Java SE 8
KYSUC - Keep Your Schema Under Control
An Introduction to Play 2 Framework
What's new in Java EE 6
Introduction of CategoLJ2 #jjug_ccc
Top 50 java ee 7 best practices [con5669]
Preparing your code for Java 9
Web application development using Play Framework (with Java)
Future of Java EE with Java SE 8

What's hot (20)

PDF
Migration tales from java ee 5 to 7
PDF
Java(ee) mongo db applications in the cloud
PDF
The Many Ways to Test Your React App
PPTX
Node.js Development with Apache NetBeans
PPTX
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
PDF
Dependency Injection
PDF
Using Play Framework 2 in production
PPTX
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
PPTX
Preparing for java 9 modules upload
PDF
Node.js vs Play Framework (with Japanese subtitles)
PDF
Devoxx17 - Préparez-vous à la modularité selon Java 9
PDF
Whats up with wicket 8 and java 8
PDF
Wicket 10 years and beyond
PDF
Flavors of Concurrency in Java
PPTX
Angular beans
PDF
Java11 New Features
PDF
Java SE 9 modules (JPMS) - an introduction
PDF
Java fx smart code econ
PPT
Ruby On Rails Seminar Basis Softexpo Feb2010
PPT
Play framework
Migration tales from java ee 5 to 7
Java(ee) mongo db applications in the cloud
The Many Ways to Test Your React App
Node.js Development with Apache NetBeans
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
Dependency Injection
Using Play Framework 2 in production
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Preparing for java 9 modules upload
Node.js vs Play Framework (with Japanese subtitles)
Devoxx17 - Préparez-vous à la modularité selon Java 9
Whats up with wicket 8 and java 8
Wicket 10 years and beyond
Flavors of Concurrency in Java
Angular beans
Java11 New Features
Java SE 9 modules (JPMS) - an introduction
Java fx smart code econ
Ruby On Rails Seminar Basis Softexpo Feb2010
Play framework
Ad

Similar to Just enough app server (20)

PDF
Are app servers still fascinating
PDF
Java EE 6 workshop at Dallas Tech Fest 2011
PDF
Java EE 6 : Paving The Path For The Future
PDF
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
PDF
Boston 2011 OTN Developer Days - Java EE 6
PPT
Programming Server side with Sevlet
PDF
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
PPT
192563547-Servletsjhb,mnjhjhjm,nm,-Pres-ppt.ppt
PDF
Java and Java platforms
PDF
The Java EE 6 platform
PDF
Java EE 6 & GlassFish v3 @ DevNexus
PPT
Lecture 19 dynamic web - java - part 1
PDF
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
PDF
Java EE6 CodeCamp16 oct 2010
ODP
OTN Developer Days - Java EE 6
PPTX
Summer training seminar
PDF
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
PDF
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
ODP
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
PDF
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Are app servers still fascinating
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 : Paving The Path For The Future
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Boston 2011 OTN Developer Days - Java EE 6
Programming Server side with Sevlet
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
192563547-Servletsjhb,mnjhjhjm,nm,-Pres-ppt.ppt
Java and Java platforms
The Java EE 6 platform
Java EE 6 & GlassFish v3 @ DevNexus
Lecture 19 dynamic web - java - part 1
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE6 CodeCamp16 oct 2010
OTN Developer Days - Java EE 6
Summer training seminar
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Ad

More from Antonio Goncalves (6)

PPTX
When Enterprise Java Micro Profile meets Angular
PDF
CDI: How do I ?
PDF
Come and Play! with Java EE 7
PDF
50 new features of Java EE 7 in 50 minutes
PDF
Dependency Injection with CDI in 15 minutes
ODP
To inject or not to inject: CDI is the question
When Enterprise Java Micro Profile meets Angular
CDI: How do I ?
Come and Play! with Java EE 7
50 new features of Java EE 7 in 50 minutes
Dependency Injection with CDI in 15 minutes
To inject or not to inject: CDI is the question

Recently uploaded (20)

PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
assetexplorer- product-overview - presentation
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Digital Strategies for Manufacturing Companies
PDF
System and Network Administration Chapter 2
PPTX
L1 - Introduction to python Backend.pptx
PDF
iTop VPN Free 5.6.0.5262 Crack latest version 2025
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
Reimagine Home Health with the Power of Agentic AI​
Odoo Companies in India – Driving Business Transformation.pdf
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
wealthsignaloriginal-com-DS-text-... (1).pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Operating system designcfffgfgggggggvggggggggg
assetexplorer- product-overview - presentation
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Digital Strategies for Manufacturing Companies
System and Network Administration Chapter 2
L1 - Introduction to python Backend.pptx
iTop VPN Free 5.6.0.5262 Crack latest version 2025
Design an Analysis of Algorithms I-SECS-1021-03
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Odoo POS Development Services by CandidRoot Solutions
Design an Analysis of Algorithms II-SECS-1021-03
Upgrade and Innovation Strategies for SAP ERP Customers
Why Generative AI is the Future of Content, Code & Creativity?
Which alternative to Crystal Reports is best for small or large businesses.pdf

Just enough app server