https://github.com/ddobrin/native-spring-on-k8s-with-graalvm-workshop
Workshop materials for Spring Native workshop
https://github.com/ddobrin/native-spring-on-k8s-with-graalvm-workshop
Last synced: 9 months ago
JSON representation
Workshop materials for Spring Native workshop
- Host: GitHub
- URL: https://github.com/ddobrin/native-spring-on-k8s-with-graalvm-workshop
- Owner: ddobrin
- License: apache-2.0
- Created: 2021-04-16T18:03:18.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2021-08-10T14:35:18.000Z (almost 5 years ago)
- Last Synced: 2025-10-08T12:50:44.508Z (9 months ago)
- Language: Java
- Size: 82.7 MB
- Stars: 9
- Watchers: 5
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# native-spring-on-k8s-with-graalvm-workshop
This repo contains all the materials required for the `Native Spring on K8s with GraalVM` workshop.
The workshop is designed to help Spring Boot developers build new/modernize existing applications using Spring Native and deploy them to Kubernetes.
Basic knowledge of Spring Boot and Kubernetes is assumed for successful completion.
---
## Context
This content contains sample code supporting the workshop agenda, with a focus on building Native Applications using Spring Native and GraalVM.
The content is organized around a number of independent sections, each with a `README.md` file explaining how to build and run the samples,
or pointing out areas of interest, for further exploration.
The content is geared around the following main areas:
* [Prerequisite Software Setup and Validation](setup/README.md)
* Understanding [GraalVM](graalvm/README.md)
* Building [Spring Native](spring-native/README.md) Applications with GraalVM
* [Best Practices](best-practices/README.md) for designing native-friendly Spring apps and libraries
* [Complete](complete/README.md) Spring Native examples
----
## Repository
This workshop repository can be cloned to your machine as follows:
```shell
> git clone https://github.com/ddobrin/native-spring-on-k8s-with-graalvm
```
Full samples are provided for each lab or demo!
All samples are relative to the repository root, for ex.:
```shell
# Petclinic
/complete/petclinic-jdbc
```
---------
## Environment setup and validation
**Please start** by cloning the repo, then **follow** the [environment setup and validation section](setup/README.md) `prior` to the start of the workshop.
---------
## Workshop - Detailed Agenda
1. Introductions
2. [Setup Validation](setup/README.md) - say "Hello Workshop"
* **[Hands-on Setup Lab](setup/README.md#Build-Run-App)**
3. Let's get started - How fast are your pets? Let's build some images for them !
* **[Hands-on Lab #1](complete/petclinic-jdbc/README.md)**
4. Demystifying Native Images
* Let's talk about JVM vs Native
* Introducing ahead-of-time compilation (AOT)
* Making close-world assumptions
* When to modernize apps with native images ? Let's see the use-cases
5. [Understanding GraalVM](graalvm/README.md)
* GraalVM Architecture
* Native Image technology for ahead-of-time compilation
* Build configuration for a native image build process
* How to configure Native Image Builds using the Java Agent -- **[Demo](graalvm/README.md#Demo)**
* Initialization
* Runtime vs Build-Time Initialization
* Understanding the Class Initialization strategy for Native Images
* **[Hands-on Lab #2](graalvm/README.md#Lab)**
* AOT compilation limitations - what do I need to know ?
* Dynamic Class Loading, Reflection, Dynamic Proxies, Accessing Resources, Serialization
* Mitigating AOT limitations -- **[Demo(s)](graalvm/README.md#Demo)**
* Building and Containerizing native images with the GraalVM Maven plugin and Docker -- **[Demo](graalvm/README.md#maven-and-docker)**
* Visualization Tools
* GraalVM Dashboard -- **[Demo](graalvm/README.md#graalvm-dashboard)**
6. [Building Spring Native Applications](spring-native/README.md) with GraalVM
* What is Spring Native and why use it ?
* AOT compilation limitations - how do Native Hints in Spring help bypass them ? -- **[Demo(s)](spring-native/README.md#Demo)**
* Accessing Resources in Spring Native Images
* **[Hands-on Lab #3](spring-native/README.md#Lab)**
* Spring Native's limitations - what do I need to know ?
* Building with the Spring AOT Maven plugin
* Cloud Native Buildpacks -support source-to-image for native images
* Building, containerizing and running a Spring Native app and **_diving_** into the built image
* **[Optional Hands-on Lab #4](spring-native/README.md#Lab)**
* Using a container-based Spring Native build environment
* Troubleshooting tips
7. [Best Practices](best-practices/README.md) for designing native-friendly Spring apps and libraries
* Identification of AOT limitations in the app - **[Demo](best-practices/README.md)**
* Building a Spring Native Shared Library - **[Demo](best-practices/README.md)**
* Comparing Images
8. Spring Native Roadmap
#### Appendix:
* [Complete Spring Native examples](complete/README.md)