Making science reproducible @nextjournal

Clojure + Cljfx

Remix this to get started with Clojure and Cljfx. See the section below for how this sets up JDK 11. This notebook is using a custom environment (see Setup below) as well as a GPU, so it takes about two minutes to boot.

(require '[cljfx.api :as fx])

Here's hello world.

@(fx/on-fx-thread
  (fx/create-component
    {:fx/type :stage
     :showing true
     :title "Cljfx example"
     :width 300
     :height 100
     :scene {:fx/type :scene
             :root {:fx/type :v-box
                    :alignment :center
                    :children [{:fx/type :label
                                :text "Hello world"}]}}}))

Environment Setup

Because Cljfx requires Java11+ and our default Clojure environment is von JDK 8, we need to import the environment from docker hub.

OpenJDK+Clojure
Download as Docker image from:
Copy
This image was imported from: clojure:openjdk-11-tools-deps

Then we also need to install libopenjfx-jni. Note that these cells are locked to avoid accidental changes.

apt-get install -qq libopenjfx-jni

This deps.edn is being mounted to /root/.clojure/deps.edn.

{:deps
 {org.clojure/clojure {:mvn/version "1.10.0"}
  cljfx {:mvn/version "1.3.3"}}}
deps.edn
Extensible Data Notation

Let's invoke clj to download the libraries upfront.

clj -Spath