# Installation and requirements

> Set up the JDK and Gradle and add CrossFly to your project — start with the desktop.

Source: https://crossfly.dev/docs/get-started/installation — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# Installation and requirements

In a few minutes you'll have the environment ready to run on the **desktop** — the fastest way to
get started (quick iteration, no emulator).

## Prerequisites
- **JDK 17** (LTS). Check:
  ```bash
  java -version
  ```
- **Gradle** — or just use the *wrapper* included in the project (`gradlew`):
  ```bash
  ./gradlew --version
  ```

## Project structure
A CrossFly app is a **multi-module Gradle** project: a **`core`** module (your UI and logic) + a
**per-platform launcher**. Add the CrossFly dependency to `core` and include the launcher for the target
you want to run:
```
:core     → seu código (Windows, componentes) + dependência do CrossFly
:lwjgl3   → launcher desktop (comece por aqui)
:android  :ios  :web   → demais alvos
```
The exact dependency coordinates (`dev.crossfly:crossfly-core` + version) and those of the launchers come from
the model project's `build.gradle` — keep them as defined in the repository template.

## Requirements per platform
| Target | Needs |
|---|---|
| 🖥️ Desktop (LWJGL3) | just the JDK — **start here** |
| 🤖 Android | Android SDK/NDK |
| 🍎 iOS | **macOS + Xcode** |
| 🌐 Web (TeaVM) | a browser (WebGL2) |

> **Native library:** each platform bundles the `crossfly-lib` (JNI), loaded at startup (except
> on WebGL). On the desktop, it must be on the `java.library.path` (see [Desktop](/docs/platforms/desktop-lwjgl3)).

## Why start with the desktop
The desktop gives the **shortest compile→run cycle** (seconds, no emulator). You validate the UI there and only
move to mobile once the screen is ready.

## Next steps
→ [Quickstart: Hello World in ~10 min](/docs/get-started/quickstart)

## See also
- Canonical source: Chapter 4 — Bootstrap and Lifecycle · [Platforms](/docs/platforms)
