2. 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
3. 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
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 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)
7. 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
8. 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
9. 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
10. Spring Boot
✓ Efficient
✓ Supports interactive development
✓ Flexible in Simple / Easy balance
✓ Container and K8S friendly