https://github.com/fugerit-org/graalkus
Graalkus: Let Quarkus fly high with GraalVM.
https://github.com/fugerit-org/graalkus
container docker graalvm graalvm-native-image java quarkus
Last synced: about 1 year ago
JSON representation
Graalkus: Let Quarkus fly high with GraalVM.
- Host: GitHub
- URL: https://github.com/fugerit-org/graalkus
- Owner: fugerit-org
- License: mit
- Created: 2024-11-30T08:49:59.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-01T06:42:57.000Z (about 1 year ago)
- Last Synced: 2025-05-01T07:23:42.372Z (about 1 year ago)
- Topics: container, docker, graalvm, graalvm-native-image, java, quarkus
- Language: Shell
- Homepage: https://graalkus.fugerit.org/
- Size: 14.9 MB
- Stars: 4
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# graalkus
[](https://github.com/fugerit-org/graalkus/blob/master/CHANGELOG.md)
[](https://opensource.org/license/mit)
[](https://github.com/fugerit-org/fj-universe/blob/main/CODE_OF_CONDUCT.md)
[](https://sonarcloud.io/summary/new_code?id=fugerit-org_graalkus)
[](https://sonarcloud.io/summary/new_code?id=fugerit-org_graalkus)
[](https://hub.docker.com/repository/docker/fugeritorg/graalkus/general)
[](https://universe.fugerit.org/src/docs/versions/java21.html)
[](https://universe.fugerit.org/src/docs/versions/gvm21.html)
[](https://universe.fugerit.org/src/docs/versions/maven3_9.html)
## Documentation
NOTE: The documentation (HTML, PDF and slides) is produced with a doc-as-code approach. Only my IDE and GIT have been used. No office automation tools were harmed in the making of this project 😉.
[Here you can find project documentation index](https://graalkus.fugerit.org/) published through GitHub pages.
Introduction slides are available thanks to [Slidev](https://sli.dev/) :
[](https://graalkus.fugerit.org/graalkus-slidev/ "Go to project Slideshow")
While [AsciiDoc](https://asciidoc.org/) full documentation is here :
[](https://graalkus.fugerit.org/book/ "Go to project HTML documentation")
[](https://graalkus.fugerit.org/book/graalkus.pdf "Go to project PDF documentation")
## Quickstart
Requirement :
* maven 3.9.x
* java 21+ (GraalVM for native version)
NOTE: All benchmarks has been run on Oracle GraalVM 23.
1. Verify the app
```shell
mvn verify
```
2. Start the app
```shell
mvn quarkus:dev
```
3. Try the app
Open the [swagger-ui](http://localhost:8080/q/swagger-ui/)
Test available paths (for instance : [/doc/example.md](http://localhost:8080/doc/example.md))
## Native version
If you picked only native modules, you should be able to build and run the AOT version (GraalVM 21+ needed).
Further documentation :
* [List of modules and native support](https://venusdocs.fugerit.org/guide/#available-extensions)
* [Fugerit Venus Doc native support introduction](https://venusdocs.fugerit.org/guide/#doc-native-support)
1. Build and verify
```shell
mvn package -Dnative
```
2. Start
```shell
./target/graalkus-*-runner
```
## Container deployment
Requirement :
* Container environment (Docker or Podman)
> Note: It is recommended to install the latest versions of [Docker Desktop](https://www.docker.com/products/docker-desktop/) or [Podman Desktop](https://podman-desktop.io/).
Pick a docker compose file (inside the [src/main/docker](src/main/docker)) and run by using docker compose or podman compose. Se example below:
```shell
# If you have a docker environment
# This syntax of docker compose is available from then Docker Desktop 3.4
docker compose -f src/main/docker/docker-compose.yml up -d
# If you have a podman environment
# This syntax of podman compose is available from the Podman 4.0
podman compose -f src/main/docker/docker-compose.yml up -d
```
NOTE: both amd64 and arm64 (including macOS) [pre-built images](https://hub.docker.com/r/fugeritorg/graalkus) are available.
## Run benchmark with siege
Requirement :
* siege
* psrecord (optional for plotting)
Start the application and run :
```shell
./src/main/script/bench-graph-siege.sh
```
The result output file is in the `target` directory.
## Run benchmark with h2load
Requirement :
* h2load
* psrecord (optional for plotting)
Start the application and run :
```shell
./src/main/script/bench-graph-h2-load.sh
```
The result output file is in the `target` directory.
## Run benchmark on different url
Default for benchmark is to run on http://localhost:8080.
To run on a different url use the -u parameter, for instance :
```shell
./src/main/script/bench-graph-h2-load.sh -u http://localhost:8081
```
The result output file is in the `target` directory.
## Run benchmark with plotting
To run benchmark with plotting, psrecord should be installed.
Build the application without launching it, and run :
```shell
mvn install -Dnative
./src/main/script/bench-graph-h2-load.sh -m AOT
```
or
```shell
mvn package
./src/main/script/bench-graph-h2-load.sh -m JIT
```
The result output file is in the `target` directory.
## Build the documentation
Requirement :
* NodeJS 20+
* Mermaid CLI
### AsciiDoc documentation
[AsciiDoc](https://asciidoc.org/) source folder is located at :
[src/main/docs/asciidoc](src/main/docs/asciidoc)
It is possible to build HTML and PDF documentation running :
```shell
mvn install -Pdocs
```
Output will be in `target/site` directory.
### Slidev slideshow
[Slidev](https://sli.dev/) source folder is located at :
[src/main/docs/slidev/graalkus](src/main/docs/slidev/graalkus)
To run the slideshow in dev mode just :
```shell
cd src/main/docs/slidev/graalkus
npm install
npm run dev
```
For a production build :
```shell
mvn clean install -Pslidev
serve src/main/docs/slidev/graalkus
```