Frameworks and libraries for cross-platform desktop software development

In this article I will tell you about some of the most popular frameworks that will help you when developing software for Windows/MacOS/Linux computers. If you are an experienced programmer, you are unlikely to find anything new in this article for yourself. It is more for beginners who are looking for a simple solution to their problem – to quickly write a good (as much as possible) cross-platform program.

Electron JS
There are still many developers debating whether or not to use Electron in their projects. Electron JS is a JavaScript framework, which allows you to write a complete program using Web Technologies – HTML & CSS, JS. Electron JS is a Chromium engine, which will run all your code. Electron has one serious disadvantage – high memory consumption, both physical and RAM. Everybody knows for a long time how voracious Chrome is, and we want to add our own code to it. But look on the bright side: many popular applications today are written with Electron – Slack, Skype, Discord, VSCode, Atom, Postman, Insomnia, etc. And as computer power keeps growing, it is becoming rare to hear from users that “your Chrome ate all my memory”. A good memory usage won’t matter if the product is good in its sphere and the code is well coded and the processes are well distributed.

Pros of
Using developments from the Web
It is easy to find (or “educate”) a specialist
High quality (and russified) documentation
Community and GitHub support

Cons
High memory consumption (physical and RAM)
Easy to write bad code
Bad nativity

NW.JS.
Just like Electron, NW.JS allows you to create cross-platform applications using Web technologies. Today, NW.JS is sponsored by Intel, and developed by the community. NW.JS doesn’t boast the same rich list of projects as Electron, but it’s still a very good framework for creating cross-platform applications. Just like Electron, NW.JS drags the Chromium engine and all the problems that come with it. NW.JS is very similar in its principle to Electron, but there are still differences. I can recommend this article for your reference.

Pros of
Using work from the Web
It is easy to find (or “bring up”) a specialist
High-quality (and russified) documentation
Community and GitHub support

Cons
High memory consumption (physical and RAM)
Easy to write bad code
Bad nativity

Qt/QML
Qt is a very powerful toolkit for creating cross-platform applications in C++ and Python (as well as Ruby, PHP, C#, etc., but these are supported by the community). Qt is already a fairly old framework, but it continues to be actively developed and programs such as: 2GIS for Android, Kaspersky Internet Security, Virtual Box, Skype, VLC Media Player, Opera and others. Known to many Linux-users desktop environment KDE is also written using Qt. Qt has a development environment, Qt Creator, which includes Qt Designer that allows you to create a graphical user interface. Visual UI creation makes it very easy to create an interface by dragging various widgets (drop-down lists, buttons, toggles) onto a form. Qt has extensive documentation, active community support, and many other advantages.

Pros of
Visual editor interface
Huge number of modules in the framework
Support for large number of programming languages (only Python and C++ officially, others are community-supported) -> good native code
Low entry threshold

Disadvantages
Heavy application weight
High cost of commercial license

GTK

GTK, along with Qt, is one of the most popular libraries for cross-platform development of interface elements for X Window Systems. It was developed by the Gnome Foundation and GNU. Many desktop environments and window managers (Gnome, xfce MATE, Cinnamon, AfterStep, Marco, and many others), and programs, such as: Chromium, FireFox, MonoDevelop, Gimp, and others. The GTK is written in C, but there are wrappers for many programming languages (C, C++, Python, Java, and others). Gtk has a builder for visual interface design, Glade.

Pros of
Support for a large number of languages
Large and active community
Many popular projects and examples
Visual editor

Cons
No critical disadvantages (if you have a “problem” with Gtk, feel free to write about it in the comments)