A Clojure library for building JavaFX 8 applications with functional, hiccup-like syntax and core.async integration.
fx-clj is a Clojure library that provides idiomatic, functional interfaces for building JavaFX 8 desktop applications. It solves the problem of JavaFX's imperative Java API by offering Clojure-friendly APIs, hiccup-like syntax for UI definition, and seamless integration with core.async for asynchronous event handling.
Clojure developers building cross-platform desktop applications who want to leverage JavaFX's capabilities with functional programming patterns and REPL-driven workflows.
Developers choose fx-clj for its pragmatic approach that doesn't hide JavaFX's power while providing Clojure conveniences like reactive data binding, dual API styles, and excellent REPL integration for rapid UI development.
A Clojure library for JavaFX
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports both function-based syntax and hiccup-like vectors for UI creation, as shown in examples like `(fx/button ...)` and `(fx/compile-fx [:button ...])`, catering to different coding preferences.
Integrates core.async channels directly with JavaFX events, allowing non-blocking event handling, demonstrated in the quick start where a channel is bound to a button's :on-action property.
Binds JavaFX properties to reactive atoms and expressions from freactive.core, enabling dynamic UI updates with minimal boilerplate, though documentation is sparse.
Allows defining JavaFX CSS styles in Clojure code and integrates with the Garden library for type-safe styling, enhancing maintainability.
Tied to JavaFX 8, which is outdated and lacks support for newer JavaFX features, modules, or security updates, as explicitly required in the README.
Labeled as beta quality, which may imply incomplete features, undiscovered bugs, or potential breaking changes despite claimed API stability.
Admits that advanced features like data binding are not thoroughly documented, forcing developers to rely on source code or trial and error.