SlideShare ist ein Scribd-Unternehmen logo
Der Application Server ist tot (?)
Es lebe Jakarta EE!
GEDOPLAN GmbH
Dirk Weil
Dirk Weil
GEDOPLAN GmbH, Bielefeld
GEDOPLAN IT Consulting
Softwareentwicklung, Beratung, Konzepte, Reviews
GEDOPLAN IT Training
Java, JEE, Tools u.v.a.m. in Berlin, Bielefeld, on-site
JEE seit 1998
Speaker und Autor
2
gedoplan.de
Der Application Server ist tot - es lebe Jakarta EE
Enterprise-Anwendungen
Programmiermodell
Deklarativ (~Annotationen)
Dependency Injection
Standardisierte
Implementierung
der Subsysteme
Laufzeitmodell
Klassische Application Server
Micro Framework
Der Application Server ist tot - es lebe Jakarta EE 3
gedoplan.de
@ApplicationScoped
@Path("planet")
public class PlanetEndpoint {
@Inject
PlanetRepository planetRepository;
@GET
@Produces("application/json")
public List<Planet> getAll() {
return planetRepository.findAll();
Enterprise-Anwendungen
Der Application Server ist tot - es lebe Jakarta EE 4
gedoplan.de
Java EE / Jakarta EE
=
Application Server
=
"schwergewichtig"
Der schwergewichtige (?) Application Server
5
Anwendungsklassen
Konfigurationsfiles
(Deployment Descriptors,
Properties, …)
JEE Server
CDI Runtime
JPA Runtime
REST Runtime
Technische Konfiguration *
JRE
build deploy
run
* DB-Verbindungen,
Messaging
Security
…
Thin WAR
klein
groß
gedoplan.de
Der Application Server ist tot - es lebe Jakarta EE
Die leichtgewichtige (?) Alternative: „Micro“ Framework
6
Anwendungsklassen
Konfigurationsfiles *
CDI Runtime
JPA Runtime
REST Runtime
JRE
build
run
* Anwendungsparameter,
DB-Verbindungen,
Messaging
Security
…
Fat JAR
JAR + Dependencies
groß
gedoplan.de
Der Application Server ist tot - es lebe Jakarta EE
12 Factor App
Der Application Server ist tot - es lebe Jakarta EE 7
gedoplan.de
https://12factor.net/
Code- und Build-Organisation
Betriebs-Umgebung
II. Dependencies
Keine implizite Abhängigkeit
Der Application Server ist tot - es lebe Jakarta EE 8
gedoplan.de
WAR deploy
 abhängig von Server-Installation
java -jar wildfly-bootable.jar --deployments=WAR
 Server-Abhängigkeit in Build-Plugin
Quarkus-Anwendung  nur normale Dependencies
Demo
III. Config
Konfiguration mit Environment-Variablen
MicroProfile Config
JEE-Deployment-Descriptoren / Server-Konfiguration
Der Application Server ist tot - es lebe Jakarta EE 9
gedoplan.de
@Inject
@ConfigProperty(name = "answer")
int answer;
answer=42 export ANSWER=4711
microprofile-config.properties Environment

<persistence-unit name="…">
<jta-data-source>java:/jdbc/${env.DATASOURCE}</jta-data-source>
Demo
 nur proprietär  Jakarta Config
IV. Backing Services
Unterstützende Dienste (DB, Message Broker, …)
per URL anbinden
Der Application Server ist tot - es lebe Jakarta EE 10
gedoplan.de
<subsystem xmlns="urn:jboss:domain:datasources:6.0">
<datasources>
<datasource jndi-name="java:/jdbc/showcase" pool-name="showcase">
<connection-url>jdbc:h2:~/h2/showcase;AUTO_SERVER=TRUE</connection-url>
quarkus.datasource.db-kind=h2
quarkus.datasource.jdbc.url=jdbc:h2:~/h2/showcase;AUTO_SERVER=TRUE
VI. Processes
Anwendungen als zustandslose Prozesse betreiben
Zustandsbehaftete Dienste vermeiden
Der Application Server ist tot - es lebe Jakarta EE 11
gedoplan.de
JSF
HttpSession …=…
@SessionScoped
@ApplicationScoped
REST

VII. Port Binding
Anwendung
bietet Dienste über Ports an 
ist self-contained
Der Application Server ist tot - es lebe Jakarta EE 12
gedoplan.de
Klassisches JEE-Deployment
 wenn nur eine Anwendung pro Server
Cmdline Deployment (z. B. WildFly bootable JAR)

Micro Framework (z. B. Quarkus)

VIII. Concurrency
Horizontale Skalierung  parallele, isolierte Prozesse
Schnelle Skalierung nach unten und oben
Der Application Server ist tot - es lebe Jakarta EE 13
gedoplan.de
Klassisches JEE-Deployment
 nur parallele Deployments
Cmdline Deployment (z. B. WildFly bootable JAR)
Micro Framework (z. B. Quarkus)

 Server-Overhead
, IX. Disposability
X. Dev/prod parity
Möglichst ähnliche Stages (Dev, Test, Prod)
Der Application Server ist tot - es lebe Jakarta EE 14
gedoplan.de
Klassisches JEE-Deployment
 Server muss separat konfiguriert werden
Cmdline Deployment (z. B. WildFly bootable JAR)
Micro Framework (z. B. Quarkus)


12 Factor App - Fazit
Der Application Server ist tot - es lebe Jakarta EE 15
gedoplan.de
JEE
DEPLOYMENT
CMDLINE
DEPLOYMENT
MICRO
FRAMEWORK
























Cloud readiness: Health checking
Der Application Server ist tot - es lebe Jakarta EE 16
gedoplan.de
@Readiness
@ApplicationScoped
public class ReadinessCheck implements HealthCheck {
@Override
public HealthCheckResponse call() {
return HealthCheckResponse
.named("SimulatedReadiness")
.status(…)
.build();
$ curl localhost:8080/health/ready
{
"status": "DOWN",
"checks": [
{
"name": "SimulatedReadiness",
"status": "DOWN",
}
]
}
Cloud readiness: Monitoring
Der Application Server ist tot - es lebe Jakarta EE 17
gedoplan.de
@GET
@SimplyTimed
public String getHello() {
$ curl localhost:8080/metrics/application -H 'accept: application/json'
{
"de.gedoplan.showcase.metrics.TimedEndpoint.getHello": {
"count": 3,
"elapsedTime": 4.748263E+8,
}
}
Der Application Server ist tot …
Der Application Server ist tot - es lebe Jakarta EE 18
gedoplan.de
JEE
DEPLOYMENT
CMDLINE
DEPLOYMENT
MICRO
FRAMEWORK









12 FACTORS
HEALTH CHECKING
MONITORING
…
… es lebe
Jakarta EE
(+MicroProfile)
!
More
github.com/GEDOPLAN/microprofile-demo
Demo-Projekt
gedoplan.de
Trainings in Berlin, Bielefeld, inhouse
Jakarta EE Intensivkurs
Microservices mit Quarkus – kompakt
Workshop: Migration von JEE-Anwendungen
zu Quarkus-(Micro-)Services
gedoplan.de
Reviews, Coaching, …
Blog
 dirk.weil@gedoplan.de
@dirkweil
19
gedoplan.de
Der Application Server ist tot - es lebe Jakarta EE

Weitere ähnliche Inhalte

Ähnlich wie Der Application Server ist tot (?) - es lebe Jakarta EE!

Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
gedoplan
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballast
gedoplan
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballast
gedoplan
 
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemachtJava EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
gedoplan
 
Von J2EE zu Jakarta EE und MicroProfile - Stand der Standards und Ausblick au...
Von J2EE zu Jakarta EE und MicroProfile - Stand der Standards und Ausblick au...Von J2EE zu Jakarta EE und MicroProfile - Stand der Standards und Ausblick au...
Von J2EE zu Jakarta EE und MicroProfile - Stand der Standards und Ausblick au...
gedoplan
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
gedoplan
 
Was ist neu in Java 6, 7, 8, ...
Was ist neu in Java 6, 7, 8, ...Was ist neu in Java 6, 7, 8, ...
Was ist neu in Java 6, 7, 8, ...
Andreas Schreiber
 
Java FX8 JumpStart - JUG ch - zürich
Java FX8   JumpStart - JUG ch - zürichJava FX8   JumpStart - JUG ch - zürich
Java FX8 JumpStart - JUG ch - zürich
Sven Ruppert
 
MicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit QuarkusMicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit Quarkus
gedoplan
 
Java EE 5
Java EE 5Java EE 5
Java EE 5
GFU Cyrus AG
 
Die Java Plattform Strategie
Die Java Plattform StrategieDie Java Plattform Strategie
Die Java Plattform Strategie
Java Usergroup Berlin-Brandenburg
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael Greifeneder
Christoph Pickl
 
Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework?
Michael Plöd
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit Sodium
Torsten Fink
 
Rapid Deploy von OS, Virtualsierung und Applikation
Rapid Deploy von OS, Virtualsierung und ApplikationRapid Deploy von OS, Virtualsierung und Applikation
Rapid Deploy von OS, Virtualsierung und Applikation
JomaSoft
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Torsten Kleiber
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
smancke
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
Ulrich Gerkmann-Bartels
 
Rapid Deployment mit JomaSoft VDCF
Rapid Deployment mit JomaSoft VDCFRapid Deployment mit JomaSoft VDCF
Rapid Deployment mit JomaSoft VDCF
JomaSoft
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Wolfgang Weigend
 

Ähnlich wie Der Application Server ist tot (?) - es lebe Jakarta EE! (20)

Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballast
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballast
 
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemachtJava EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
 
Von J2EE zu Jakarta EE und MicroProfile - Stand der Standards und Ausblick au...
Von J2EE zu Jakarta EE und MicroProfile - Stand der Standards und Ausblick au...Von J2EE zu Jakarta EE und MicroProfile - Stand der Standards und Ausblick au...
Von J2EE zu Jakarta EE und MicroProfile - Stand der Standards und Ausblick au...
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
 
Was ist neu in Java 6, 7, 8, ...
Was ist neu in Java 6, 7, 8, ...Was ist neu in Java 6, 7, 8, ...
Was ist neu in Java 6, 7, 8, ...
 
Java FX8 JumpStart - JUG ch - zürich
Java FX8   JumpStart - JUG ch - zürichJava FX8   JumpStart - JUG ch - zürich
Java FX8 JumpStart - JUG ch - zürich
 
MicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit QuarkusMicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit Quarkus
 
Java EE 5
Java EE 5Java EE 5
Java EE 5
 
Die Java Plattform Strategie
Die Java Plattform StrategieDie Java Plattform Strategie
Die Java Plattform Strategie
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael Greifeneder
 
Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework?
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit Sodium
 
Rapid Deploy von OS, Virtualsierung und Applikation
Rapid Deploy von OS, Virtualsierung und ApplikationRapid Deploy von OS, Virtualsierung und Applikation
Rapid Deploy von OS, Virtualsierung und Applikation
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
Rapid Deployment mit JomaSoft VDCF
Rapid Deployment mit JomaSoft VDCFRapid Deployment mit JomaSoft VDCF
Rapid Deployment mit JomaSoft VDCF
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
 

Der Application Server ist tot (?) - es lebe Jakarta EE!

  • 1. Der Application Server ist tot (?) Es lebe Jakarta EE! GEDOPLAN GmbH Dirk Weil
  • 2. Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Softwareentwicklung, Beratung, Konzepte, Reviews GEDOPLAN IT Training Java, JEE, Tools u.v.a.m. in Berlin, Bielefeld, on-site JEE seit 1998 Speaker und Autor 2 gedoplan.de Der Application Server ist tot - es lebe Jakarta EE
  • 3. Enterprise-Anwendungen Programmiermodell Deklarativ (~Annotationen) Dependency Injection Standardisierte Implementierung der Subsysteme Laufzeitmodell Klassische Application Server Micro Framework Der Application Server ist tot - es lebe Jakarta EE 3 gedoplan.de @ApplicationScoped @Path("planet") public class PlanetEndpoint { @Inject PlanetRepository planetRepository; @GET @Produces("application/json") public List<Planet> getAll() { return planetRepository.findAll();
  • 4. Enterprise-Anwendungen Der Application Server ist tot - es lebe Jakarta EE 4 gedoplan.de Java EE / Jakarta EE = Application Server = "schwergewichtig"
  • 5. Der schwergewichtige (?) Application Server 5 Anwendungsklassen Konfigurationsfiles (Deployment Descriptors, Properties, …) JEE Server CDI Runtime JPA Runtime REST Runtime Technische Konfiguration * JRE build deploy run * DB-Verbindungen, Messaging Security … Thin WAR klein groß gedoplan.de Der Application Server ist tot - es lebe Jakarta EE
  • 6. Die leichtgewichtige (?) Alternative: „Micro“ Framework 6 Anwendungsklassen Konfigurationsfiles * CDI Runtime JPA Runtime REST Runtime JRE build run * Anwendungsparameter, DB-Verbindungen, Messaging Security … Fat JAR JAR + Dependencies groß gedoplan.de Der Application Server ist tot - es lebe Jakarta EE
  • 7. 12 Factor App Der Application Server ist tot - es lebe Jakarta EE 7 gedoplan.de https://12factor.net/ Code- und Build-Organisation Betriebs-Umgebung
  • 8. II. Dependencies Keine implizite Abhängigkeit Der Application Server ist tot - es lebe Jakarta EE 8 gedoplan.de WAR deploy  abhängig von Server-Installation java -jar wildfly-bootable.jar --deployments=WAR  Server-Abhängigkeit in Build-Plugin Quarkus-Anwendung  nur normale Dependencies Demo
  • 9. III. Config Konfiguration mit Environment-Variablen MicroProfile Config JEE-Deployment-Descriptoren / Server-Konfiguration Der Application Server ist tot - es lebe Jakarta EE 9 gedoplan.de @Inject @ConfigProperty(name = "answer") int answer; answer=42 export ANSWER=4711 microprofile-config.properties Environment  <persistence-unit name="…"> <jta-data-source>java:/jdbc/${env.DATASOURCE}</jta-data-source> Demo  nur proprietär  Jakarta Config
  • 10. IV. Backing Services Unterstützende Dienste (DB, Message Broker, …) per URL anbinden Der Application Server ist tot - es lebe Jakarta EE 10 gedoplan.de <subsystem xmlns="urn:jboss:domain:datasources:6.0"> <datasources> <datasource jndi-name="java:/jdbc/showcase" pool-name="showcase"> <connection-url>jdbc:h2:~/h2/showcase;AUTO_SERVER=TRUE</connection-url> quarkus.datasource.db-kind=h2 quarkus.datasource.jdbc.url=jdbc:h2:~/h2/showcase;AUTO_SERVER=TRUE
  • 11. VI. Processes Anwendungen als zustandslose Prozesse betreiben Zustandsbehaftete Dienste vermeiden Der Application Server ist tot - es lebe Jakarta EE 11 gedoplan.de JSF HttpSession …=… @SessionScoped @ApplicationScoped REST 
  • 12. VII. Port Binding Anwendung bietet Dienste über Ports an  ist self-contained Der Application Server ist tot - es lebe Jakarta EE 12 gedoplan.de Klassisches JEE-Deployment  wenn nur eine Anwendung pro Server Cmdline Deployment (z. B. WildFly bootable JAR)  Micro Framework (z. B. Quarkus) 
  • 13. VIII. Concurrency Horizontale Skalierung  parallele, isolierte Prozesse Schnelle Skalierung nach unten und oben Der Application Server ist tot - es lebe Jakarta EE 13 gedoplan.de Klassisches JEE-Deployment  nur parallele Deployments Cmdline Deployment (z. B. WildFly bootable JAR) Micro Framework (z. B. Quarkus)   Server-Overhead , IX. Disposability
  • 14. X. Dev/prod parity Möglichst ähnliche Stages (Dev, Test, Prod) Der Application Server ist tot - es lebe Jakarta EE 14 gedoplan.de Klassisches JEE-Deployment  Server muss separat konfiguriert werden Cmdline Deployment (z. B. WildFly bootable JAR) Micro Framework (z. B. Quarkus)  
  • 15. 12 Factor App - Fazit Der Application Server ist tot - es lebe Jakarta EE 15 gedoplan.de JEE DEPLOYMENT CMDLINE DEPLOYMENT MICRO FRAMEWORK                        
  • 16. Cloud readiness: Health checking Der Application Server ist tot - es lebe Jakarta EE 16 gedoplan.de @Readiness @ApplicationScoped public class ReadinessCheck implements HealthCheck { @Override public HealthCheckResponse call() { return HealthCheckResponse .named("SimulatedReadiness") .status(…) .build(); $ curl localhost:8080/health/ready { "status": "DOWN", "checks": [ { "name": "SimulatedReadiness", "status": "DOWN", } ] }
  • 17. Cloud readiness: Monitoring Der Application Server ist tot - es lebe Jakarta EE 17 gedoplan.de @GET @SimplyTimed public String getHello() { $ curl localhost:8080/metrics/application -H 'accept: application/json' { "de.gedoplan.showcase.metrics.TimedEndpoint.getHello": { "count": 3, "elapsedTime": 4.748263E+8, } }
  • 18. Der Application Server ist tot … Der Application Server ist tot - es lebe Jakarta EE 18 gedoplan.de JEE DEPLOYMENT CMDLINE DEPLOYMENT MICRO FRAMEWORK          12 FACTORS HEALTH CHECKING MONITORING … … es lebe Jakarta EE (+MicroProfile) !
  • 19. More github.com/GEDOPLAN/microprofile-demo Demo-Projekt gedoplan.de Trainings in Berlin, Bielefeld, inhouse Jakarta EE Intensivkurs Microservices mit Quarkus – kompakt Workshop: Migration von JEE-Anwendungen zu Quarkus-(Micro-)Services gedoplan.de Reviews, Coaching, … Blog  dirk.weil@gedoplan.de @dirkweil 19 gedoplan.de Der Application Server ist tot - es lebe Jakarta EE