desktop applications written in clojure

1.4k views Asked by At

Which technologies from the clojure ecosystem can be recommended to develop a standalone desktop application? The technology I am looking for should have support for

  • access to the local file system (e.g file dialogs).
  • access to the web via http/https
  • support for updating the desktop application
  • async support (running multiple threads)
  • cross platform (no need for smartphones though)
  • interop support to native libs (not 100% required, but it's a risk if it doesn't have support for it)
  • reasonable ecosystem. E.g. I need to validate xml files to xsd's, eventually I need to make some linear algebra calculations.

The following alternatives come to my mind:

clojure/seesaw:

  • -- requires java runtime
  • -- standard swing look/feel might be a disadvantage
  • ++ robust java platform
  • ++ huge ecosystem
  • ++ interop support is not an issue
  • ++ core.async

clojurescript/html5/css:

  • ++ can be used with node-webkit or appjs to deliver standalone desktop app.
  • ++ flexible look/feel via css
  • ++ robust platform
  • -- smaller ecosystem. E.g. what about handling xml files or support for math libraries?
  • -- interop support might be an issue. Can i call e.g. native libs from node-webkit?
  • -- single threaded enviroment, what about async support?
  • -- unclear how to update the application.

Pedestal

  • ++ simplifies developing the application architecture
  • -- not sure it can be deployed as node-webkit app or appjs.
2

There are 2 answers

0
llj098 On

I think clojurescript + node-webkit is a good choice:

  • it supports native libs,
  • clojure.core.async,
  • implement a simple update on your own by simple HTTP request or socket.io,
  • lighttable is a good example.
0
Mario On

Electron should be a drop in replacement for NW.js (node-webkit) and offers more flexibility over when to show and hide windows.