tags:

views:

178

answers:

9

I've been developing in Java Swing for a while now, and I'm starting to feel that Swing-based desktop applications are feeling a little stale and are tedious to develop.

I'm seeing new applications that look very sleek and modern, like TweetDeck and Synthesia (a piano game). Despite the wisdom in Haase & Guy's "Filthy Rich Clients," I imagine that writing applications like these in Swing would be quite a chore.

Presuming that desktop applications won't totally disappear within the next 5 years (or that the division between the web and the desktop will become seamless), what UI languages and technologies should front-end developers be exploring to keep current? What's the next big thing?

A: 

There will always be a need for OpenGL/Direct3D developers, but that might be further down than you're talking about.

On the Windows side WPF and Windows Forms are available.

On the Mac/iOS Cocoa is the way to go.

On Linux there's a few options such as GTK or QT.

You might just want to bite the bullet and learn some HTML5/JavaScript though. I doubt that's going to go away any time soon.

Ben S
"Always" is a *really* long time! I remember people saying that in the punchcard days, about things we laugh at now. As a programmer who's done his share of OpenGL, I really hope that there's nearly zero OpenGL programmers still around in 10 years. With 3d acceleration available in the browser, even faster Javascript JIT engines, and new hardware orders of magnitude faster than today, what reason would anyone have for writing OpenGL? It'll be like assembly language in the 2020's.
Ken
@Ken: There will always be a need for assembly developers too. Analogy ineffective :-).
Mark Peters
Mark: Sure, but a vanishingly small fraction of them, and only for very specific tasks. I don't see how it makes the analogy ineffective.
Ken
+2  A: 

Microsoft's WPF is probably one of the newest, coolest technologies out there.

It allows you to make much better looking GUIs.

You should also look into some of Microsoft's Expression products. They let you put that extra flare into your GUIs.

jjnguy
I agree with WPF. Building desktop apps used to be a chore in any language, but I am just shocked how easy it is nowadays, especially with Visual Studio 2010.
buckbova
A: 

I'm not sure there's "the next big thing" in desktop UI development. If anything, "the next big thing" is a multi-touch based interface ala popular tablets and smartphones. Given that, I think it might be smart to learn how to create multitouch UIs by downloading a sdk for a mobile phone or tablet that supports multitouch.

Bryan Oakley
+1  A: 

If you like Swing, Take a look at Google GWT.
It is like Swing for the Web, well almost.

Romain Hippeau
A: 

I'd suggest looking into Flex. It's much more interesting to develop than Swing and b/c it's Flash it can run in a browser or on a desktop.

ballmw
With all the controversy regarding Adobe's platform, I would avoid it for new projects.
Ben S
Swing can run in an applet or on the desktop, too, if you have the right plugin/runtime installed (i.e., the same condition for Flex doing so).
Ken
A: 

Java still works fine. You simply replace standard controls with images and use image states to change the look on mouse overs and clicks.

Marcus Adams
A: 

I would also suggest WPF as another UI framework to get under your belt, because it does afford some pretty powerful UIs in desktop applications (and most of what can be one in WPF is translatable to Silverlight for webapps).

On the flipside, instead of looking for the next new UI language or technology, I think you may be better served looking at UI from a usability standpoint, and tracking the trends currently making waves.

As an example, one of the paradigm shift I'm seeing in UI development (mostly on the web) is the switch to making important things bigger and less important things smaller - including yes/no buttons in a dialog. I'm still warming up to this idea because it flies in the face of a consistent button look to show users their options.

Instead of providing options in a world today where we are constantly making decisions, the goal of this newer UI look is to breadcrumb the happy path. If the user decides they want to do something different, they can, but the UI is going to make the user put in a little effort and read the fine print.

Another example is flash-highlighting a recent change a person has made (SO does this, but I forget the term used to describe this effect) when coming onto a website.

Lastly, and this is one of my favorites, the shift from an administrative/user view (also mostly in the webapp sphere), to an ad-hoc WYSIWYG editor...Flickr is a prime example of this, where you can change captions on a picture by clicking on the current caption and editing it inline, without the need to go to a separate admin view to edit these values.

Is anyone else seeing trends like these that are interesting and new?

Robert Hui
A: 

You've been programming in Swing for a while and you only just started feeling it looks outdated? :)

Swing looks like crap, no matter what look-and-feel tricks folks do for it. It actually put vendors of Swing-based desktop apps like ourselves at a disadvantage because of how shiny and pretty WPF stuff looks.

If you want to stay in the Java realm, I encourage you to try out SWT and JFace. You don't need Eclipse for it. But it's a much better looking system with a much nicer API.

If you want to go for attractive, WPF is your friend. You're limited to Windows and can't use Java (both showstoppers for me), but you can't ignore the aesthetics benefits of that SDK because it is so tightly bound to recent versions of Windows.

Uri
A: 

I think the point of the book you mention, and most of the answers here, are that most languages give you the tools, (or enough rope to hang yourself ;) to throw out the basic ugly controls of ANY OS you are on, and paint whatever user experience you want to. Yes it is tedious to skin or otherwise manually take over the visual representation of the controls in a UI, but if that's whats important to you, then you'll do it, and possibly be rewarded for it. Or castigated for breaking the "platform UI standards".

mezmo