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.
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.