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
2gedoplan.deSchnell, schneller, Quarkus!
3. Quarkus
Red Hats Antwort auf Spring Boot
Designierter Nachfolger von Thorntail (aka WildFly Swarm)
Optimiert für kurze Startzeiten
Hotspot und GraalVM
https://quarkus.io/
3gedoplan.deSchnell, schneller, Quarkus!
4. Microprofile Runtimes: Klassische Application Server
4
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.deSchnell, schneller, Quarkus!
9. Quarkus
Development mode
Hot reload
bei REST/Web-Request
falls Quellcodeänderung
9
Listening for transport dt_socket at address: 5005
__ ____ __ _____ ___ __ ____ ______
--/ __ / / / / _ | / _ / //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /
--________/_/ |_/_/|_/_/|_|____/___/
07:13:51,653 INFO [io.quarkus] (Quarkus Main Thread) ssq-quarkus 1.0-SNAPSHOT on
07:13:51,658 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live
07:13:51,666 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [agroal,
gedoplan.deSchnell, schneller, Quarkus!
Demo
10. Test Support
Unterstützung für
JUnit 4 / 5
RestAssured
@QuarkusTest
Test Runner / Extension
Test Profile
u. a. anderer HTTP-Port
Injektion
Alternatives
10
@QuarkusTest
public class PersonEndpointTest {
@Test
void testGetCount() {
given()
.when().get("/person/count")
.then()
.statusCode(200)
.body(is("2"));
gedoplan.deSchnell, schneller, Quarkus!
Demo
11. MicroProfile Metrics
REST Endpoints zur Lieferung von Messdaten
/metrics/{application|base|vendor}/name
Formate: OpenMetrics (Prometheus), JSON
erweiterbar um eigene Messwerte
11
@Counted(name = "personGet", absolute = true)
public List<Person> get() {
@Timed(name = "personPost", absolute = true)
public Response post(Person person, …) {
@Gauge(name = "answerToLifeUniverseAndEverything", absolute = true,
unit = MetricUnits.NONE)
public long getAnswerToLifeUniverseAndEverything() {
return 42;
{
"personPost" : {
"count": 5,
"min": 1670500.0,
"mean": 8909118.276749168,
"max": 3.73522E7,
…
}
gedoplan.deSchnell, schneller, Quarkus!
Demo
12. Docker
Dockerfile beim Bootstrap bereits erzeugt
Schnell, schneller, Quarkus! 12gedoplan.de
mvn package
docker build -f src/main/docker/Dockerfile.fast-jar
-t gedoplan-showcase/ssq-quarkus-jvm
.
docker run
-d --rm -p 8080:8080
--name ssq-quarkus-jvm
gedoplan-showcase/ssq-quarkus-jvm
Demo