From 63851054eba623c9015dcb9d900ae386b3fa3db4 Mon Sep 17 00:00:00 2001 From: Olya Gupalo Date: Wed, 18 Dec 2024 12:06:13 +0200 Subject: [PATCH 1/6] Revisit top-level README.md to explain the new repository structure --- README.md | 214 ++++++++++-------------------------------------------- 1 file changed, 38 insertions(+), 176 deletions(-) diff --git a/README.md b/README.md index 4ab03f20..e4b84f49 100644 --- a/README.md +++ b/README.md @@ -1,191 +1,53 @@ # GraalVM Demos -This repository contains demo applications and benchmarks written in Java, JavaScript, Python, and other languages. -These applications illustrate the diverse capabilities of [GraalVM](http://graalvm.org). +This repository contains a collection of example applications that highlight key features and best practices for working with GraalVM technologies. -The demos are sorted by a framework, by a programming language, or by a technology. -Each directory contains demo sources; the instructions on how to run a particular demo are in its _README.md_ file. -To get started, clone or download this repository, enter the demo directory, and follow steps in the _README.md_ file. +## Repository Structure +The demos are organized into categories for easier navigation -``` +### Native Image + +Demos showcasing the capabilities of GraalVM Native Image, including performance optimization and configuration tips, such as: + +- _build_: Covers building native images, including configurations and setup steps for various use cases. +- _benchmark_: Provides performance measurement demos for Native Image. +- _containerize_: Focuses on containerizing native Java applications and following best practices. +- _monitor_: Demonstrates how to monitor native applications using observability and diagnostics tools. +- _microservices_: Provides examples of building microservices ahead of time using frameworks such as Micronaut and Spring Boot. +- _optimize_: Includes Native Image optimization examples for different criteria (runtime and performance tuning, file size, build time, and more). + +### Compiler + +Demos designed to test and showcase the capabilities of the Graal Just-In-Time (JIT) compiler. +These examples focus on evaluating the compiler's performance, including its optimizations for modern Java workloads. + +### Clouds + +Demos showcasing the building and deployment of native applications to Oracle Cloud Infrastructure (OCI), AWS, and Google Cloud. + +### Archive + +Contains legacy or blog-related demos, as well as examples involving polyglot capabilities. + +## Get Started + +To get started, clone this repository and navigate to the relevant demo directory: +```bash git clone https://github.com/graalvm/graalvm-demos.git +``` +```bash cd graalvm-demos ``` -### GraalVM JDK and Native Image - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
tiny-java-containers
native-image/containerize/tiny-java-containers -
Demonstrates how to build very small Docker container images with GraalVM Native Image and various lightweight base images.
Technologies: Native Image, musl libc
Reference: Static and Mostly Static Images
native-image/hello-world
native-image/hello-world
Demonstrates how to build native executables from a class file and a JAR file from the command line
Technologies: Native Image
Reference: Native Image Getting Started
java-hello-world-maven
java-hello-world-maven
Demonstrates how to generate a native executable using the Native Build Tools Maven plugin
Technologies: Native Image, Native Build Tools Maven plugin
Reference: Oracle GraalVM in OCI Code Editor
native-image/build-java-modules
build-java-modules
Demonstrates how to build a modular Java application into a native executable
Technologies: Native Image, Maven
Reference: Build Java Modules into a Native Executable
native-image/list-files
native-image/list-files
Demonstrates how to compile a CLI application into a native executable and then apply Profile-Guided Optimizations (PGO) for more performance gains
Technologies: Native Image, PGO -
multithreading-demo
archive/multithreading-demo
Demonstrates how to optimize a Java application that does synchronous and asynchronous threads execution
Technologies: Native Image Build Reports, Native Build Tools Maven plugin
Reference: Making sense of Native Image contents
javagdbnative
archive/javagdbnative
Demonstrates how to debug a Java application, built into a native executable in VS Code
Technologies: Native Image, Maven, GraalVM Tools for Java
Reference: Native Image Debugging in VS Code
native-image/add-logging
add-logging
Demonstrates how to initialize Loggers with Native Image at the executable build or run time
Technologies: Native Image
Reference: Add Logging to a Native Executable
native-image/add-jfr
add-jfr
Demonstrates how to create a custom JDK Flight Recorder (JFR) event and use that in a native executable
Technologies: Native Image, JFR, VisualVM
Reference: Build and Run Native Executables with JFR
native-image/build-shared-library
build-shared-library
Demonstrates how to create a Java class library, use Native Image to create a native shared library, and then create a small C application that uses that shared library
Technologies: Native Image, LLVM toolchain
Reference: Build a Native Shared Library
native-image/configure-with-tracing-agent
configure-with-tracing-agent
Demonstrates how to provide metadata for Native Image in the form of JSON configuration files using a tracing agent
Technologies: Native Image
native-image/build-static-images
build-static-images
Demonstrates how to build a fully static and a mostly-static native executable.
Technologies: Native Image
Reference: Build a Statically Linked or Mostly-Statically Linked Native Executable
native-image/create-heap-dumps
native-image/create-heap-dumps
Demonstrates different ways to generate a heap dump from a running native executable.
Technologies: Native Image, VisualVM
Reference: Create a Heap Dump from a Native Executable
native-image/add-jmx
add-jmx
This demo covers the steps required to build, run, and interact with a native executable using JMX.
Technologies: Native Image, JMX, VisualVM
Reference: Build and Run Native Executables with Remote JMX
- -### Native Image on Cloud Platforms - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
clouds/native-aws-fargate
clouds/native-aws-fargate
This demo covers the steps required to create a container image of a native executable application and deploy the image on AWS Fargate.
Technologies: Native Image, Apache Maven, Docker, AWS Fargate
-
clouds/native-aws-lambda
clouds/native-aws-lambda
This demo covers the steps required to deploy a native executable application on AWS Lambda.
Technologies: Native Image, Apache Maven, Docker, AWS Lambda
-
clouds/native-google-cloud-run
clouds/native-google-cloud-run
This demo covers the steps required to create a container image of a native executable application and deploy the image on Google Cloud Run.
Technologies: Native Image, Apache Maven, Docker, Google Cloud CLI, Google Cloud Run
-
clouds/native-oci-container-instances
clouds/native-oci-container-instances
This demo covers the steps required to create a container image of a native executable application and deploy the image on OCI Container Instances.
Technologies: Native Image, Apache Maven, Docker, OCI Container Instances
clouds/native-oci-generative-ai
clouds/native-oci-generative-ai
This demo covers the steps required to use the Generative AI service provided by Oracle Cloud Infrastructure. It uses a state-of-the-art, customizable large language model to generate text.
Technologies: Native Image, Apache Maven, Generative AI
- -### Micronaut - - - - - - - - - - - - - - -
NameDescription
micronaut-hello-rest-maven
micronaut-hello-rest-maven
Demonstrates how to package a Micronaut REST application into a native executable with Native Build Tools Maven plugin
Technologies: Native Image, Micronaut, Native Build Tools Maven plugin
Reference: Try in OCI Code Editor
- -### Spring Boot - - - - - - - - - - - - - - -
NameDescription
spring-boot-microservice-jibber
native-image/containerize/spring-boot-microservice-jibber
Demonstrates how to compile a Spring Boot 3 application into a native executable using the Native Build Tools Maven plugin and a Maven profile
Technologies: Spring Boot, Native Image, Native Build Tools Maven plugin
Reference: Containerize a Native Executable and Run in a Container, Oracle GraalVM in OCI Cloud Shell
- -### Polyglot - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
polyglot-chat-app
polyglot-chat-app
Demonstrates how to build a polyglot chat application by embedding Python and R into the Java host language
Technologies: Java, GraalPy, FastR, Micronaut
polyglot-debug
polyglot-debug
Demonstrates how to debug a polyglot Java and JavaScript application using GraalVM Tools for Java in VS Code
Technologies: Java, JavaScript, Maven, GraalVM Extension Pack
functionGraphDemo
functionGraphDemo
Demonstrates how to run a polyglot JavaScript-Java-R application on the GraalVM Node.js runtime
Technologies: JavaScript, Node.js, Java, R
+You will find instructions for running a particular demo in the corresponding README.md file. Some demos may also redirect you to a specific guide on the [GraalVM website](https://www.graalvm.org/latest/guides/). ## Compatibility -The demos are normal applications and benchmarks written in Java, JavaScript, Python, etc., so they are compatible with any virtual machine capable of running Java, JavaScript and so on. -These demos are [tested against the latest GraalVM release using GitHub Actions](https://github.com/graalvm/graalvm-demos/actions/workflows/main.yml). If you come across an issue, please submit it [here](https://github.com/graalvm/graalvm-demos/issues). +The demos are standard Java applications and benchmarks, compatible with any virtual machine capable of running Java. +They are [tested against the latest GraalVM LTS release and the GraalVM Early Access build using GitHub Actions](https://github.com/graalvm/graalvm-demos/tree/master/.github/workflows), with the exception of archived examples. +If you come across an issue, please submit it [here](https://github.com/graalvm/graalvm-demos/issues). ## License -Unless specified otherwise, all code in this repository is licensed under the [Universal Permissive License (UPL)](http://opensource.org/licenses/UPL). -Note that the submodule `fastR-examples` which is a reference to the [graalvm/examples](https://github.com/graalvm/examples) repository has a separate license. - -## Learn More - -* [GraalVM website](https://www.graalvm.org) -* [Graal project on GitHub](https://github.com/oracle/graal/tree/master/compiler) -* [GraalVM blog](https://medium.com/graalvm) +Unless specified otherwise, all code in this repository is licensed under the [Universal Permissive License (UPL)](http://opensource.org/licenses/UPL). \ No newline at end of file From fe1c13beca7c16d3d37e2dfda17d1355a22ed1a9 Mon Sep 17 00:00:00 2001 From: Olya Gupalo Date: Thu, 19 Dec 2024 10:40:24 +0200 Subject: [PATCH 2/6] Remove graaljs, graalpy, and graalwasm subdirectories; Add info where to find graal-languages-demos in main README --- README.md | 64 +++++++++++-------- graaljs/README.md | 1 - graaljs/graaljs-starter/README.md | 1 - graalpy/README.md | 1 - graalpy/graalpy-openai-starter/README.md | 1 - graalpy/graalpy-starter/README.md | 1 - graalwasm/README.md | 1 - .../graalwasm-photon-micronaut/README.md | 1 - .../graalwasm-photon-spring-boot/README.md | 1 - graalwasm/graalwasm-starter/README.md | 1 - 10 files changed, 39 insertions(+), 34 deletions(-) delete mode 100644 graaljs/README.md delete mode 100644 graaljs/graaljs-starter/README.md delete mode 100644 graalpy/README.md delete mode 100644 graalpy/graalpy-openai-starter/README.md delete mode 100644 graalpy/graalpy-starter/README.md delete mode 100644 graalwasm/README.md delete mode 100644 graalwasm/graalwasm-photon-micronaut/README.md delete mode 100644 graalwasm/graalwasm-photon-spring-boot/README.md delete mode 100644 graalwasm/graalwasm-starter/README.md diff --git a/README.md b/README.md index e4b84f49..bceff46e 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,60 @@ # GraalVM Demos This repository contains a collection of example applications that highlight key features and best practices for working with GraalVM technologies. +The demos are organized into categories for easier navigation. -## Repository Structure +## Get Started -The demos are organized into categories for easier navigation +To get started, clone this repository and navigate to the relevant demo directory: +```bash +git clone https://github.com/graalvm/graalvm-demos.git +``` +```bash +cd graalvm-demos +``` -### Native Image +You will find instructions for running a particular demo in the corresponding _README.md_ file. Some demos may also redirect you to a specific guide on the [GraalVM website](https://www.graalvm.org/latest/guides/). -Demos showcasing the capabilities of GraalVM Native Image, including performance optimization and configuration tips, such as: +## Graal Languages Demos -- _build_: Covers building native images, including configurations and setup steps for various use cases. -- _benchmark_: Provides performance measurement demos for Native Image. -- _containerize_: Focuses on containerizing native Java applications and following best practices. -- _monitor_: Demonstrates how to monitor native applications using observability and diagnostics tools. -- _microservices_: Provides examples of building microservices ahead of time using frameworks such as Micronaut and Spring Boot. -- _optimize_: Includes Native Image optimization examples for different criteria (runtime and performance tuning, file size, build time, and more). +You can find demos, along with how-to guides for GraalJS, GraalPy, and GraalWasm, in separate repositories: +- [https://github.com/graalvm/graal-languages-demos/tree/main/graaljs/](https://github.com/graalvm/graal-languages-demos/tree/main/graaljs/) +- [https://github.com/graalvm/graal-languages-demos/tree/main/graalpy/](https://github.com/graalvm/graal-languages-demos/tree/main/graalpy/) +- [https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/](https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/) -### Compiler +## Native Image Demos -Demos designed to test and showcase the capabilities of the Graal Just-In-Time (JIT) compiler. -These examples focus on evaluating the compiler's performance, including its optimizations for modern Java workloads. +Example applications showcasing the capabilities of GraalVM Native Image, including performance optimization and configuration tips. -### Clouds +### Build +Demos for building native images, including configurations and setup steps for various use cases. + +### Benchmark +Performance measurement demos for Native Image. +### Clouds Demos showcasing the building and deployment of native applications to Oracle Cloud Infrastructure (OCI), AWS, and Google Cloud. -### Archive +### Containerize +Demos focusing on containerizing native Java applications and following best practices. -Contains legacy or blog-related demos, as well as examples involving polyglot capabilities. +### Monitor +Demos showcasing how to monitor native applications using observability and diagnostics tools. -## Get Started +### Microservices +Demos for building microservices ahead of time using frameworks such as Micronaut and Spring Boot. -To get started, clone this repository and navigate to the relevant demo directory: -```bash -git clone https://github.com/graalvm/graalvm-demos.git -``` -```bash -cd graalvm-demos -``` +### Optimize +Demos optimizing native application for different criteria (runtime and performance tuning, file size, build time, and more). + +## Compiler Demos + +Demos designed to test and showcase the capabilities of the Graal Just-In-Time (JIT) compiler. +These examples focus on evaluating the compiler's performance, including its optimizations for modern Java workloads. + +## Archived Demos -You will find instructions for running a particular demo in the corresponding README.md file. Some demos may also redirect you to a specific guide on the [GraalVM website](https://www.graalvm.org/latest/guides/). +Legacy or blog-related demos, as well as examples involving polyglot capabilities. ## Compatibility diff --git a/graaljs/README.md b/graaljs/README.md deleted file mode 100644 index dcc99ec0..00000000 --- a/graaljs/README.md +++ /dev/null @@ -1 +0,0 @@ -*GraalJS demos and guides are now available at https://github.com/graalvm/graal-languages-demos/tree/main/graaljs/.* \ No newline at end of file diff --git a/graaljs/graaljs-starter/README.md b/graaljs/graaljs-starter/README.md deleted file mode 100644 index 6c89c4a2..00000000 --- a/graaljs/graaljs-starter/README.md +++ /dev/null @@ -1 +0,0 @@ -*This demo was moved to https://github.com/graalvm/graal-languages-demos/tree/main/graaljs/graaljs-starter.* \ No newline at end of file diff --git a/graalpy/README.md b/graalpy/README.md deleted file mode 100644 index 0cedab15..00000000 --- a/graalpy/README.md +++ /dev/null @@ -1 +0,0 @@ -*GraalPy demos and guides are now available at https://github.com/graalvm/graal-languages-demos/tree/main/graalpy/.* \ No newline at end of file diff --git a/graalpy/graalpy-openai-starter/README.md b/graalpy/graalpy-openai-starter/README.md deleted file mode 100644 index b3859b1e..00000000 --- a/graalpy/graalpy-openai-starter/README.md +++ /dev/null @@ -1 +0,0 @@ -*This demo was moved to https://github.com/graalvm/graal-languages-demos/tree/main/graalpy/graalpy-openai-starter.* \ No newline at end of file diff --git a/graalpy/graalpy-starter/README.md b/graalpy/graalpy-starter/README.md deleted file mode 100644 index 7cebd12a..00000000 --- a/graalpy/graalpy-starter/README.md +++ /dev/null @@ -1 +0,0 @@ -*This demo was moved to https://github.com/graalvm/graal-languages-demos/tree/main/graalpy/graalpy-starter.* \ No newline at end of file diff --git a/graalwasm/README.md b/graalwasm/README.md deleted file mode 100644 index b0c5d44a..00000000 --- a/graalwasm/README.md +++ /dev/null @@ -1 +0,0 @@ -*GraalWasm demos and guides are now available at https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/.* \ No newline at end of file diff --git a/graalwasm/graalwasm-photon-micronaut/README.md b/graalwasm/graalwasm-photon-micronaut/README.md deleted file mode 100644 index 99850ac2..00000000 --- a/graalwasm/graalwasm-photon-micronaut/README.md +++ /dev/null @@ -1 +0,0 @@ -*This demo was moved to https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/graalwasm-micronaut-photon.* \ No newline at end of file diff --git a/graalwasm/graalwasm-photon-spring-boot/README.md b/graalwasm/graalwasm-photon-spring-boot/README.md deleted file mode 100644 index 7a11edaf..00000000 --- a/graalwasm/graalwasm-photon-spring-boot/README.md +++ /dev/null @@ -1 +0,0 @@ -*This demo was moved to https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/graalwasm-spring-boot-photon.* \ No newline at end of file diff --git a/graalwasm/graalwasm-starter/README.md b/graalwasm/graalwasm-starter/README.md deleted file mode 100644 index e105729e..00000000 --- a/graalwasm/graalwasm-starter/README.md +++ /dev/null @@ -1 +0,0 @@ -*This demo was moved to https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/graalwasm-starter.* \ No newline at end of file From 77c034bcb92cea706463b13db01488c7696d6e04 Mon Sep 17 00:00:00 2001 From: Olya Gupalo Date: Thu, 19 Dec 2024 13:40:47 +0200 Subject: [PATCH 3/6] List each actively tested demo in main README --- README.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/README.md b/README.md index bceff46e..40f00179 100644 --- a/README.md +++ b/README.md @@ -29,29 +29,70 @@ Example applications showcasing the capabilities of GraalVM Native Image, includ ### Build Demos for building native images, including configurations and setup steps for various use cases. +* hello-world - +* build-java-modules - +* build-shared-library - +* build-static-images - +* build-with-js-embedded - +* list-files - +* native-build-tools - + ### Benchmark Performance measurement demos for Native Image. +* jmh/binary-tree - + ### Clouds Demos showcasing the building and deployment of native applications to Oracle Cloud Infrastructure (OCI), AWS, and Google Cloud. +* native-aws-fargate - +* native-aws-lambda - +* native-google-cloud-run - +* native-oci-container-instances - +* native-oci-generative-ai - + +### Configure + +* configure-with-tracing-agent - +* include-metadata - +* include-resources - +* use-system-properties - + ### Containerize Demos focusing on containerizing native Java applications and following best practices. +* spring-boot-microservice-jibber - +* tiny-java-containers - + ### Monitor Demos showcasing how to monitor native applications using observability and diagnostics tools. +* add-jfr - +* add-jmx - +* add-logging - +* create-heap-dump - +* emit-build-report - + ### Microservices Demos for building microservices ahead of time using frameworks such as Micronaut and Spring Boot. +* micronaut-hello-rest-gradle - +* micronaut-hello-rest-maven - + ### Optimize Demos optimizing native application for different criteria (runtime and performance tuning, file size, build time, and more). +* optimize-memory - +* optimize-with-pgo - +* specify-class-init - + ## Compiler Demos Demos designed to test and showcase the capabilities of the Graal Just-In-Time (JIT) compiler. These examples focus on evaluating the compiler's performance, including its optimizations for modern Java workloads. +* - java-stream-benchmark + ## Archived Demos Legacy or blog-related demos, as well as examples involving polyglot capabilities. From 3a84e77de62666c6c85dcb8be429533e6048012f Mon Sep 17 00:00:00 2001 From: Olya Gupalo Date: Thu, 19 Dec 2024 14:00:01 +0200 Subject: [PATCH 4/6] Move /clouds/ under native-image --- .../workflows/clouds-native-aws-fargate.yml | 6 +- .../workflows/clouds-native-aws-lambda.yml | 8 +- .../clouds-native-google-cloud-run.yml | 6 +- .../clouds-native-oci-cloud-shell.yml | 8 +- .../clouds-native-oci-container-instances.yml | 6 +- .../clouds-native-oci-generative-ai.yml | 6 +- README.md | 82 +++++++++--------- .../.mvn/wrapper/maven-wrapper.properties | 0 .../clouds}/native-aws-fargate/README.md | 0 .../native-aws-fargate/img/Cluster name.png | Bin .../native-aws-fargate/img/confirm delete.png | Bin .../native-aws-fargate/img/create cluster.png | Bin .../native-aws-fargate/img/create repo.png | Bin .../img/create task def.png | Bin .../clouds}/native-aws-fargate/img/delete.png | Bin .../native-aws-fargate/img/hello world.png | Bin .../native-aws-fargate/img/infrastructure.png | Bin .../native-aws-fargate/img/new task.png | Bin .../native-aws-fargate/img/public ip.png | Bin .../native-aws-fargate/img/push command.png | Bin .../native-aws-fargate/img/run new task.png | Bin .../native-aws-fargate/img/security group.png | Bin .../native-aws-fargate/img/task def.png | Bin .../img/view push commands.png | Bin .../native-aws-fargate/micronaut-cli.yml | 0 .../clouds}/native-aws-fargate/mvnw | 0 .../clouds}/native-aws-fargate/mvnw.cmd | 0 .../clouds}/native-aws-fargate/pom.xml | 0 .../java/example/micronaut/Application.java | 0 .../example/micronaut/HelloController.java | 0 .../src/main/resources/application.yml | 0 .../src/main/resources/logback.xml | 0 .../micronaut/HelloControllerTest.java | 0 .../example/micronaut/MicronautguideTest.java | 0 .../.mvn/wrapper/maven-wrapper.properties | 0 .../clouds}/native-aws-lambda/README.md | 0 ...5-6c5111c4-4f70-4533-abd5-193c1f7fd269.png | Bin .../native-aws-lambda/img/Create function.png | Bin .../native-aws-lambda/img/JAR upload.png | Bin .../native-aws-lambda/img/handler java.png | Bin .../native-aws-lambda/img/handler linux.png | Bin .../native-aws-lambda/img/java cold.png | Bin .../native-aws-lambda/img/java warm.png | Bin .../native-aws-lambda/img/myFunction.png | Bin .../img/myNativeImageFunc.png | Bin .../clouds}/native-aws-lambda/img/myTest.png | Bin .../native-aws-lambda/img/native cold.png | Bin .../native-aws-lambda/img/native warm.png | Bin .../native-aws-lambda/img/zip upload.png | Bin .../native-aws-lambda/micronaut-cli.yml | 0 .../clouds}/native-aws-lambda/mvnw | 0 .../clouds}/native-aws-lambda/mvnw.cmd | 0 .../clouds}/native-aws-lambda/pom.xml | 0 .../example/micronaut/HomeController.java | 0 .../src/main/resources/application.yml | 0 .../src/main/resources/logback.xml | 0 .../example/micronaut/HomeControllerTest.java | 0 .../.mvn/wrapper/maven-wrapper.properties | 0 .../clouds}/native-google-cloud-run/README.md | 0 .../img/change billing.png | Bin .../native-google-cloud-run/img/curl.png | Bin .../native-google-cloud-run/img/delete.png | Bin .../native-google-cloud-run/img/deploy.png | Bin .../img/run deploy.png | Bin .../native-google-cloud-run/micronaut-cli.yml | 0 .../clouds}/native-google-cloud-run/mvnw | 0 .../clouds}/native-google-cloud-run/mvnw.cmd | 0 .../clouds}/native-google-cloud-run/pom.xml | 0 .../java/example/micronaut/Application.java | 0 .../example/micronaut/HelloController.java | 0 .../src/main/resources/application.yml | 0 .../src/main/resources/logback.xml | 0 .../micronaut/HelloControllerTest.java | 0 .../example/micronaut/MicronautguideTest.java | 0 .../.mvn/wrapper/maven-wrapper.properties | 0 .../README-Cloud-Shell.md | 0 .../clouds}/native-oci-cloud-shell/README.md | 0 .../clouds}/native-oci-cloud-shell/mvnw | 0 .../clouds}/native-oci-cloud-shell/mvnw.bat | 0 .../clouds}/native-oci-cloud-shell/pom.xml | 0 .../src/main/java/com/gvm/samples/App.java | 0 .../test/java/com/gvm/samples/AppTest.java | 0 .../.mvn/wrapper/maven-wrapper.properties | 0 .../native-oci-container-instances/README.md | 0 .../img/actions public.png | Bin .../img/active container instance.png | Bin .../img/container instances.png | Bin .../img/create container instance.png | Bin .../img/create dynamic group.png | Bin .../img/create policy.png | Bin .../img/create security group.png | Bin .../img/delete VCN.png | Bin .../img/delete instance.png | Bin .../img/delete repository.png | Bin .../img/hello world.png | Bin .../img/select image.png | Bin .../img/shape.png | Bin .../micronaut-cli.yml | 0 .../native-oci-container-instances/mvnw | 0 .../native-oci-container-instances/mvnw.cmd | 0 .../native-oci-container-instances/pom.xml | 0 .../java/example/micronaut/Application.java | 0 .../example/micronaut/HelloController.java | 0 .../src/main/resources/application.yml | 0 .../src/main/resources/logback.xml | 0 .../micronaut/HelloControllerTest.java | 0 .../example/micronaut/MicronautguideTest.java | 0 .../native-oci-generative-ai/README.md | 0 .../clouds}/native-oci-generative-ai/pom.xml | 0 .../com/oracle/labs/GenerateTextExample.java | 0 110 files changed, 65 insertions(+), 57 deletions(-) rename {clouds => native-image/clouds}/native-aws-fargate/.mvn/wrapper/maven-wrapper.properties (100%) rename {clouds => native-image/clouds}/native-aws-fargate/README.md (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/Cluster name.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/confirm delete.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/create cluster.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/create repo.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/create task def.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/delete.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/hello world.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/infrastructure.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/new task.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/public ip.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/push command.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/run new task.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/security group.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/task def.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/img/view push commands.png (100%) rename {clouds => native-image/clouds}/native-aws-fargate/micronaut-cli.yml (100%) rename {clouds => native-image/clouds}/native-aws-fargate/mvnw (100%) rename {clouds => native-image/clouds}/native-aws-fargate/mvnw.cmd (100%) rename {clouds => native-image/clouds}/native-aws-fargate/pom.xml (100%) rename {clouds => native-image/clouds}/native-aws-fargate/src/main/java/example/micronaut/Application.java (100%) rename {clouds => native-image/clouds}/native-aws-fargate/src/main/java/example/micronaut/HelloController.java (100%) rename {clouds => native-image/clouds}/native-aws-fargate/src/main/resources/application.yml (100%) rename {clouds => native-image/clouds}/native-aws-fargate/src/main/resources/logback.xml (100%) rename {clouds => native-image/clouds}/native-aws-fargate/src/test/java/example/micronaut/HelloControllerTest.java (100%) rename {clouds => native-image/clouds}/native-aws-fargate/src/test/java/example/micronaut/MicronautguideTest.java (100%) rename {clouds => native-image/clouds}/native-aws-lambda/.mvn/wrapper/maven-wrapper.properties (100%) rename {clouds => native-image/clouds}/native-aws-lambda/README.md (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/249304425-6c5111c4-4f70-4533-abd5-193c1f7fd269.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/Create function.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/JAR upload.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/handler java.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/handler linux.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/java cold.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/java warm.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/myFunction.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/myNativeImageFunc.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/myTest.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/native cold.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/native warm.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/img/zip upload.png (100%) rename {clouds => native-image/clouds}/native-aws-lambda/micronaut-cli.yml (100%) rename {clouds => native-image/clouds}/native-aws-lambda/mvnw (100%) rename {clouds => native-image/clouds}/native-aws-lambda/mvnw.cmd (100%) rename {clouds => native-image/clouds}/native-aws-lambda/pom.xml (100%) rename {clouds => native-image/clouds}/native-aws-lambda/src/main/java/example/micronaut/HomeController.java (100%) rename {clouds => native-image/clouds}/native-aws-lambda/src/main/resources/application.yml (100%) rename {clouds => native-image/clouds}/native-aws-lambda/src/main/resources/logback.xml (100%) rename {clouds => native-image/clouds}/native-aws-lambda/src/test/java/example/micronaut/HomeControllerTest.java (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/.mvn/wrapper/maven-wrapper.properties (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/README.md (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/img/change billing.png (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/img/curl.png (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/img/delete.png (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/img/deploy.png (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/img/run deploy.png (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/micronaut-cli.yml (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/mvnw (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/mvnw.cmd (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/pom.xml (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/src/main/java/example/micronaut/Application.java (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/src/main/java/example/micronaut/HelloController.java (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/src/main/resources/application.yml (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/src/main/resources/logback.xml (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/src/test/java/example/micronaut/HelloControllerTest.java (100%) rename {clouds => native-image/clouds}/native-google-cloud-run/src/test/java/example/micronaut/MicronautguideTest.java (100%) rename {clouds => native-image/clouds}/native-oci-cloud-shell/.mvn/wrapper/maven-wrapper.properties (100%) rename {clouds => native-image/clouds}/native-oci-cloud-shell/README-Cloud-Shell.md (100%) rename {clouds => native-image/clouds}/native-oci-cloud-shell/README.md (100%) rename {clouds => native-image/clouds}/native-oci-cloud-shell/mvnw (100%) rename {clouds => native-image/clouds}/native-oci-cloud-shell/mvnw.bat (100%) rename {clouds => native-image/clouds}/native-oci-cloud-shell/pom.xml (100%) rename {clouds => native-image/clouds}/native-oci-cloud-shell/src/main/java/com/gvm/samples/App.java (100%) rename {clouds => native-image/clouds}/native-oci-cloud-shell/src/test/java/com/gvm/samples/AppTest.java (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/.mvn/wrapper/maven-wrapper.properties (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/README.md (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/actions public.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/active container instance.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/container instances.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/create container instance.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/create dynamic group.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/create policy.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/create security group.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/delete VCN.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/delete instance.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/delete repository.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/hello world.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/select image.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/img/shape.png (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/micronaut-cli.yml (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/mvnw (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/mvnw.cmd (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/pom.xml (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/src/main/java/example/micronaut/Application.java (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/src/main/java/example/micronaut/HelloController.java (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/src/main/resources/application.yml (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/src/main/resources/logback.xml (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/src/test/java/example/micronaut/HelloControllerTest.java (100%) rename {clouds => native-image/clouds}/native-oci-container-instances/src/test/java/example/micronaut/MicronautguideTest.java (100%) rename {clouds => native-image/clouds}/native-oci-generative-ai/README.md (100%) rename {clouds => native-image/clouds}/native-oci-generative-ai/pom.xml (100%) rename {clouds => native-image/clouds}/native-oci-generative-ai/src/main/java/com/oracle/labs/GenerateTextExample.java (100%) diff --git a/.github/workflows/clouds-native-aws-fargate.yml b/.github/workflows/clouds-native-aws-fargate.yml index 75df9b19..5560431b 100644 --- a/.github/workflows/clouds-native-aws-fargate.yml +++ b/.github/workflows/clouds-native-aws-fargate.yml @@ -2,11 +2,11 @@ name: clouds/native-aws-fargate on: push: paths: - - 'clouds/native-aws-fargate/**' + - 'native-image/clouds/native-aws-fargate/**' - '.github/workflows/clouds-native-aws-fargate.yml' pull_request: paths: - - 'clouds/native-aws-fargate/**' + - 'native-image/clouds/native-aws-fargate/**' - '.github/workflows/clouds-native-aws-fargate.yml' schedule: - cron: "0 0 1 * *" # run every month @@ -27,5 +27,5 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Run 'clouds/native-aws-fargate' run: | - cd clouds/native-aws-fargate + cd native-image/clouds/native-aws-fargate ./mvnw package -Dpackaging=docker-native diff --git a/.github/workflows/clouds-native-aws-lambda.yml b/.github/workflows/clouds-native-aws-lambda.yml index b8fb01eb..ee923377 100644 --- a/.github/workflows/clouds-native-aws-lambda.yml +++ b/.github/workflows/clouds-native-aws-lambda.yml @@ -2,11 +2,11 @@ name: clouds/native-aws-lambda on: push: paths: - - 'clouds/native-aws-lambda/**' + - 'native-image/clouds/native-aws-lambda/**' - '.github/workflows/clouds-native-aws-lambda.yml' pull_request: paths: - - 'clouds/native-aws-lambda/**' + - 'native-image/clouds/native-aws-lambda/**' - '.github/workflows/clouds-native-aws-lambda.yml' schedule: - cron: "0 0 1 * *" # run every month @@ -27,9 +27,9 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Run 'clouds/native-aws-lambda java' run: | - cd clouds/native-aws-lambda + cd native-image/clouds/native-aws-lambda ./mvnw package - name: Run 'clouds/native-aws-lambda native image' run: | - cd clouds/native-aws-lambda + cd native-image/clouds/native-aws-lambda ./mvnw package -Dpackaging=docker-native \ No newline at end of file diff --git a/.github/workflows/clouds-native-google-cloud-run.yml b/.github/workflows/clouds-native-google-cloud-run.yml index 03eb55dd..db7b9cad 100644 --- a/.github/workflows/clouds-native-google-cloud-run.yml +++ b/.github/workflows/clouds-native-google-cloud-run.yml @@ -2,11 +2,11 @@ name: clouds/native-google-cloud-run on: push: paths: - - 'clouds/native-google-cloud-run/**' + - 'native-image/clouds/native-google-cloud-run/**' - '.github/workflows/clouds-native-google-cloud-run.yml' pull_request: paths: - - 'clouds/native-google-cloud-run/**' + - 'native-image/clouds/native-google-cloud-run/**' - '.github/workflows/clouds-native-google-cloud-run.yml' schedule: - cron: "0 0 1 * *" # run every month @@ -27,5 +27,5 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Run 'clouds/native-google-cloud-run' run: | - cd clouds/native-google-cloud-run + cd native-image/clouds/native-google-cloud-run ./mvnw package -Dpackaging=docker-native diff --git a/.github/workflows/clouds-native-oci-cloud-shell.yml b/.github/workflows/clouds-native-oci-cloud-shell.yml index 4edca98f..27541102 100644 --- a/.github/workflows/clouds-native-oci-cloud-shell.yml +++ b/.github/workflows/clouds-native-oci-cloud-shell.yml @@ -2,7 +2,11 @@ name: clouds/native-oci-cloud-shell on: push: paths: - - 'clouds/native-oci-cloud-shell/**' + - 'native-image/clouds/native-oci-cloud-shell/**' + - '.github/workflows/clouds-native-oci-cloud-shell.yml' + pull_request: + paths: + - 'native-image/clouds/native-oci-cloud-shell/**' - '.github/workflows/clouds-native-oci-cloud-shell.yml' schedule: - cron: "0 0 1 * *" # run every month @@ -25,7 +29,7 @@ jobs: native-image-job-reports: 'true' - name: Run 'clouds/native-oci-cloud-shell' run: | - cd clouds/native-oci-cloud-shell + cd native-image/clouds/native-oci-cloud-shell mvn --no-transfer-progress clean package java -jar target/my-app-1.0-SNAPSHOT.jar mvn --no-transfer-progress clean -Pnative -DskipTests package diff --git a/.github/workflows/clouds-native-oci-container-instances.yml b/.github/workflows/clouds-native-oci-container-instances.yml index 0aace53e..d46a0b02 100644 --- a/.github/workflows/clouds-native-oci-container-instances.yml +++ b/.github/workflows/clouds-native-oci-container-instances.yml @@ -2,11 +2,11 @@ name: clouds/native-oci-container-instances on: push: paths: - - 'clouds/native-oci-container-instances/**' + - 'native-image/clouds/native-oci-container-instances/**' - '.github/workflows/clouds-native-oci-container-instances.yml' pull_request: paths: - - 'clouds/native-oci-container-instances/**' + - 'native-image/clouds/native-oci-container-instances/**' - '.github/workflows/clouds-native-oci-container-instances.yml' schedule: - cron: "0 0 1 * *" # run every month @@ -27,5 +27,5 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Run 'clouds/native-oci-container-instances' run: | - cd clouds/native-oci-container-instances + cd native-image/clouds/native-oci-container-instances ./mvnw package -Dpackaging=docker-native diff --git a/.github/workflows/clouds-native-oci-generative-ai.yml b/.github/workflows/clouds-native-oci-generative-ai.yml index 0e625961..74da886a 100644 --- a/.github/workflows/clouds-native-oci-generative-ai.yml +++ b/.github/workflows/clouds-native-oci-generative-ai.yml @@ -2,11 +2,11 @@ name: clouds/native-oci-generative-ai on: push: paths: - - 'clouds/native-oci-generative-ai/**' + - 'native-image/clouds/native-oci-generative-ai/**' - '.github/workflows/clouds-native-oci-generative-ai.yml' pull_request: paths: - - 'clouds/native-oci-generative-ai/**' + - 'native-image/clouds/native-oci-generative-ai/**' - '.github/workflows/clouds-native-oci-generative-ai.yml' schedule: - cron: "0 0 1 * *" # run every month @@ -27,5 +27,5 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Run 'native-oci-generative-ai' run: | - cd clouds/native-oci-generative-ai + cd native-image/clouds/native-oci-generative-ai mvn --batch-mode clean package -Pnative diff --git a/README.md b/README.md index 40f00179..a44f2f70 100644 --- a/README.md +++ b/README.md @@ -26,72 +26,76 @@ You can find demos, along with how-to guides for GraalJS, GraalPy, and GraalWasm Example applications showcasing the capabilities of GraalVM Native Image, including performance optimization and configuration tips. -### Build +#### Build Demos for building native images, including configurations and setup steps for various use cases. -* hello-world - -* build-java-modules - -* build-shared-library - -* build-static-images - -* build-with-js-embedded - -* list-files - -* native-build-tools - +* [hello-world](native-image/hello-world/) - +* [build-from-jar](native-image/build-from-jar/) - +* [build-java-modules](native-image/build-java-modules/) - +* [build-shared-library](native-image/build-shared-library/) - +* [build-static-images](native-image/build-static-images/) - +* [build-with-js-embedded](native-image/build-with-js-embedded/) - +* [list-files](native-image/list-files/) - +* [native-build-tools](native-image/native-build-tools/) - -### Benchmark +#### Benchmark Performance measurement demos for Native Image. -* jmh/binary-tree - +* [jmh/binary-tree](native-image/benchmark/jmh/binary-tree/) - -### Clouds +#### Clouds Demos showcasing the building and deployment of native applications to Oracle Cloud Infrastructure (OCI), AWS, and Google Cloud. -* native-aws-fargate - -* native-aws-lambda - -* native-google-cloud-run - -* native-oci-container-instances - -* native-oci-generative-ai - +* [native-aws-fargate](native-image/clouds/native-aws-fargate/) - +* [native-aws-lambda](native-image/clouds/native-aws-lambda/) - +* [native-google-cloud-run](native-image/clouds/native-google-cloud-run/) - +* [native-oci-cloud-shell](native-image/clouds/native-oci-cloud-shell/) - +* [native-oci-container-instances](native-image/clouds/native-oci-container-instances/) - +* [native-oci-generative-ai](native-image/clouds/native-oci-generative-ai/) - -### Configure +#### Configure -* configure-with-tracing-agent - -* include-metadata - -* include-resources - -* use-system-properties - +* [access-environment-variables](native-image/access-environment-variables/) - +* [configure-with-tracing-agent](native-image/configure-with-tracing-agent/) - +* [include-metadata](native-image/include-metadata/) - +* [include-resources](native-image/include-resources/) - +* [specify-class-init](native-image/specify-class-init/) - +* [use-system-properties](native-image/use-system-properties/) - -### Containerize +#### Containerize Demos focusing on containerizing native Java applications and following best practices. -* spring-boot-microservice-jibber - -* tiny-java-containers - +* [spring-boot-microservice-jibber](native-image/containerize/spring-boot-microservice-jibber/) - +* [tiny-java-containers](native-image/containerize/tiny-java-containers/) - -### Monitor +#### Monitor Demos showcasing how to monitor native applications using observability and diagnostics tools. -* add-jfr - -* add-jmx - -* add-logging - -* create-heap-dump - -* emit-build-report - +* [add-jfr](native-image/add-jfr/) - +* [add-jmx](native-image/add-jmx/) - +* [add-logging](native-image/add-logging/) - +* [create-heap-dump](native-image/create-heap-dumps/) - +* [embed-sbom](native-image/embed-sbom/) - -### Microservices +#### Microservices Demos for building microservices ahead of time using frameworks such as Micronaut and Spring Boot. -* micronaut-hello-rest-gradle - -* micronaut-hello-rest-maven - +* [micronaut-hello-rest-gradle](native-image/microservices/micronaut-hello-rest-gradle) - +* [micronaut-hello-rest-maven](native-image/microservices/micronaut-hello-rest-maven) - -### Optimize -Demos optimizing native application for different criteria (runtime and performance tuning, file size, build time, and more). +#### Optimize +Demos optimizing native applications for different criteria (runtime and performance tuning, file size, build time, and more). -* optimize-memory - -* optimize-with-pgo - -* specify-class-init - +* [emit-build-report](native-image/emit-build-report/) - +* [optimize-memory](native-image/optimize-memory/) - +* [optimize-with-pgo](native-image/optimize-with-pgo/) - ## Compiler Demos Demos designed to test and showcase the capabilities of the Graal Just-In-Time (JIT) compiler. These examples focus on evaluating the compiler's performance, including its optimizations for modern Java workloads. -* - java-stream-benchmark +* - [java-stream-benchmark](compiler/java-stream-benchmark/) ## Archived Demos diff --git a/clouds/native-aws-fargate/.mvn/wrapper/maven-wrapper.properties b/native-image/clouds/native-aws-fargate/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from clouds/native-aws-fargate/.mvn/wrapper/maven-wrapper.properties rename to native-image/clouds/native-aws-fargate/.mvn/wrapper/maven-wrapper.properties diff --git a/clouds/native-aws-fargate/README.md b/native-image/clouds/native-aws-fargate/README.md similarity index 100% rename from clouds/native-aws-fargate/README.md rename to native-image/clouds/native-aws-fargate/README.md diff --git a/clouds/native-aws-fargate/img/Cluster name.png b/native-image/clouds/native-aws-fargate/img/Cluster name.png similarity index 100% rename from clouds/native-aws-fargate/img/Cluster name.png rename to native-image/clouds/native-aws-fargate/img/Cluster name.png diff --git a/clouds/native-aws-fargate/img/confirm delete.png b/native-image/clouds/native-aws-fargate/img/confirm delete.png similarity index 100% rename from clouds/native-aws-fargate/img/confirm delete.png rename to native-image/clouds/native-aws-fargate/img/confirm delete.png diff --git a/clouds/native-aws-fargate/img/create cluster.png b/native-image/clouds/native-aws-fargate/img/create cluster.png similarity index 100% rename from clouds/native-aws-fargate/img/create cluster.png rename to native-image/clouds/native-aws-fargate/img/create cluster.png diff --git a/clouds/native-aws-fargate/img/create repo.png b/native-image/clouds/native-aws-fargate/img/create repo.png similarity index 100% rename from clouds/native-aws-fargate/img/create repo.png rename to native-image/clouds/native-aws-fargate/img/create repo.png diff --git a/clouds/native-aws-fargate/img/create task def.png b/native-image/clouds/native-aws-fargate/img/create task def.png similarity index 100% rename from clouds/native-aws-fargate/img/create task def.png rename to native-image/clouds/native-aws-fargate/img/create task def.png diff --git a/clouds/native-aws-fargate/img/delete.png b/native-image/clouds/native-aws-fargate/img/delete.png similarity index 100% rename from clouds/native-aws-fargate/img/delete.png rename to native-image/clouds/native-aws-fargate/img/delete.png diff --git a/clouds/native-aws-fargate/img/hello world.png b/native-image/clouds/native-aws-fargate/img/hello world.png similarity index 100% rename from clouds/native-aws-fargate/img/hello world.png rename to native-image/clouds/native-aws-fargate/img/hello world.png diff --git a/clouds/native-aws-fargate/img/infrastructure.png b/native-image/clouds/native-aws-fargate/img/infrastructure.png similarity index 100% rename from clouds/native-aws-fargate/img/infrastructure.png rename to native-image/clouds/native-aws-fargate/img/infrastructure.png diff --git a/clouds/native-aws-fargate/img/new task.png b/native-image/clouds/native-aws-fargate/img/new task.png similarity index 100% rename from clouds/native-aws-fargate/img/new task.png rename to native-image/clouds/native-aws-fargate/img/new task.png diff --git a/clouds/native-aws-fargate/img/public ip.png b/native-image/clouds/native-aws-fargate/img/public ip.png similarity index 100% rename from clouds/native-aws-fargate/img/public ip.png rename to native-image/clouds/native-aws-fargate/img/public ip.png diff --git a/clouds/native-aws-fargate/img/push command.png b/native-image/clouds/native-aws-fargate/img/push command.png similarity index 100% rename from clouds/native-aws-fargate/img/push command.png rename to native-image/clouds/native-aws-fargate/img/push command.png diff --git a/clouds/native-aws-fargate/img/run new task.png b/native-image/clouds/native-aws-fargate/img/run new task.png similarity index 100% rename from clouds/native-aws-fargate/img/run new task.png rename to native-image/clouds/native-aws-fargate/img/run new task.png diff --git a/clouds/native-aws-fargate/img/security group.png b/native-image/clouds/native-aws-fargate/img/security group.png similarity index 100% rename from clouds/native-aws-fargate/img/security group.png rename to native-image/clouds/native-aws-fargate/img/security group.png diff --git a/clouds/native-aws-fargate/img/task def.png b/native-image/clouds/native-aws-fargate/img/task def.png similarity index 100% rename from clouds/native-aws-fargate/img/task def.png rename to native-image/clouds/native-aws-fargate/img/task def.png diff --git a/clouds/native-aws-fargate/img/view push commands.png b/native-image/clouds/native-aws-fargate/img/view push commands.png similarity index 100% rename from clouds/native-aws-fargate/img/view push commands.png rename to native-image/clouds/native-aws-fargate/img/view push commands.png diff --git a/clouds/native-aws-fargate/micronaut-cli.yml b/native-image/clouds/native-aws-fargate/micronaut-cli.yml similarity index 100% rename from clouds/native-aws-fargate/micronaut-cli.yml rename to native-image/clouds/native-aws-fargate/micronaut-cli.yml diff --git a/clouds/native-aws-fargate/mvnw b/native-image/clouds/native-aws-fargate/mvnw similarity index 100% rename from clouds/native-aws-fargate/mvnw rename to native-image/clouds/native-aws-fargate/mvnw diff --git a/clouds/native-aws-fargate/mvnw.cmd b/native-image/clouds/native-aws-fargate/mvnw.cmd similarity index 100% rename from clouds/native-aws-fargate/mvnw.cmd rename to native-image/clouds/native-aws-fargate/mvnw.cmd diff --git a/clouds/native-aws-fargate/pom.xml b/native-image/clouds/native-aws-fargate/pom.xml similarity index 100% rename from clouds/native-aws-fargate/pom.xml rename to native-image/clouds/native-aws-fargate/pom.xml diff --git a/clouds/native-aws-fargate/src/main/java/example/micronaut/Application.java b/native-image/clouds/native-aws-fargate/src/main/java/example/micronaut/Application.java similarity index 100% rename from clouds/native-aws-fargate/src/main/java/example/micronaut/Application.java rename to native-image/clouds/native-aws-fargate/src/main/java/example/micronaut/Application.java diff --git a/clouds/native-aws-fargate/src/main/java/example/micronaut/HelloController.java b/native-image/clouds/native-aws-fargate/src/main/java/example/micronaut/HelloController.java similarity index 100% rename from clouds/native-aws-fargate/src/main/java/example/micronaut/HelloController.java rename to native-image/clouds/native-aws-fargate/src/main/java/example/micronaut/HelloController.java diff --git a/clouds/native-aws-fargate/src/main/resources/application.yml b/native-image/clouds/native-aws-fargate/src/main/resources/application.yml similarity index 100% rename from clouds/native-aws-fargate/src/main/resources/application.yml rename to native-image/clouds/native-aws-fargate/src/main/resources/application.yml diff --git a/clouds/native-aws-fargate/src/main/resources/logback.xml b/native-image/clouds/native-aws-fargate/src/main/resources/logback.xml similarity index 100% rename from clouds/native-aws-fargate/src/main/resources/logback.xml rename to native-image/clouds/native-aws-fargate/src/main/resources/logback.xml diff --git a/clouds/native-aws-fargate/src/test/java/example/micronaut/HelloControllerTest.java b/native-image/clouds/native-aws-fargate/src/test/java/example/micronaut/HelloControllerTest.java similarity index 100% rename from clouds/native-aws-fargate/src/test/java/example/micronaut/HelloControllerTest.java rename to native-image/clouds/native-aws-fargate/src/test/java/example/micronaut/HelloControllerTest.java diff --git a/clouds/native-aws-fargate/src/test/java/example/micronaut/MicronautguideTest.java b/native-image/clouds/native-aws-fargate/src/test/java/example/micronaut/MicronautguideTest.java similarity index 100% rename from clouds/native-aws-fargate/src/test/java/example/micronaut/MicronautguideTest.java rename to native-image/clouds/native-aws-fargate/src/test/java/example/micronaut/MicronautguideTest.java diff --git a/clouds/native-aws-lambda/.mvn/wrapper/maven-wrapper.properties b/native-image/clouds/native-aws-lambda/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from clouds/native-aws-lambda/.mvn/wrapper/maven-wrapper.properties rename to native-image/clouds/native-aws-lambda/.mvn/wrapper/maven-wrapper.properties diff --git a/clouds/native-aws-lambda/README.md b/native-image/clouds/native-aws-lambda/README.md similarity index 100% rename from clouds/native-aws-lambda/README.md rename to native-image/clouds/native-aws-lambda/README.md diff --git a/clouds/native-aws-lambda/img/249304425-6c5111c4-4f70-4533-abd5-193c1f7fd269.png b/native-image/clouds/native-aws-lambda/img/249304425-6c5111c4-4f70-4533-abd5-193c1f7fd269.png similarity index 100% rename from clouds/native-aws-lambda/img/249304425-6c5111c4-4f70-4533-abd5-193c1f7fd269.png rename to native-image/clouds/native-aws-lambda/img/249304425-6c5111c4-4f70-4533-abd5-193c1f7fd269.png diff --git a/clouds/native-aws-lambda/img/Create function.png b/native-image/clouds/native-aws-lambda/img/Create function.png similarity index 100% rename from clouds/native-aws-lambda/img/Create function.png rename to native-image/clouds/native-aws-lambda/img/Create function.png diff --git a/clouds/native-aws-lambda/img/JAR upload.png b/native-image/clouds/native-aws-lambda/img/JAR upload.png similarity index 100% rename from clouds/native-aws-lambda/img/JAR upload.png rename to native-image/clouds/native-aws-lambda/img/JAR upload.png diff --git a/clouds/native-aws-lambda/img/handler java.png b/native-image/clouds/native-aws-lambda/img/handler java.png similarity index 100% rename from clouds/native-aws-lambda/img/handler java.png rename to native-image/clouds/native-aws-lambda/img/handler java.png diff --git a/clouds/native-aws-lambda/img/handler linux.png b/native-image/clouds/native-aws-lambda/img/handler linux.png similarity index 100% rename from clouds/native-aws-lambda/img/handler linux.png rename to native-image/clouds/native-aws-lambda/img/handler linux.png diff --git a/clouds/native-aws-lambda/img/java cold.png b/native-image/clouds/native-aws-lambda/img/java cold.png similarity index 100% rename from clouds/native-aws-lambda/img/java cold.png rename to native-image/clouds/native-aws-lambda/img/java cold.png diff --git a/clouds/native-aws-lambda/img/java warm.png b/native-image/clouds/native-aws-lambda/img/java warm.png similarity index 100% rename from clouds/native-aws-lambda/img/java warm.png rename to native-image/clouds/native-aws-lambda/img/java warm.png diff --git a/clouds/native-aws-lambda/img/myFunction.png b/native-image/clouds/native-aws-lambda/img/myFunction.png similarity index 100% rename from clouds/native-aws-lambda/img/myFunction.png rename to native-image/clouds/native-aws-lambda/img/myFunction.png diff --git a/clouds/native-aws-lambda/img/myNativeImageFunc.png b/native-image/clouds/native-aws-lambda/img/myNativeImageFunc.png similarity index 100% rename from clouds/native-aws-lambda/img/myNativeImageFunc.png rename to native-image/clouds/native-aws-lambda/img/myNativeImageFunc.png diff --git a/clouds/native-aws-lambda/img/myTest.png b/native-image/clouds/native-aws-lambda/img/myTest.png similarity index 100% rename from clouds/native-aws-lambda/img/myTest.png rename to native-image/clouds/native-aws-lambda/img/myTest.png diff --git a/clouds/native-aws-lambda/img/native cold.png b/native-image/clouds/native-aws-lambda/img/native cold.png similarity index 100% rename from clouds/native-aws-lambda/img/native cold.png rename to native-image/clouds/native-aws-lambda/img/native cold.png diff --git a/clouds/native-aws-lambda/img/native warm.png b/native-image/clouds/native-aws-lambda/img/native warm.png similarity index 100% rename from clouds/native-aws-lambda/img/native warm.png rename to native-image/clouds/native-aws-lambda/img/native warm.png diff --git a/clouds/native-aws-lambda/img/zip upload.png b/native-image/clouds/native-aws-lambda/img/zip upload.png similarity index 100% rename from clouds/native-aws-lambda/img/zip upload.png rename to native-image/clouds/native-aws-lambda/img/zip upload.png diff --git a/clouds/native-aws-lambda/micronaut-cli.yml b/native-image/clouds/native-aws-lambda/micronaut-cli.yml similarity index 100% rename from clouds/native-aws-lambda/micronaut-cli.yml rename to native-image/clouds/native-aws-lambda/micronaut-cli.yml diff --git a/clouds/native-aws-lambda/mvnw b/native-image/clouds/native-aws-lambda/mvnw similarity index 100% rename from clouds/native-aws-lambda/mvnw rename to native-image/clouds/native-aws-lambda/mvnw diff --git a/clouds/native-aws-lambda/mvnw.cmd b/native-image/clouds/native-aws-lambda/mvnw.cmd similarity index 100% rename from clouds/native-aws-lambda/mvnw.cmd rename to native-image/clouds/native-aws-lambda/mvnw.cmd diff --git a/clouds/native-aws-lambda/pom.xml b/native-image/clouds/native-aws-lambda/pom.xml similarity index 100% rename from clouds/native-aws-lambda/pom.xml rename to native-image/clouds/native-aws-lambda/pom.xml diff --git a/clouds/native-aws-lambda/src/main/java/example/micronaut/HomeController.java b/native-image/clouds/native-aws-lambda/src/main/java/example/micronaut/HomeController.java similarity index 100% rename from clouds/native-aws-lambda/src/main/java/example/micronaut/HomeController.java rename to native-image/clouds/native-aws-lambda/src/main/java/example/micronaut/HomeController.java diff --git a/clouds/native-aws-lambda/src/main/resources/application.yml b/native-image/clouds/native-aws-lambda/src/main/resources/application.yml similarity index 100% rename from clouds/native-aws-lambda/src/main/resources/application.yml rename to native-image/clouds/native-aws-lambda/src/main/resources/application.yml diff --git a/clouds/native-aws-lambda/src/main/resources/logback.xml b/native-image/clouds/native-aws-lambda/src/main/resources/logback.xml similarity index 100% rename from clouds/native-aws-lambda/src/main/resources/logback.xml rename to native-image/clouds/native-aws-lambda/src/main/resources/logback.xml diff --git a/clouds/native-aws-lambda/src/test/java/example/micronaut/HomeControllerTest.java b/native-image/clouds/native-aws-lambda/src/test/java/example/micronaut/HomeControllerTest.java similarity index 100% rename from clouds/native-aws-lambda/src/test/java/example/micronaut/HomeControllerTest.java rename to native-image/clouds/native-aws-lambda/src/test/java/example/micronaut/HomeControllerTest.java diff --git a/clouds/native-google-cloud-run/.mvn/wrapper/maven-wrapper.properties b/native-image/clouds/native-google-cloud-run/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from clouds/native-google-cloud-run/.mvn/wrapper/maven-wrapper.properties rename to native-image/clouds/native-google-cloud-run/.mvn/wrapper/maven-wrapper.properties diff --git a/clouds/native-google-cloud-run/README.md b/native-image/clouds/native-google-cloud-run/README.md similarity index 100% rename from clouds/native-google-cloud-run/README.md rename to native-image/clouds/native-google-cloud-run/README.md diff --git a/clouds/native-google-cloud-run/img/change billing.png b/native-image/clouds/native-google-cloud-run/img/change billing.png similarity index 100% rename from clouds/native-google-cloud-run/img/change billing.png rename to native-image/clouds/native-google-cloud-run/img/change billing.png diff --git a/clouds/native-google-cloud-run/img/curl.png b/native-image/clouds/native-google-cloud-run/img/curl.png similarity index 100% rename from clouds/native-google-cloud-run/img/curl.png rename to native-image/clouds/native-google-cloud-run/img/curl.png diff --git a/clouds/native-google-cloud-run/img/delete.png b/native-image/clouds/native-google-cloud-run/img/delete.png similarity index 100% rename from clouds/native-google-cloud-run/img/delete.png rename to native-image/clouds/native-google-cloud-run/img/delete.png diff --git a/clouds/native-google-cloud-run/img/deploy.png b/native-image/clouds/native-google-cloud-run/img/deploy.png similarity index 100% rename from clouds/native-google-cloud-run/img/deploy.png rename to native-image/clouds/native-google-cloud-run/img/deploy.png diff --git a/clouds/native-google-cloud-run/img/run deploy.png b/native-image/clouds/native-google-cloud-run/img/run deploy.png similarity index 100% rename from clouds/native-google-cloud-run/img/run deploy.png rename to native-image/clouds/native-google-cloud-run/img/run deploy.png diff --git a/clouds/native-google-cloud-run/micronaut-cli.yml b/native-image/clouds/native-google-cloud-run/micronaut-cli.yml similarity index 100% rename from clouds/native-google-cloud-run/micronaut-cli.yml rename to native-image/clouds/native-google-cloud-run/micronaut-cli.yml diff --git a/clouds/native-google-cloud-run/mvnw b/native-image/clouds/native-google-cloud-run/mvnw similarity index 100% rename from clouds/native-google-cloud-run/mvnw rename to native-image/clouds/native-google-cloud-run/mvnw diff --git a/clouds/native-google-cloud-run/mvnw.cmd b/native-image/clouds/native-google-cloud-run/mvnw.cmd similarity index 100% rename from clouds/native-google-cloud-run/mvnw.cmd rename to native-image/clouds/native-google-cloud-run/mvnw.cmd diff --git a/clouds/native-google-cloud-run/pom.xml b/native-image/clouds/native-google-cloud-run/pom.xml similarity index 100% rename from clouds/native-google-cloud-run/pom.xml rename to native-image/clouds/native-google-cloud-run/pom.xml diff --git a/clouds/native-google-cloud-run/src/main/java/example/micronaut/Application.java b/native-image/clouds/native-google-cloud-run/src/main/java/example/micronaut/Application.java similarity index 100% rename from clouds/native-google-cloud-run/src/main/java/example/micronaut/Application.java rename to native-image/clouds/native-google-cloud-run/src/main/java/example/micronaut/Application.java diff --git a/clouds/native-google-cloud-run/src/main/java/example/micronaut/HelloController.java b/native-image/clouds/native-google-cloud-run/src/main/java/example/micronaut/HelloController.java similarity index 100% rename from clouds/native-google-cloud-run/src/main/java/example/micronaut/HelloController.java rename to native-image/clouds/native-google-cloud-run/src/main/java/example/micronaut/HelloController.java diff --git a/clouds/native-google-cloud-run/src/main/resources/application.yml b/native-image/clouds/native-google-cloud-run/src/main/resources/application.yml similarity index 100% rename from clouds/native-google-cloud-run/src/main/resources/application.yml rename to native-image/clouds/native-google-cloud-run/src/main/resources/application.yml diff --git a/clouds/native-google-cloud-run/src/main/resources/logback.xml b/native-image/clouds/native-google-cloud-run/src/main/resources/logback.xml similarity index 100% rename from clouds/native-google-cloud-run/src/main/resources/logback.xml rename to native-image/clouds/native-google-cloud-run/src/main/resources/logback.xml diff --git a/clouds/native-google-cloud-run/src/test/java/example/micronaut/HelloControllerTest.java b/native-image/clouds/native-google-cloud-run/src/test/java/example/micronaut/HelloControllerTest.java similarity index 100% rename from clouds/native-google-cloud-run/src/test/java/example/micronaut/HelloControllerTest.java rename to native-image/clouds/native-google-cloud-run/src/test/java/example/micronaut/HelloControllerTest.java diff --git a/clouds/native-google-cloud-run/src/test/java/example/micronaut/MicronautguideTest.java b/native-image/clouds/native-google-cloud-run/src/test/java/example/micronaut/MicronautguideTest.java similarity index 100% rename from clouds/native-google-cloud-run/src/test/java/example/micronaut/MicronautguideTest.java rename to native-image/clouds/native-google-cloud-run/src/test/java/example/micronaut/MicronautguideTest.java diff --git a/clouds/native-oci-cloud-shell/.mvn/wrapper/maven-wrapper.properties b/native-image/clouds/native-oci-cloud-shell/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from clouds/native-oci-cloud-shell/.mvn/wrapper/maven-wrapper.properties rename to native-image/clouds/native-oci-cloud-shell/.mvn/wrapper/maven-wrapper.properties diff --git a/clouds/native-oci-cloud-shell/README-Cloud-Shell.md b/native-image/clouds/native-oci-cloud-shell/README-Cloud-Shell.md similarity index 100% rename from clouds/native-oci-cloud-shell/README-Cloud-Shell.md rename to native-image/clouds/native-oci-cloud-shell/README-Cloud-Shell.md diff --git a/clouds/native-oci-cloud-shell/README.md b/native-image/clouds/native-oci-cloud-shell/README.md similarity index 100% rename from clouds/native-oci-cloud-shell/README.md rename to native-image/clouds/native-oci-cloud-shell/README.md diff --git a/clouds/native-oci-cloud-shell/mvnw b/native-image/clouds/native-oci-cloud-shell/mvnw similarity index 100% rename from clouds/native-oci-cloud-shell/mvnw rename to native-image/clouds/native-oci-cloud-shell/mvnw diff --git a/clouds/native-oci-cloud-shell/mvnw.bat b/native-image/clouds/native-oci-cloud-shell/mvnw.bat similarity index 100% rename from clouds/native-oci-cloud-shell/mvnw.bat rename to native-image/clouds/native-oci-cloud-shell/mvnw.bat diff --git a/clouds/native-oci-cloud-shell/pom.xml b/native-image/clouds/native-oci-cloud-shell/pom.xml similarity index 100% rename from clouds/native-oci-cloud-shell/pom.xml rename to native-image/clouds/native-oci-cloud-shell/pom.xml diff --git a/clouds/native-oci-cloud-shell/src/main/java/com/gvm/samples/App.java b/native-image/clouds/native-oci-cloud-shell/src/main/java/com/gvm/samples/App.java similarity index 100% rename from clouds/native-oci-cloud-shell/src/main/java/com/gvm/samples/App.java rename to native-image/clouds/native-oci-cloud-shell/src/main/java/com/gvm/samples/App.java diff --git a/clouds/native-oci-cloud-shell/src/test/java/com/gvm/samples/AppTest.java b/native-image/clouds/native-oci-cloud-shell/src/test/java/com/gvm/samples/AppTest.java similarity index 100% rename from clouds/native-oci-cloud-shell/src/test/java/com/gvm/samples/AppTest.java rename to native-image/clouds/native-oci-cloud-shell/src/test/java/com/gvm/samples/AppTest.java diff --git a/clouds/native-oci-container-instances/.mvn/wrapper/maven-wrapper.properties b/native-image/clouds/native-oci-container-instances/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from clouds/native-oci-container-instances/.mvn/wrapper/maven-wrapper.properties rename to native-image/clouds/native-oci-container-instances/.mvn/wrapper/maven-wrapper.properties diff --git a/clouds/native-oci-container-instances/README.md b/native-image/clouds/native-oci-container-instances/README.md similarity index 100% rename from clouds/native-oci-container-instances/README.md rename to native-image/clouds/native-oci-container-instances/README.md diff --git a/clouds/native-oci-container-instances/img/actions public.png b/native-image/clouds/native-oci-container-instances/img/actions public.png similarity index 100% rename from clouds/native-oci-container-instances/img/actions public.png rename to native-image/clouds/native-oci-container-instances/img/actions public.png diff --git a/clouds/native-oci-container-instances/img/active container instance.png b/native-image/clouds/native-oci-container-instances/img/active container instance.png similarity index 100% rename from clouds/native-oci-container-instances/img/active container instance.png rename to native-image/clouds/native-oci-container-instances/img/active container instance.png diff --git a/clouds/native-oci-container-instances/img/container instances.png b/native-image/clouds/native-oci-container-instances/img/container instances.png similarity index 100% rename from clouds/native-oci-container-instances/img/container instances.png rename to native-image/clouds/native-oci-container-instances/img/container instances.png diff --git a/clouds/native-oci-container-instances/img/create container instance.png b/native-image/clouds/native-oci-container-instances/img/create container instance.png similarity index 100% rename from clouds/native-oci-container-instances/img/create container instance.png rename to native-image/clouds/native-oci-container-instances/img/create container instance.png diff --git a/clouds/native-oci-container-instances/img/create dynamic group.png b/native-image/clouds/native-oci-container-instances/img/create dynamic group.png similarity index 100% rename from clouds/native-oci-container-instances/img/create dynamic group.png rename to native-image/clouds/native-oci-container-instances/img/create dynamic group.png diff --git a/clouds/native-oci-container-instances/img/create policy.png b/native-image/clouds/native-oci-container-instances/img/create policy.png similarity index 100% rename from clouds/native-oci-container-instances/img/create policy.png rename to native-image/clouds/native-oci-container-instances/img/create policy.png diff --git a/clouds/native-oci-container-instances/img/create security group.png b/native-image/clouds/native-oci-container-instances/img/create security group.png similarity index 100% rename from clouds/native-oci-container-instances/img/create security group.png rename to native-image/clouds/native-oci-container-instances/img/create security group.png diff --git a/clouds/native-oci-container-instances/img/delete VCN.png b/native-image/clouds/native-oci-container-instances/img/delete VCN.png similarity index 100% rename from clouds/native-oci-container-instances/img/delete VCN.png rename to native-image/clouds/native-oci-container-instances/img/delete VCN.png diff --git a/clouds/native-oci-container-instances/img/delete instance.png b/native-image/clouds/native-oci-container-instances/img/delete instance.png similarity index 100% rename from clouds/native-oci-container-instances/img/delete instance.png rename to native-image/clouds/native-oci-container-instances/img/delete instance.png diff --git a/clouds/native-oci-container-instances/img/delete repository.png b/native-image/clouds/native-oci-container-instances/img/delete repository.png similarity index 100% rename from clouds/native-oci-container-instances/img/delete repository.png rename to native-image/clouds/native-oci-container-instances/img/delete repository.png diff --git a/clouds/native-oci-container-instances/img/hello world.png b/native-image/clouds/native-oci-container-instances/img/hello world.png similarity index 100% rename from clouds/native-oci-container-instances/img/hello world.png rename to native-image/clouds/native-oci-container-instances/img/hello world.png diff --git a/clouds/native-oci-container-instances/img/select image.png b/native-image/clouds/native-oci-container-instances/img/select image.png similarity index 100% rename from clouds/native-oci-container-instances/img/select image.png rename to native-image/clouds/native-oci-container-instances/img/select image.png diff --git a/clouds/native-oci-container-instances/img/shape.png b/native-image/clouds/native-oci-container-instances/img/shape.png similarity index 100% rename from clouds/native-oci-container-instances/img/shape.png rename to native-image/clouds/native-oci-container-instances/img/shape.png diff --git a/clouds/native-oci-container-instances/micronaut-cli.yml b/native-image/clouds/native-oci-container-instances/micronaut-cli.yml similarity index 100% rename from clouds/native-oci-container-instances/micronaut-cli.yml rename to native-image/clouds/native-oci-container-instances/micronaut-cli.yml diff --git a/clouds/native-oci-container-instances/mvnw b/native-image/clouds/native-oci-container-instances/mvnw similarity index 100% rename from clouds/native-oci-container-instances/mvnw rename to native-image/clouds/native-oci-container-instances/mvnw diff --git a/clouds/native-oci-container-instances/mvnw.cmd b/native-image/clouds/native-oci-container-instances/mvnw.cmd similarity index 100% rename from clouds/native-oci-container-instances/mvnw.cmd rename to native-image/clouds/native-oci-container-instances/mvnw.cmd diff --git a/clouds/native-oci-container-instances/pom.xml b/native-image/clouds/native-oci-container-instances/pom.xml similarity index 100% rename from clouds/native-oci-container-instances/pom.xml rename to native-image/clouds/native-oci-container-instances/pom.xml diff --git a/clouds/native-oci-container-instances/src/main/java/example/micronaut/Application.java b/native-image/clouds/native-oci-container-instances/src/main/java/example/micronaut/Application.java similarity index 100% rename from clouds/native-oci-container-instances/src/main/java/example/micronaut/Application.java rename to native-image/clouds/native-oci-container-instances/src/main/java/example/micronaut/Application.java diff --git a/clouds/native-oci-container-instances/src/main/java/example/micronaut/HelloController.java b/native-image/clouds/native-oci-container-instances/src/main/java/example/micronaut/HelloController.java similarity index 100% rename from clouds/native-oci-container-instances/src/main/java/example/micronaut/HelloController.java rename to native-image/clouds/native-oci-container-instances/src/main/java/example/micronaut/HelloController.java diff --git a/clouds/native-oci-container-instances/src/main/resources/application.yml b/native-image/clouds/native-oci-container-instances/src/main/resources/application.yml similarity index 100% rename from clouds/native-oci-container-instances/src/main/resources/application.yml rename to native-image/clouds/native-oci-container-instances/src/main/resources/application.yml diff --git a/clouds/native-oci-container-instances/src/main/resources/logback.xml b/native-image/clouds/native-oci-container-instances/src/main/resources/logback.xml similarity index 100% rename from clouds/native-oci-container-instances/src/main/resources/logback.xml rename to native-image/clouds/native-oci-container-instances/src/main/resources/logback.xml diff --git a/clouds/native-oci-container-instances/src/test/java/example/micronaut/HelloControllerTest.java b/native-image/clouds/native-oci-container-instances/src/test/java/example/micronaut/HelloControllerTest.java similarity index 100% rename from clouds/native-oci-container-instances/src/test/java/example/micronaut/HelloControllerTest.java rename to native-image/clouds/native-oci-container-instances/src/test/java/example/micronaut/HelloControllerTest.java diff --git a/clouds/native-oci-container-instances/src/test/java/example/micronaut/MicronautguideTest.java b/native-image/clouds/native-oci-container-instances/src/test/java/example/micronaut/MicronautguideTest.java similarity index 100% rename from clouds/native-oci-container-instances/src/test/java/example/micronaut/MicronautguideTest.java rename to native-image/clouds/native-oci-container-instances/src/test/java/example/micronaut/MicronautguideTest.java diff --git a/clouds/native-oci-generative-ai/README.md b/native-image/clouds/native-oci-generative-ai/README.md similarity index 100% rename from clouds/native-oci-generative-ai/README.md rename to native-image/clouds/native-oci-generative-ai/README.md diff --git a/clouds/native-oci-generative-ai/pom.xml b/native-image/clouds/native-oci-generative-ai/pom.xml similarity index 100% rename from clouds/native-oci-generative-ai/pom.xml rename to native-image/clouds/native-oci-generative-ai/pom.xml diff --git a/clouds/native-oci-generative-ai/src/main/java/com/oracle/labs/GenerateTextExample.java b/native-image/clouds/native-oci-generative-ai/src/main/java/com/oracle/labs/GenerateTextExample.java similarity index 100% rename from clouds/native-oci-generative-ai/src/main/java/com/oracle/labs/GenerateTextExample.java rename to native-image/clouds/native-oci-generative-ai/src/main/java/com/oracle/labs/GenerateTextExample.java From b0bcc4fcb427d5af64188b3f15aff4019066f871 Mon Sep 17 00:00:00 2001 From: Olya Gupalo Date: Thu, 19 Dec 2024 15:22:05 +0200 Subject: [PATCH 5/6] Add short description and link to each demo listed in main README --- README.md | 69 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index a44f2f70..d414bfa7 100644 --- a/README.md +++ b/README.md @@ -29,73 +29,74 @@ Example applications showcasing the capabilities of GraalVM Native Image, includ #### Build Demos for building native images, including configurations and setup steps for various use cases. -* [hello-world](native-image/hello-world/) - -* [build-from-jar](native-image/build-from-jar/) - -* [build-java-modules](native-image/build-java-modules/) - -* [build-shared-library](native-image/build-shared-library/) - -* [build-static-images](native-image/build-static-images/) - -* [build-with-js-embedded](native-image/build-with-js-embedded/) - -* [list-files](native-image/list-files/) - -* [native-build-tools](native-image/native-build-tools/) - +* [hello-world](native-image/hello-world/) - A HelloWorld example showing how to create a native executable from a class file +* [build-from-jar](native-image/build-from-jar/) - Shows how to create a JAR file without using Maven or Gradle, and build a native executable from that JAR +* [build-java-modules](native-image/build-java-modules/) - Shows how to compile a modularized Java application into a native executable without using Maven or Gradle +* [build-shared-library](native-image/build-shared-library/) - Shows how build a native shared library and then load it from a C application +* [build-static-images](native-image/build-static-images/) - Shows how to create a fully static and a mostly-static native executable, unlike the default dynamic one +* [build-with-js-embedded](native-image/build-with-js-embedded/) - Shows how to embedded JavaScript into a Java application, and then compile it ahead of time +* [list-files](native-image/list-files/) - Shows how to create a native executable from the command line, and then apply Profile-Guided Optimization (PGO) +* [native-build-tools](native-image/native-build-tools/) - Contains two Java projects, and shows how to create native executables from those applications using [Maven](https://graalvm.github.io/native-build-tools/latest/maven-plugin.html) and [Gradle](https://graalvm.github.io/native-build-tools/latest/gradle-plugin.html) plugins for GraalVM Native Image #### Benchmark Performance measurement demos for Native Image. -* [jmh/binary-tree](native-image/benchmark/jmh/binary-tree/) - +* [jmh/binary-tree](native-image/benchmark/jmh/binary-tree/) - Shows how to run a Java Microbenchmark Harness (JMH) benchmark as a native executable #### Clouds Demos showcasing the building and deployment of native applications to Oracle Cloud Infrastructure (OCI), AWS, and Google Cloud. -* [native-aws-fargate](native-image/clouds/native-aws-fargate/) - -* [native-aws-lambda](native-image/clouds/native-aws-lambda/) - -* [native-google-cloud-run](native-image/clouds/native-google-cloud-run/) - -* [native-oci-cloud-shell](native-image/clouds/native-oci-cloud-shell/) - -* [native-oci-container-instances](native-image/clouds/native-oci-container-instances/) - -* [native-oci-generative-ai](native-image/clouds/native-oci-generative-ai/) - +* [native-aws-fargate](native-image/clouds/native-aws-fargate/) - Shows how to containerize a native Java application and then deploy it using the Amazon Elastic Container Registry and AWS Fargate +* [native-aws-lambda](native-image/clouds/native-aws-lambda/) - Demonstrates how to deploy both Java 17 and Native Image applications onto the AWS Lambda platform +* [native-google-cloud-run](native-image/clouds/native-google-cloud-run/) - Demonstrates how to deploy a native Java application onto the Google Cloud Run platform +* [native-oci-cloud-shell](native-image/clouds/native-oci-cloud-shell/) - Shows how to get started quickly with Oracle GraalVM and use Native Image in Oracle Cloud Infrastructure (OCI) Cloud Shell +* [native-oci-container-instances](native-image/clouds/native-oci-container-instances/) - Shows how to containerize a native Java application and then deploy it on OCI using the Container Instance service +* [native-oci-generative-ai](native-image/clouds/native-oci-generative-ai/) - Demonstrates how to use the OCI Generative AI service provided in a Java application, and then compile it ahead of time with Maven #### Configure +Demos illustrating how to compile applications with Native Image that use some dynamic Java features including reflection, resource access, and so on. -* [access-environment-variables](native-image/access-environment-variables/) - -* [configure-with-tracing-agent](native-image/configure-with-tracing-agent/) - -* [include-metadata](native-image/include-metadata/) - -* [include-resources](native-image/include-resources/) - -* [specify-class-init](native-image/specify-class-init/) - -* [use-system-properties](native-image/use-system-properties/) - +* [access-environment-variables](native-image/access-environment-variables/) - Showing how to access environment variables in a native executable at run time +* [configure-with-tracing-agent](native-image/configure-with-tracing-agent/) - Demonstrate how to use the tracing agent to create a native executable that relies on reflection and requires configuration +* [include-metadata](native-image/include-metadata/) - Contains Maven and Gradle Java projects and demonstrates how to include reachability metadata using [Native Build Tools](https://graalvm.github.io/native-build-tools/) +* [include-resources](native-image/include-resources/) - Demonstrates how to register resources to be included in a native executable by providing a resource configuration file +* [specify-class-init](native-image/specify-class-init/) - Demonstrates how to influence the default class initialization policy, and initialize a specific class at build time +* [use-system-properties](native-image/use-system-properties/) - Demonstrates how to use system properties in a native executable at build time versus at run time #### Containerize Demos focusing on containerizing native Java applications and following best practices. -* [spring-boot-microservice-jibber](native-image/containerize/spring-boot-microservice-jibber/) - -* [tiny-java-containers](native-image/containerize/tiny-java-containers/) - +* [spring-boot-microservice-jibber](native-image/containerize/spring-boot-microservice-jibber/) - Demonstrates how to create a native executable for a Spring Boot web server, containerize it, and run +* [tiny-java-containers](native-image/containerize/tiny-java-containers/) - Shows how a simple Java application and the `jdk.httpserver` module can be compiled to produce small container images #### Monitor Demos showcasing how to monitor native applications using observability and diagnostics tools. -* [add-jfr](native-image/add-jfr/) - -* [add-jmx](native-image/add-jmx/) - -* [add-logging](native-image/add-logging/) - -* [create-heap-dump](native-image/create-heap-dumps/) - -* [embed-sbom](native-image/embed-sbom/) - +* [add-jfr](native-image/add-jfr/) - Shows how to build a native executable with JDK Flight Recorder (JFR) events support +* [add-jmx](native-image/add-jmx/) - Shows how to build, run, and interact with a native executable using Java Management Extensions (JMX) +* [add-logging](native-image/add-logging/) - Demonstrates how add logging to a native executable by providing necessary logging configuration +* [create-heap-dump](native-image/create-heap-dumps/) - Shows how to enable heap dump support and describes all possible ways how to create a heap dump from a native executable +* [embed-sbom](native-image/embed-sbom/) - Demonstrates how to embed an SBOM in a native executable to identify its dependencies #### Microservices Demos for building microservices ahead of time using frameworks such as Micronaut and Spring Boot. -* [micronaut-hello-rest-gradle](native-image/microservices/micronaut-hello-rest-gradle) - -* [micronaut-hello-rest-maven](native-image/microservices/micronaut-hello-rest-maven) - +* [micronaut-hello-rest-gradle](native-image/microservices/micronaut-hello-rest-gradle) - Demonstrates how to build a native executable from a Micronaut application using [Grade plugin for Native Image](https://graalvm.github.io/native-build-tools/latest/gradle-plugin.html) +* [micronaut-hello-rest-maven](native-image/microservices/micronaut-hello-rest-maven) - Demonstrates how to build a native executable from a Micronaut application using [Maven plugin for Native Image](https://graalvm.github.io/native-build-tools/latest/maven-plugin.html) #### Optimize Demos optimizing native applications for different criteria (runtime and performance tuning, file size, build time, and more). -* [emit-build-report](native-image/emit-build-report/) - -* [optimize-memory](native-image/optimize-memory/) - -* [optimize-with-pgo](native-image/optimize-with-pgo/) - +* [emit-build-report](native-image/emit-build-report/) - Shows how to optimize Size of a native executable using Build Reports +* [optimize-memory](native-image/optimize-memory/) - Shows how to optimize memory footprint of a native executable +* [optimize-with-pgo](native-image/optimize-with-pgo/) - Shows how to optimize a native executable with Profile-Guided Optimization (PGO) for performance and throughput ## Compiler Demos Demos designed to test and showcase the capabilities of the Graal Just-In-Time (JIT) compiler. These examples focus on evaluating the compiler's performance, including its optimizations for modern Java workloads. -* - [java-stream-benchmark](compiler/java-stream-benchmark/) +* - [java-stream-benchmark](compiler/java-stream-benchmark/) - A simple Java Stream benchmark to test the Graal JIT compiler performance against C2 ## Archived Demos From be0f6acc73988487f805c83fd421712681924c03 Mon Sep 17 00:00:00 2001 From: Olya Gupalo Date: Thu, 19 Dec 2024 16:27:33 +0200 Subject: [PATCH 6/6] Follow feedback --- README.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index d414bfa7..68cd197d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # GraalVM Demos This repository contains a collection of example applications that highlight key features and best practices for working with GraalVM technologies. -The demos are organized into categories for easier navigation. ## Get Started @@ -13,7 +12,7 @@ git clone https://github.com/graalvm/graalvm-demos.git cd graalvm-demos ``` -You will find instructions for running a particular demo in the corresponding _README.md_ file. Some demos may also redirect you to a specific guide on the [GraalVM website](https://www.graalvm.org/latest/guides/). +You will find instructions for running a particular demo in the corresponding _README.md_ file. Some demos redirect you to a specific guide on the [GraalVM website](https://www.graalvm.org/latest/guides/). ## Graal Languages Demos @@ -96,18 +95,12 @@ Demos optimizing native applications for different criteria (runtime and perform Demos designed to test and showcase the capabilities of the Graal Just-In-Time (JIT) compiler. These examples focus on evaluating the compiler's performance, including its optimizations for modern Java workloads. -* - [java-stream-benchmark](compiler/java-stream-benchmark/) - A simple Java Stream benchmark to test the Graal JIT compiler performance against C2 +* [java-stream-benchmark](compiler/java-stream-benchmark/) - A simple Java Stream benchmark to test the Graal JIT compiler performance against C2 ## Archived Demos Legacy or blog-related demos, as well as examples involving polyglot capabilities. -## Compatibility - -The demos are standard Java applications and benchmarks, compatible with any virtual machine capable of running Java. -They are [tested against the latest GraalVM LTS release and the GraalVM Early Access build using GitHub Actions](https://github.com/graalvm/graalvm-demos/tree/master/.github/workflows), with the exception of archived examples. -If you come across an issue, please submit it [here](https://github.com/graalvm/graalvm-demos/issues). - ## License Unless specified otherwise, all code in this repository is licensed under the [Universal Permissive License (UPL)](http://opensource.org/licenses/UPL). \ No newline at end of file