Spring: your next Java
micro-framework
Safe Harbor Statement
The following is intended to outline the general direction of VMware's offerings. It is intended for information
purposes only and may not be incorporated into any contract. Any information regarding pre-release of
VMware offerings, future updates or other planned modifications is subject to ongoing evaluation by
VMware and is subject to change. This information is provided without warranty or any kind, express or
implied, and is not a commitment to deliver any material, code, or functionality, and should not be relied
upon in making purchasing decisions regarding VMware's offerings. These purchasing decisions should only
be based on features currently available. The development, release, and timing of any features or
functionality described for VMware's offerings in this presentation remain at the sole discretion of Pivotal.
Pivotal has no obligation to update forward looking information in this presentation.
2
What do I mean by "a micro-framework"?
[...] Typically, a microframework facilitates receiving an HTTP request, routing
the HTTP request to the appropriate controller, dispatching the controller,
and returning an HTTP response. Microframeworks are often specifically
designed for building the APIs for another service or application.
❏ Runtime efficiency
❏ Ease of local development
❏ Code simplicity
❏ Container friendliness
Spring Boot
Runtime efficiency - sub-second startup time, minimal memory footprint on top of
JVM. AOT compilation into a static binary using GraalVM - work in progress.
Local development - Live reload with Spring Boot DevTools.
Code simplicity - plenty of features to simplify your code.
Container friendly - building Docker images with Cloud Native Buildpacks, K8S
support.
1.
Runtime efficiency
Spring Boot 2.3+ app can start just under 1 second
Starting JVM and initializing your app takes time
Competing in lowest possible -Xmx is pointless
Some quick wins
✓ Lazy beans initialization
✓ Lazy repository initialization
✓ Exploded JARs
✓ Reactive stack
✓ Different JVMs (e.g. GraalVM)
Code simplicity
Code simplicity
✓ Component scanning → Functional beans
✓ Route mapping → Functional routing
✓ Generated queries → @Query or explore alternatives to JPA
"Whole app in the main method" is perfectly doable with Spring Boot
Local development
Spring Boot DevTools
✓ Restarting your app automatically when classpath changes
✓ Super-fast (tenths of a second)
✓ LiveReload
✓ Also supports remote development - restarting the app running in a container
Container friendliness
✓ Building Docker images out-of-the box
✓ Support of Cloud Native Buildpacks
✓ Support of Kubernetes - liveness, readiness, and graceful shutdown
$ mvn :spring-boot:build-image
$ gradle bootBuildImage
Spring Boot
✓ Efficient
✓ Supports interactive development
✓ Flexible in Simple / Easy balance
✓ Container and K8S friendly
@alek_sys
Introduction to WebMvc.fn
Spring Boot Revisited with KoFu and JaFu
The Path Towards Spring Boot-Native Applications
#springone@s1p
Stay Connected.

Spring: Your Next Java Micro-Framework

  • 1.
    Spring: your nextJava micro-framework
  • 2.
    Safe Harbor Statement Thefollowing is intended to outline the general direction of VMware's offerings. It is intended for information purposes only and may not be incorporated into any contract. Any information regarding pre-release of VMware offerings, future updates or other planned modifications is subject to ongoing evaluation by VMware and is subject to change. This information is provided without warranty or any kind, express or implied, and is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions regarding VMware's offerings. These purchasing decisions should only be based on features currently available. The development, release, and timing of any features or functionality described for VMware's offerings in this presentation remain at the sole discretion of Pivotal. Pivotal has no obligation to update forward looking information in this presentation. 2
  • 3.
    What do Imean by "a micro-framework"? [...] Typically, a microframework facilitates receiving an HTTP request, routing the HTTP request to the appropriate controller, dispatching the controller, and returning an HTTP response. Microframeworks are often specifically designed for building the APIs for another service or application. ❏ Runtime efficiency ❏ Ease of local development ❏ Code simplicity ❏ Container friendliness
  • 4.
    Spring Boot Runtime efficiency- sub-second startup time, minimal memory footprint on top of JVM. AOT compilation into a static binary using GraalVM - work in progress. Local development - Live reload with Spring Boot DevTools. Code simplicity - plenty of features to simplify your code. Container friendly - building Docker images with Cloud Native Buildpacks, K8S support. 1.
  • 5.
    Runtime efficiency Spring Boot2.3+ app can start just under 1 second Starting JVM and initializing your app takes time Competing in lowest possible -Xmx is pointless Some quick wins ✓ Lazy beans initialization ✓ Lazy repository initialization ✓ Exploded JARs ✓ Reactive stack ✓ Different JVMs (e.g. GraalVM)
  • 6.
  • 7.
    Code simplicity ✓ Componentscanning → Functional beans ✓ Route mapping → Functional routing ✓ Generated queries → @Query or explore alternatives to JPA "Whole app in the main method" is perfectly doable with Spring Boot
  • 8.
    Local development Spring BootDevTools ✓ Restarting your app automatically when classpath changes ✓ Super-fast (tenths of a second) ✓ LiveReload ✓ Also supports remote development - restarting the app running in a container
  • 9.
    Container friendliness ✓ BuildingDocker images out-of-the box ✓ Support of Cloud Native Buildpacks ✓ Support of Kubernetes - liveness, readiness, and graceful shutdown $ mvn :spring-boot:build-image $ gradle bootBuildImage
  • 10.
    Spring Boot ✓ Efficient ✓Supports interactive development ✓ Flexible in Simple / Easy balance ✓ Container and K8S friendly
  • 11.
    @alek_sys Introduction to WebMvc.fn SpringBoot Revisited with KoFu and JaFu The Path Towards Spring Boot-Native Applications #springone@s1p Stay Connected.