Welcome!

Java Authors: Esmeralda Swartz, Pieter Van Heck, Elizabeth White, Pat Romanski, Gary Kaiser

Related Topics: Java

Java: Article

Swing Baby, Yeah!!!

With JVMs being pulled from Internet Explorer, Java's attention moved off the desktop and onto the server

Back in 1996, Java was originally hailed as a way of making the Web more appealing through applets, and, with its "write one, run anywhere" philosophy, as the holy grail for desktop apps that would be truly cross platform. The truth is that both were oversold at the time. With the combination of low bandwidth Internet connections and early Swing releases not living up to user expectations occurring in the middle of the Microsoft vs. Sun "pure Java" fight that resulted in JVMs being pulled from Internet Explorer, Java's attention moved off the desktop and onto the server.

It's now 2006 and the world is a very different place. Java Virtual Machines are now present on about 85% of desktop PCs, about two-thirds of which are at 1.3 or higher. The top 10 PC OEMs now redistribute a JRE with their product and, in January 2006 alone, there were over 30 million downloads of the Windows Java SE.

More intelligent and demanding users are become increasing disillusioned with the poor page-based, latency bound user interface model that the browser-centric world delivers. To a large extent all of the AJAX hype being whipped up at the moment is a recognition of this fact, although what it's actually doing is elevating the discussion to be one of "how do we deliver rich content" rather than bun fights over "HTML rocks, Swing sucks, baa."

At JavaOne's opening keynote this year, the absolute highlight for me that showed how far Swing has come was a demo of an application that used Web services APIs from flickr.com and maps.google.com, popular and high-content Web sites in their own rights, and trumped both sites with a beautiful Swing program. Romain Guy, one of the Swing engineers who'd written the program, used it to navigate his photo album pictures from flickr, using 3D smooth animation, reflection techniques, and beautiful user interface effects that fully demonstrated the power of desktop applications. The program then picked up Google maps data to show the route Romain had taken during a recent road trip that merged with photos he'd taken on the way. The power of this message was simple: the desktop can be used to integrate back-end data that is available on the Web (through Web services) and create a user interface experience that is richer than anything the Web could offer and truly puts the user back in control. It was beautiful to watch, and ironically reminded me of how Flash developers used to show off how they could make the Web experience better, except the Swing demo was an order of magnitude higher than anything Web 2.0 could possibly hope to offer. It also struck a chord with the idea that while all the server guys are focusing on SOA and ways for back ends to publish their data and re-usable services, it's now open season again as to what the user interface is going to be. Swing is totally there now: mature, fixed, better, and 100% ready to step up to the challenge.

Leaving bombast aside, technology never wins because it's better. The battleground in traction is largely based on perception, ideas, and adoption by the community. What's encouraging about Swing is that it is doing well on all three fronts.

In a recent Evans Data survey of Java development trends, developers were asked where they spent most of their time building apps. Forty-one percent said they wrote desktop apps, 37% J2EE, 4% Java on mobile devices, while the remainder apparently didn't know what they do at work each day As for the future, when questioned about which Mustang features people were most looking forward to, over 60% answered that they're turned on by the Desktop Java enhancements.

The community around Desktop Java has really grown over the past few years and Mustang is now reaping some of this crop. SwingLabs (http://swinglabs.org/index.jsp) is an umbrella for an open source laboratory of projects whose common goal is to make Swing easier to write, faster, and better and to rally around Desktop Java. It's crop includes the timing framework being showcased at JavaOne, a very crisp and elegant API to do animation effects. SwingX has reaped the cool visual effects like drop shadow borders and custom highlighting that powered the JavaOne keynote demo. In addition to these and other fabulous improvements to Swing on the glass, there is also recognition that serious Desktop Java projects have to wrestle many other types of animal to the ground as well. The Data Binding project is looking at taking away the pain involved when binding Swing GUIs to back-end data sources. The Application Framework project is looking at the life cycle surrounding desktop. This is all good stuff.

One of the features Swing used to always get beaten up about was that it's an emulated widget toolkit and, as such, has to fake out in low-level Java 2D drawing code what the actual native widgets look like. Even though 1.4.1 improved this over previous releases, the arrow didn't quite hit the bulls-eye. Thankfully though this looks like it's now got closure as Mustang is going to use native APIs on Windows and GTK to find out how exactly, pixel perfect, each OS's widgets are being rendered. No more Swing versus SWT fights on newsgroups, phew.

Swing is really coming back hard with some great new features and for me was definitely the star of JavaOne. I talked to many other people who were also impressed with what they saw and are now seriously considering revisiting it. Web 2.0 hysteria is turning the focus of IT away from server-implementation technologies and back onto the user interface experience. When the guy next to you steps up to home plate clutching his JavaScript for Dummies book, let's hear it for the desktop: "Swing AJAX developer swing, swing AJAX developer swing."

More Stories By Joe Winchester

Joe Winchester, Editor-in-Chief of Java Developer's Journal, was formerly JDJ's longtime Desktop Technologies Editor and is a software developer working on development tools for IBM in Hursley, UK.

Comments (5) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Joe Winchester 06/23/06 10:55:07 AM EDT

Hi David,
I wasn't making fun of Java Enterprise or Java mobil.. I was making fun of the percentage who couldn't answer what they do at work. I am a huge fan of all aspects of Java, my point was that there is a lot of Java desktop stuff still going on, and that Swing is really really good now. Mustang has a lot of very cool stuff in it, Swing labs is creating very solid frameworks, and I've been playing with some of the new JDNC stuff and it is incredibly solid. The Swing team have done an outstanding job, and a lot of people's perception of Swing is probably of Swing 1.1. People are trying to build richer user interfaces, whether it's with Flash or AJAX or whatever, and I just want people to reconsider building first class desktop apps with what is now a modern and very powerful Swing release.
Joe

David 06/22/06 07:21:07 PM EDT

You made fun of the java developers who did not do desktop apps, j2ee or mobile. While web apps may contain some "j2ee parts," I think many programmers do no consider these j2ee unless you are doing enterprise javabeans. Those who use pojo with servlets/jsps often do not think of themselves as j2ee -- except when we put it on our resumes!

David Bolsover 06/21/06 03:13:24 AM EDT

Trackback Added: Java Swing; Swing Baby, Yeah!!! ? Back in 1996, Java was originally hailed as a way of making the Web more appealing through applets, an...

JDJ News Desk 06/20/06 03:27:28 PM EDT

Back in 1996, Java was originally hailed as a way of making the Web more appealing through applets, and, with its 'write one, run anywhere' philosophy, as the holy grail for desktop apps that would be truly cross platform. The truth is that both were oversold at the time. With the combination of low bandwidth Internet connections and early Swing releases not living up to user expectations occurring in the middle of the Microsoft vs. Sun 'pure Java' fight that resulted in JVMs being pulled from Internet Explorer, Java's attention moved off the desktop and onto the server.

David Bolsover 06/14/06 06:03:23 AM EDT

I have been following the Swinglabs developments for over 18 months now - this stuff rocks! I have already deployed applications using the JDNC 0.6 libraries and with the promise of JSR 295: Beans Binding the future for Java on the desktop looks very good indeed.