Build GPU-composed UIs in pure Java — no CSS, no XML, no runtime parser.
Welcome to JOID, a flexible component-based UI toolkit for LWJGL 2 made for developers who want to own their rendering path and ship interfaces that stand out. No default theme, no stylesheet dialect to fight — the code you write is the layout the GPU draws.
Under the hood: a retained-mode node tree, reactive signals that only notify the nodes watching them, a composable shader pipeline for custom GL effects, and a Bridge interface that drops the library into any OpenGL host — games, tools, editors, overlays.
No DSL to learn, no scene-graph format to serialize, no runtime engine to boot. Just chainable Java classes and a compiler that catches UI bugs the way it catches everything else — rename a node and every reference follows, wire the wrong signal type and you get a build error instead of a silent runtime failure.
JOID is distributed via GitHub Releases as two artifacts:
- joid-X.Y.Z-prod.jar — production build (excludes dev/demo assets)
- joid-X.Y.Z-dev.jar — dev build (includes demo assets, fonts, demo textures)
Download the desired artifact from the Releases page and add it to your project's classpath.
dependencies {
compile files('libs/joid-6.5.4-prod.jar')
}<dependency>
<groupId>be.zeldown.joid</groupId>
<artifactId>joid</artifactId>
<version>6.5.4</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/joid-6.5.4-prod.jar</systemPath>
</dependency>The repository contains a native/ folder with the required OpenGL and OpenAL native libraries. Make sure they are exposed to the JVM via -Djava.library.path=./native at launch.
- 🧱 Node-based UI — Hierarchical component system with layout nodes (flex, grid, scrollbar, container) and design nodes (shapes, text, images, text fields, sliders, charts, video…)
- 🎨 MSDF font rendering — Crisp text at any scale using Multi-channel Signed Distance Fields
- 🌈 Shader pipeline — Composable multi-pass GL effects: blur, border, gradient, circle, rounded corners
- ✨ Tween animations — Full Universal Tween Engine integration (easing, paths, timelines, callbacks)
- 🎯 Reactive signals — Observable values with conditional watches that auto-reload nodes
- 💾 Persistent stores —
@UIStoreData-annotated fields auto-serialized to JSON - 🎬 Video playback —
VideoPlayerNodewith FFmpeg-backed decoding (MP4/MOV/WEBM/MKV/AVI/GIF/APNG) - 🔌 Bridge pattern — Host-agnostic integration via
IUIBridge
Full reference · Searchable (Ctrl+K) · English & French · Per-page PDF export
Offline: the site is self-contained in the documentation/ folder. Serve it with any static HTTP server (cd documentation && npx serve . or python -m http.server 3000) — opening index.html via file:// won't work because pages load through fetch.
JOID is released under the JOID Community Source License v1.0 — a source-available, copyleft, non-commercial-by-default license.
Full text: LICENSE.md (English, authoritative) · LICENSE.fr.md (French, informational).
- Use JOID in any non-commercial project — general gameplay UIs (HUD, settings, scoreboard, inventory, chat, minimap, launcher, login screen), internal tools, open-source projects, and Minecraft servers that accept donations without building a shop on top of JOID.
- Fork, modify and redistribute the source, as long as modifications stay under the same license.
- Attribution — include a NOTICE entry in your project (repo root, about screen, partners page, Discord, or equivalent) that links back to the JOID repository.
- Share-alike — if you distribute or publicly host a modified JOID, publish your modifications under the same license within 90 days.
- No sublicensing, no reselling JOID itself, no white-label consulting that is primarily JOID repackaging.
Any UI whose primary purpose generates direct revenue (in-game shops, paid cosmetic selectors, donations tied to rewards, paid launcher features…) requires a written commercial agreement.
Request one via Discord DM to zeldown — see COMMERCIAL.md for the procedure (typical response time: 24–48h). The public record of granted licenses is kept in COMMERCIAL_GRANTS.md.
This summary is informational. The license text in LICENSE.md prevails in case of conflict.
- Universal Tween Engine by Aurélien Ribon — Tween animation engine
- msdfgen by Viktor Chlumský — MSDF font atlases
- LWJGL 2.9 — OpenGL / OpenAL Java bindings
- JavaCV / FFmpeg by Bytedeco — Video decoding