diff --git a/.github/workflows/js-java-async-helidon.yml b/.github/workflows/archive-js-java-async-helidon.yml similarity index 61% rename from .github/workflows/js-java-async-helidon.yml rename to .github/workflows/archive-js-java-async-helidon.yml index ff4515afe..4a6e53cd4 100644 --- a/.github/workflows/js-java-async-helidon.yml +++ b/.github/workflows/archive-js-java-async-helidon.yml @@ -1,21 +1,19 @@ -name: js-java-async-helidon +name: archive/js-java-async-helidon on: push: paths: - - 'js-java-async-helidon/**' - - '.github/workflows/js-java-async-helidon.yml' + - 'archive/js-java-async-helidon/**' + - '.github/workflows/archive-js-java-async-helidon.yml' pull_request: paths: - - 'js-java-async-helidon/**' - - '.github/workflows/js-java-async-helidon.yml' - schedule: - - cron: "0 0 1 * *" # run every month + - 'archive/js-java-async-helidon/**' + - '.github/workflows/archive-js-java-async-helidon.yml' workflow_dispatch: permissions: contents: read jobs: run: - name: Run 'js-java-async-helidon' + name: Run 'archive/js-java-async-helidon' runs-on: ubuntu-latest timeout-minutes: 15 steps: @@ -26,9 +24,9 @@ jobs: distribution: 'graalvm' github-token: ${{ secrets.GITHUB_TOKEN }} cache: 'maven' - - name: Run 'js-java-async-helidon' + - name: Run 'archive/js-java-async-helidon' run: | - cd js-java-async-helidon + cd archive/js-java-async-helidon mvn --no-transfer-progress clean package mvn exec:exec & sleep 10 diff --git a/README.md b/README.md index 87b0ab9f6..ab70e8ae4 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,7 @@ cd graalvm-demos -### Helidon +### Scala @@ -181,8 +181,8 @@ cd graalvm-demos - - + +
js-java-async-helidon
js-java-async-helidon
An HTTP web service that demonstrates how multiple JavaScript contexts can be executed in parallel to handle asynchronous operations with Helidon in Java
Technologies: Native Image, Helidon, Native Build Tools Maven plugin
Reference: Asynchronous Polyglot Programming in GraalVM Using Helidon and JavaScript
scalac-nativeDemonstrates how to build a native executable of the Scala compiler. The resulting binary has no dependencies on the JDK.
Technologies: Scala 2.12.x, Native Image
Reference: Compiling Scala Faster with GraalVM
diff --git a/js-java-async-helidon/README.md b/archive/js-java-async-helidon/README.md similarity index 76% rename from js-java-async-helidon/README.md rename to archive/js-java-async-helidon/README.md index df85461d2..624275618 100644 --- a/js-java-async-helidon/README.md +++ b/archive/js-java-async-helidon/README.md @@ -2,14 +2,11 @@ This is a polyglot Helidon HTTP web service that demonstrates how multiple JavaScript `Context`s can be executed in parallel to handle asynchronous operations with [Helidon](https://helidon.io/), mixing JavaScript `Promise` and Java `CompletableFuture` objects. -## Prerequisites -* [GraalVM](http://graalvm.org) - ## Preparation 1. Download and install the latest GraalVM JDK using [SDKMAN!](https://sdkman.io/). ```bash - sdk install java 21.0.1-graal + sdk install java 21.0.5-graal ``` 2. Download or clone the repository and navigate into the `js-java-async-helidon` directory: @@ -17,7 +14,7 @@ This is a polyglot Helidon HTTP web service that demonstrates how multiple JavaS git clone https://github.com/graalvm/graalvm-demos ``` ```bash - cd graalvm-demos/js-java-async-helidon + cd graalvm-demos/archive/js-java-async-helidon ``` 3. Build the application using Maven: @@ -25,22 +22,24 @@ This is a polyglot Helidon HTTP web service that demonstrates how multiple JavaS mvn clean package ``` -Now you are all set to run the polyglot Helidon Web service. +Now you are all set to run the polyglot Helidon web service. ## Running the Application -You can run this Helidon HTTP web service with the following command: +You can run this Helidon application with the following command: ```bash mvn exec:exec ``` -The application will create a new HTTP web service accepting requests on port `8080`. +The application accepts requests on port `8080`. Open [http://localhost:8080/greet?request=42](http://localhost:8080/greet?request=42) in the browser to send a request. To demonstrate error handling, the application will not accept requests with `request` smaller than `42`. For example, the following requests will return an error message: ```bash curl http://localhost:8080/greet?request=41 +``` +```bash curl http://localhost:8080/greet?request=foo ``` @@ -56,3 +55,5 @@ wrk -c 100 -t 10 -d 100 http://localhost:8080/greet?request=42 This is a sample application that, for brevity, contains reasonably large snippets of code inside the strings. This is not the best approach for structuring polyglot apps, but the easiest to show in a compact way. + +Read more about asynchronous programming across multiple languages in this post [Asynchronous polyglot programming with Java and JavaScript on GraalVM](https://medium.com/graalvm/asynchronous-polyglot-programming-in-graalvm-javascript-and-java-2c62eb02acf0). \ No newline at end of file diff --git a/js-java-async-helidon/pom.xml b/archive/js-java-async-helidon/pom.xml similarity index 100% rename from js-java-async-helidon/pom.xml rename to archive/js-java-async-helidon/pom.xml diff --git a/js-java-async-helidon/src/main/java/module-info.java b/archive/js-java-async-helidon/src/main/java/module-info.java similarity index 100% rename from js-java-async-helidon/src/main/java/module-info.java rename to archive/js-java-async-helidon/src/main/java/module-info.java diff --git a/js-java-async-helidon/src/main/java/org/graalvm/demo/ConcurrentJsExecutor.java b/archive/js-java-async-helidon/src/main/java/org/graalvm/demo/ConcurrentJsExecutor.java similarity index 100% rename from js-java-async-helidon/src/main/java/org/graalvm/demo/ConcurrentJsExecutor.java rename to archive/js-java-async-helidon/src/main/java/org/graalvm/demo/ConcurrentJsExecutor.java diff --git a/js-java-async-helidon/src/main/java/org/graalvm/demo/HelidonService.java b/archive/js-java-async-helidon/src/main/java/org/graalvm/demo/HelidonService.java similarity index 100% rename from js-java-async-helidon/src/main/java/org/graalvm/demo/HelidonService.java rename to archive/js-java-async-helidon/src/main/java/org/graalvm/demo/HelidonService.java diff --git a/js-java-async-helidon/src/main/java/org/graalvm/demo/JsJavaAsyncHelidonService.java b/archive/js-java-async-helidon/src/main/java/org/graalvm/demo/JsJavaAsyncHelidonService.java similarity index 100% rename from js-java-async-helidon/src/main/java/org/graalvm/demo/JsJavaAsyncHelidonService.java rename to archive/js-java-async-helidon/src/main/java/org/graalvm/demo/JsJavaAsyncHelidonService.java