Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cross-platform GUI language/toolkit

I am attempting to write a cross-platform GUI application that would be deployed to Windows, Mac OS X, and Linux. My requirements are:

  1. Single code base for all three deployment platforms, without a large amount of conditional logic for handling differences between platforms.
  2. Looks as close to "native" as possible on all three platforms.
  3. Easily distributable to all three platforms, in the sense that it could be easily installed by end users and does not suffer from extreme bloat (as discussed in this ArsTechnica article.)

Based on these requirements, I've narrowed down the selection of toolkits to Qt and wxWidgets, since none of the other toolkits that I know about (including Java's Swing and SWT, Flex, AIR, etc.) satisfy the "native-looking" requirement. Among these two final contenders, Qt appears to offer better support for applications that look and feel native on all three of my deployment platforms, but I'm willing to consider opinions to the contrary.

I would prefer not to use C++ as the implementation language, but I'm not sure if there are any practical alternatives. My biggest concern about using an implementation language other than C++ is the deployment problem. As discussed in the Ars Technica article, PyQt does not meet the "easy deployment' requirement in any practical sense, and I suspect that most other language bindings for Qt would suffer from the same deployment problems (at least on Mac OS X). Java (or Scala) with QtJambi? QtRuby? wxPython?

Does anyone know of any combination of language and toolkit that satisfies all three of the above requirements?

like image 715
Jason Voegele Avatar asked Mar 09 '10 13:03

Jason Voegele


1 Answers

  1. It depends on your needs. But in general Qt Framework (with any language) and Java SE (with any language) is much more better because it has not only cross-OS GUI libraries but also cross-OS networking, threads, ... wxWidgets is GUI only.
  2. Both Qt and wxWidgets are nice. In my experience Qt is better. Swing is... Well, not so nice.
  3. Both Qt and wxWidgets applications written in C++ and Java Swing applications are not so hard to deploy on Windows, Mac and Linux. The rule is that the deployment is simple when you are programming in "native" language. By "native" language I mean the language a framework itself is written in.

PyQt does not meet the "easy deployment' requirement in any practical sense...

Python (and any other language with the default implementation as interpreter) apps is hard to deploy in the usual sense (I mean in form of standalone executables).

So probably you have 2 choices:

  1. C++/Qt or C++/wxWidgets.
  2. Java/Swing if native look & feel is not very strict requirement.
like image 156
Wildcat Avatar answered Sep 28 '22 02:09

Wildcat