the corner office

a blog, by Colin Pretorius

GUI apps

Techie ramble... as I mentioned a while ago, I've been at something of an impasse when it comes to picking a Hobby Technology of Choice. I'd promised myself that this would be the year of revisiting C and C++, and finally finishing my slow progress through a few Unixey books I spent lots of money on, once upon a time.

Then I went and re-subbed to Eve Online. Suddenly I found myself wanting to whip up GUI-based apps. In Windows, for now, but cross-platform for if/when I'm able to play Eve on Linux. The problem is, what to use? So many options... I started digging around. Didn't take long before I nixed WinForms (not cross-platform), Gtk (I really don't like Gtk), Qt (apparently great but fairly complex), Swing (I really really don't like Swing), and web-based (I want thick client GUIs). In the end, it came down to two options: SWT/JFace or wxWidgets.

SWT/JFace - I did a fair amount of RCP hacking last year. The toolkit is OK, and I like the look and feel, but if you're going to use SWT you really want JFace for more oomph, and you may as well be using RCP if you're using JFace. I wasn't blown away by RCP development - powerful concepts but still tedious for a lot of development. In terms of tooling, the Eclipse Visual Editor project is still struggling, but I got it working and it looked OK-ish for whipping up simple forms.

WxWidgets - I used it for a university project late '06/early '07, and quite liked it. Cross-platform, clean and accessible API, but powerful. Nice-looking visual editors, free and proprietary, so one doesn't need to hand-code everything.

Language choice becomes the final rub. If I want to get things done right now, it's Java or C++, because those are the languages I'm most comfortable with. (C# also appeals, except that I'm not excited about WinForms or Gtk#, the only two real C# GUI options).

SWT means Java. Downside is I promised myself I wouldn't do Java at home. Living in a JVM, I could start dabbling with, say, JRuby or Groovy as well though. An upside is I could re-use a lot of Eve-specific code I've already written, and I could quickly get through tricky bits of code in the language I'm most proficient in.

If I go with wxWidgets, I'd start out with C++, which isn't the most productive way to write GUI apps anymore, but the additional complexity would be offset by the thrill of being able to use the -> operator again. I'd be accomplishing my goal of using more C++ this year, and I could easy start playing around with the various other wxWidgets bindings (Ruby, say) when I'm good and ready.

I'm leaning towards Java, but I've still not made up my mind, entirely. I've been playing a bit with both, not making huge progress with either, but sort of enjoying stuffing around.

Next instalment: CDT versus Visual Studio - the joys of C++ development in Windows.

{2008.04.02 23:54}

« Money for nothing (minus sales tax)

» C++, Windows, and late nights