The answers to this related question of mine lead me to choose Java for most of my backend services (it's a multi-component system). Now, I'm not sure whether that would be a good choice for cross-platform desktop GUI apps, as well. The Java desktop applications I remember using have that non-native look that I don't like, but I'm not sure if that depends on the choice of GUI toolkit rather than the language.
Most of my GUIs will be web-based, and the desktop ones will have a relatively small audience (administrators, developers and testers), so I can only put aside a small fraction of my time budget to do those. Still, I want native look and avoid a bunch of dependencies.
It's probably most adequate to start with the GUI toolkit I want to use and then pick a language that supports it. The cross-platform ones I know are:
- GTK
- qt
- AIR (when it arrives on Linux)
So, for example, I might use GTK# with .Net/Mono. What kind of dependency issues am I going to face? Would you recommend separating the actual GUI from the rest of the application and use GTK on Linux, and something native on Windows, like Windows Forms, thus avoiding to have to install GTK on Windows?