Analysis updated 2026-05-18
Build a desktop application UI in Kotlin without writing FXML or XML layouts.
Define a stylesheet as type-safe Kotlin code instead of a separate CSS file.
Load data from a REST API in the background and update a table on the UI thread.
Build a JavaFX desktop app using MVC or MVP with built-in dependency injection.
| edvin/tornadofx | foso/jetpack-compose-playground | simplemobiletools/simple-calendar | |
|---|---|---|---|
| Stars | 3,640 | 3,644 | 3,635 |
| Language | Kotlin | Kotlin | Kotlin |
| Setup difficulty | moderate | easy | easy |
| Complexity | 3/5 | 2/5 | 2/5 |
| Audience | developer | developer | general |
Figures from each repo's GitHub metadata at analysis time.
Project is no longer maintained and requires an older Kotlin/JVM target to build.
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.
A lightweight, no longer maintained Kotlin framework for building JavaFX desktop apps with type-safe UI and CSS builders.
Mainly Kotlin. The stack also includes Kotlin, JavaFX, Maven.
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.