# Environment setup

## Overview

Joule is designed to operate with the latest available releases of dependencies and tools, ensuring it incorporates the most current technologies and industry-standard bug fixes.

To get started, ensure you have the necessary prerequisites, including **Java Development Kit (JDK),** **Git** and your preferred scripting language. Use **Gradle** only when you move to building new functionalities in Joule.

For advanced options, consider using **GraalVM** to enable multi-language support within Joule.

## Requirements break down

### JDK

{% hint style="info" %}
Joule works with version 23 of the OpenJDK. **Any other lower version will not work with Joule.**
{% endhint %}

Preferred implementation [GraalVM CE 23.0.1](https://www.oracle.com/java/technologies/javase/graalvm-jdk23-archive-downloads.html). Using GraalVM is optional but is strongly recommended to take advantage of user defined expressions and language support.

GraalVM offers enhanced performance for applications and enables multi-language support, which can be beneficial for using dynamic scripting languages within Joule.

```bash
openjdk version "23.0.1" 2024-10-15
OpenJDK Runtime Environment GraalVM CE 23.0.1+11.1 (build 23.0.1+11-jvmci-b01)
OpenJDK 64-Bit Server VM GraalVM CE 23.0.1+11.1 (build 23.0.1+11-jvmci-b01, mixed mode, sharing)
```

### Gradle

Install [Gradle 9.0.0 ](https://docs.gradle.org/current/userguide/installation.html#installation)

Gradle is required to manage Joule’s build lifecycle. It provides build automation for multi-language applications, enhancing the overall development process.

```bash
------------------------------------------------------------
Gradle 9.0.0
------------------------------------------------------------

Build time:    2025-07-31 16:35:12 UTC
Revision:      328772c6bae126949610a8beb59cb227ee580241

Kotlin:        2.2.0
Groovy:        4.0.27
Ant:           Apache Ant(TM) version 1.10.15 compiled on August 25 2024
Launcher JVM:  23.0.1 (Oracle Corporation 23.0.1+11-jvmci-b01)
Daemon JVM:    /Users/lyndon/tools/graalvm-jdk-23.0.1+11.1/Contents/Home (no JDK specified, using current Java home)
OS:            Mac OS X 15.6 aarch64
```

### Git

[Git is essential for cloning and managing](https://docs.gitlab.com/ee/topics/git/how_to_install_git/) Joule repositories. Ensure you have the latest version installed to avoid compatibility issues with repository operations.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fractalworks.io/joule/developer-guides/setting-up-developer-environment/environment-setup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
