I’m planning to write a Windows app to help myself with some exploratory testing tasks (note taking, data generation, defect logging) and I’ve got stuck at the early stage of choosing a framework/language. My sole experience is with web development and from what I can see, WinForms, WPF, Silverlight, Swing etc are all simultaneously obsolete and thriving depending on who you ask.
While my main aim is to create the app, obviously I’d like to learn something useful while doing so rather than picking up skills with something that’s never going to be seen on a project at work. Which Java or C# frameworks would people recommend learning?
Note: consider when this answer was posted (2012). Since then, things have changed a bit, for example Silverlight has been deprecated.
Native Applications
For employment:
Well, nowadays most companies (at least most companies from Oman and the UAE, where I live) are slowly migrating to the cloud. However there are still some opportunities for native app development. The most demanding framework nowadays, is, ( no.. not WPF ), it’s Windows Forms!
Why plain old Windows Forms instead of the awesome WPF? One reason, legacy apps. Nowadays most companies only start small scale GUI Application projects, mainly Business applications. For that, WPF will be very expensive since they already have a work-force experienced in Windows Forms, and a lot of legacy code, however for WPF they will have to create a new code-base, and that’s pretty risky. So the best thing to keep you employed is Windows Forms.
For new projects: However, if by ‘worth learning’, you mean, new, ambitious and glamorous. Then WPF may be the best choice for you. It depends on what your requirements are, really.
The Cloud
Now, for the cloud. Java FX and Silverlight are both currently head to head. However Java FX may have an edge since it supports a greater number of platforms. But then again, Silverlight has all the power and resources of Microsoft behind it, and it’s ideal for Windows Phone development.
Comparison
For a comparison, here’s what you get by each toolkit:
Windows Presentation Foundation:
Windows Forms:
Java FX:
Silverlight:
GTK#:
Swing:
Conclusion
As you say:
Well, the frameworks you are most likely to see at work (if you don’t for mainstream companies like Microsoft, Oracle, Google etc. ) are Windows Forms and WPF. At least that’s what most companies use here. So those are what I recommend. JavaFX and Silverlight also look like they have potential and may be used in the near future.