explaingit

edvin/tornadofx

Analysis updated 2026-05-18

3,640KotlinAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

A lightweight, no longer maintained Kotlin framework for building JavaFX desktop apps with type-safe UI and CSS builders.

Mindmap

mindmap
  root((tornadofx))
    What it does
      Kotlin JavaFX framework
      Type-safe UI builders
      Type-safe CSS
    Tech stack
      Kotlin
      JavaFX
      Maven/Gradle
    Use cases
      Desktop UIs
      REST data binding
      Async table loading
    Audience
      Kotlin developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Build a desktop application UI in Kotlin without writing FXML or XML layouts.

USE CASE 2

Define a stylesheet as type-safe Kotlin code instead of a separate CSS file.

USE CASE 3

Load data from a REST API in the background and update a table on the UI thread.

USE CASE 4

Build a JavaFX desktop app using MVC or MVP with built-in dependency injection.

What is it built with?

KotlinJavaFXMavenGradle

How does it compare?

edvin/tornadofxfoso/jetpack-compose-playgroundsimplemobiletools/simple-calendar
Stars3,6403,6443,635
LanguageKotlinKotlinKotlin
Setup difficultymoderateeasyeasy
Complexity3/52/52/5
Audiencedeveloperdevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Project is no longer maintained and requires an older Kotlin/JVM target to build.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

TornadoFX is a lightweight Kotlin framework built on top of JavaFX for writing desktop applications. It lets you build a user interface using plain Kotlin code instead of writing XML layout files, so a view and its widgets can be assembled directly with a type safe builder style syntax. The project's README states plainly that TornadoFX is no longer maintained, so anyone considering it for a new project should weigh that before depending on it long term. The framework supports common desktop application patterns like MVC and MVP along with their variations, and includes dependency injection so a view can get access to a shared controller or service through a simple inject call. Interfaces are built with type safe GUI builders, meaning you construct things like tables, boxes, and labels with Kotlin function calls that the compiler checks, rather than assembling loosely typed FXML. Styling follows the same idea: stylesheets are written as type safe Kotlin classes instead of separate CSS files, defining things like colors, fonts, and padding as regular code. Other included pieces cover asynchronous work and networking. Background tasks can be run with a runAsync block and their results applied back on the UI thread with a paired ui block, avoiding manual thread management. There is also a built in REST client that automatically converts JSON responses into Kotlin model objects, along with support for basic authentication and a configurable base URI. TornadoFX also supports FXML for teams that prefer that format, an event bus for passing messages between parts of an application with thread targeting, hot reload of views and stylesheets during development, and OSGi support for modular deployments. Overall this is a tool for Kotlin developers building traditional desktop software who want less boilerplate than raw JavaFX requires. Getting started involves adding the dependency through Maven or Gradle, and the project documents a quickstart archetype, screencasts, and a wiki for learning the framework, though given its unmaintained status newcomers should check for a supported alternative first.

Copy-paste prompts

Prompt 1
Write a minimal TornadoFX View in Kotlin that shows an HBox with a label.
Prompt 2
Show me how to add TornadoFX to a Gradle project and create a simple table view.
Prompt 3
Using TornadoFX's runAsync and ui blocks, load data in the background and update a TableView.
Prompt 4
Write a type-safe TornadoFX Stylesheet class that styles buttons and text fields.

Frequently asked questions

What is tornadofx?

A lightweight, no longer maintained Kotlin framework for building JavaFX desktop apps with type-safe UI and CSS builders.

What language is tornadofx written in?

Mainly Kotlin. The stack also includes Kotlin, JavaFX, Maven.

What license does tornadofx use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is tornadofx to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is tornadofx for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.