So I am in the planning stage for an upcoming project of mine and am trying to sort out the best technologies I should use. The project is based around a desktop app and I am super stuck on what to write it in. I have a background in Java so I was thinking maybe JavaFX. However, I am trying to get out of the Java world to build my portfolio a little. Electron looked extremely enticing due to my existing web development background but after seeing all the criticism on Electrons performance I am not so sure. The app won’t be anything too intensive but I definitely want it to be lightweight.
Any suggestions help.
Thanks
Top comments (3)
I've used Kotlin with TornadoFX (a wrapper around JavaFX) for a couple of small projects and it works really well. Not sure if you're open to Kotlin, but I highly recommend it.
The thing with Electron is that it's just like normal web development. Making an app with Electron is super easy. Like as far as UI frameworks go, web development is by far the easiest system I've ever encountered. But with JavaScript comes some of it's faults and the drawback of making (almost) anything with web technologies is that for as easy as it is to get something up and running, it's very difficult to keep that performance up when your application becomes increasingly complex.
The biggest example of this I can think of is Atom vs VS Code.
Atom is an IDE made by GitHub (also the makers of Electron) and was a fantastic first example of what the platform could do. However, it is not the most performant app out there. Then, Microsoft came along and made Visual Studio Code, an extremely performant Electron app and now between its speed and extensibility, it has become the IDE of choice for many developers in the web space and more.
While I'm not trying to say you should definitely pick Electron for your app, I'm saying if you'd like to make a native app with web tech then Electron is a great choice, but it's going to take a lot of work to make a great app.
Users don't care if an app is Electron-based, so if it seems to do what you like, go for it.
Some alternatives to consider:
React-Native (OSX-Only)
github.com/ptmt/react-native-macos
I bet you need something cross-platform, so..
Qt is a very mature and native UI-Framework. There are bindings for lots of languages. Lots of folks seem to like developing Qt with Python.
qt.io/
WxWidgets is a similar thing, also native.
wxwidgets.org/
I'd do a hello-world-app in each of those and see, what feels best.