JAX-RS 3.0 - The Next Generation

JAX-RS 3.0 - The Next Generation

Slides of my talk "JAX-RS 3.0 - The Next Generation" at Java Forum Stuttgart 2019.

013a3a74142a4d2995ac69b07fc26e4c?s=128

Markus KARG

July 04, 2019
Tweet

Transcript

  1. JAX-RS 3.0 The Next Generation Markus KARG markus@headcrashing.eu

  2. About Me

  3. Application Servers: Old-School Scaling AS-spec. Cluster Controller AS-spec. Node 1

    AS-spec. Node 2 AS-spec. Node … AS-spec. Node n JAX-RS Application JAX-RS Application JAX-RS Container Java EE Application Server Java Runtime Operating System Bare Metal Clustered Application Server Nodes e. g. GlassFish including Jersey AS-specific Cluster
  4. Cloud Computing: The Modern Approach Kub.’tes Cluster Controller Kub.’tes Node

    1 Kub.’tes Node 2 Kub.’tes Node … Kub.’tes Node n JAX-RS Application JAX-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 Application JAX-RS Application JAX-RS Container Java Runtime Docker Container Docker Container Docker Container Docker Container Docker Container Docker Container Docker Container
  5. Cloud Computing JAX-RS + Netty + Docker + … =

    Cloud Native Java
  6. RESTful Devices 5 x 2,5 cm 1 Core @ 1

    GHz 256 MB RAM 100 Mb/s LAN $ 10 Try to start GlassFish...
  7. Effects upon JAX-RS JAX-RS Application JAX-RS Application JAX-RS Container Java

    Runtime Container Runtime Container Orchestration Operating System Bare Metal JAX-RS Application JAX-RS Application JAX-RS Container Java Runtime should start and stop instantly should consume less resources must provide http server must read external config must accept application-provided resources
  8. R.I.P WORA Java SE 11: JAXB → <dependency> JAX-RS 2.2:

    javax.ws.rs → jakarta.ws.rs JAX-RS 3.0: @Context → @Inject WARNING!
  9. 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
  10. 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
  11. JAX-RS 2.2: Java SE Bootstrap API instant on/off – boot

    in one second low resource – run on limited devices includes http server – choose by actual need reads external config – from app, controller or orchestrator optional support for Microprofile Config API – cloud standards
  12. Bleeding Edge Cookbook Java SE 8, Maven 3.6.1 maven-shade-plugin: master

    jax-rs 2.2: d5f18229e3d57ffb8960ca2b19b51893c946be0a jersey: JAXRS_2_2 WARNING!
  13. JAX-RS 2.2: Java SE Bootstrap API (live coding)

  14. LGTY? Platform (1 CPU Core) Jersey + Netty JAX-RS 2.2

    Microprofile JAX-RS 2.1 Java EE Server JAX-RS 2.1 Boot Time ~ 2.5s (~ 10s) (~ 60s) JAR Size 6 MB 70 MB 142 MB Java -Xmx 6 MB (?) (?) Java -Xms 1 MB (?) (?) Docker -m < 32 MB (?) (?)
  15. Questions? Markus KARG (JUG Goldstadt) JAX-RS Committer http://www.headcrashing.eu markus@headcrashing.eu https://github.com/eclipse-ee4j/jaxrs-api