Top Banner
JAX-RS 3.0 The Next Generaon Markus KARG [email protected]
15

JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

May 12, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

JAX-RS 3.0

The Next Generation

Markus [email protected]

Page 2: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

About Me

Page 3: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

Application Servers: Old-School Scaling

AS-spec.Cluster

ControllerAS-spec.

Node 1AS-spec.

Node 2AS-spec.Node …

AS-spec.Node n

JAX-RS ApplicationJAX-RS Application

JAX-RS Container

Java EE Application Server

Java Runtime

Operating System

Bare Metal

Clustered Application Server Nodese. g. GlassFish including Jersey

AS-specific Cluster

Page 4: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

Cloud Computing: The Modern Approach

Kub.’tesCluster

ControllerKub.’tesNode 1

Kub.’tesNode 2

Kub.’tesNode …

Kub.’tesNode n

JAX-RS ApplicationJAX-RS Application

JAX-RS Container

Java Runtime

Docker

Kubernetes

Operating System

Bare Metal

Elastic creation and disposal of lightweight processes (e. g. Kubernetes with Docker)

Kubernetes Cluster

JAX-RS ApplicationJAX-RS Application

JAX-RS Container

Java Runtime

DockerContainer

DockerContainer

DockerContainer

DockerContainer

DockerContainer

DockerContainer

DockerContainer

Page 5: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

Cloud Computing

JAX-RS + Netty + Docker + … = Cloud Native Java

Page 6: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

RESTful Devices

5 x 2,5 cm1 Core @ 1 GHz

256 MB RAM100 Mb/s LAN

$ 10

Try to start GlassFish...

Page 7: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

Effects upon JAX-RS

JAX-RS ApplicationJAX-RS Application

JAX-RS Container

Java Runtime

Container Runtime

Container Orchestration

Operating System

Bare Metal

JAX-RS ApplicationJAX-RS Application

JAX-RS Container

Java Runtime

should start and stop instantlyshould consume less resources

must provide http servermust read external config

must accept application-provided resources

Page 8: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

R.I.PWORA

Java SE 11: JAXB → <dependency>

JAX-RS 2.2: javax.ws.rs → jakarta.ws.rs

JAX-RS 3.0: @Context → @Inject

WARNING!

Page 9: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

Roadmap

JAX-RS 2.2 [Q1/2019]: Java SE Bootstrap API

(instant on/off, low resource, includes http server, reads external config incl. optional support for Microprofile Config API)

JAX-RS 2.3 [Q2/2019]: CDI 2.0 Support – Deprecate @Context

(accept application-provided resources)

https://github.com/eclipse-ee4j/jaxrs-api/wiki/Roadmap

DELAYED

DELAYED

Page 10: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

Further Roadmap

JAX-RS 2.4 [TBD]: JPMS, Java 9

JAX-RS 3.0 [Q4/2019]: Replace @Context by @Inject

WARNING: You MUST use CDI now!

JAX-RS 3.1 [TBD]: Flow API, NIO

https://github.com/eclipse-ee4j/jaxrs-api/wiki/Roadmap

Page 11: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

JAX-RS 2.2: Java SE Bootstrap API

instant on/off – boot in one secondlow resource – run on limited devices

includes http server – choose by actual needreads external config – from app, controller or orchestrator

optional support for Microprofile Config API – cloud standards

Page 12: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

Bleeding Edge Cookbook

Java SE 8, Maven 3.6.1

maven-shade-plugin: master

jax-rs 2.1: d5f18229e3d57ffb8960ca2b19b51893c946be0a

jersey: JAXRS_2_2

WARNING!

Page 13: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

JAX-RS 2.2: Java SE Bootstrap API

(live coding)

Page 14: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

LGTY?

Platform(1 CPU Core)

Jersey + NettyJAX-RS 2.2

MicroprofileJAX-RS 2.1

Java EE Server

JAX-RS 2.1Boot Time ~ 2.5s (~ 10s) (~ 60s)

JAR Size 6 MB 70 MB 142 MBJava -Xmx 6 MB (?) (?)Java -Xms 1 MB (?) (?)Docker -m < 32 MB (?) (?)

Page 15: JAX-RS 3.0 The Next Generation - Java Forum Stuttgart · JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker

Questions?

Markus KARG (JUG Goldstadt)JAX-RS Committer

http://[email protected]

https://github.com/eclipse-ee4j/jaxrs-api