As the original Swing Sightings series has lost much of the energy behind it (apart from a few occasional entries on the JavaDesktop page), i have decided to start a new series that will feature screenshots of applications running under Substance look-and-feel. Obviously, not all Swing applications are running under Substance (yet, plans on world domination are currently under review), but there are still some very nice applications out there that use various Substance skins and settings to add some style and spice to their UIs.
First up is LightZone which is a very nice digital image editor. An interesting thing to note in the screenshot (click to see original size) is that this application has quite a few custom controls, all of which are skinned according to the selected Substance skin:

The next one is LinuxSampler which is a pure software audio sampler. This application uses a few custom controls as well; note how well they blend with the core Swing controls painted by Substance:

The next one is Darkstar FX that lets you prototype Java 2D renderers in Javascript. The application suite that contains this tool also bundles the Titanium look and feel that is based on one of the core Substance skins.

The last one is Ixent which provides a framework for non-photorealistic rendering.

Note that all the applications in this entry have decided to use the graphite-based skins which have been modeled after Microsoft’s Expression Blend, Apple’s Aperture and Adobe’s LightRoom.
If you haven’t tried Substance in your application, you’re more than welcome to do so. The current stable release is 3.3, and the next 4.0 version (code-named Key Largo) will be released on September 3rd (release candidate August 20).
You should really be careful when you’re using anonymous stock models to promote your product. Take, for example, Sun Java Composite Application Platform Suite (don’t even get me started on the name that says absolutely nothing). Here is the banner that greets potential customers:

I don’t know about you, but instead of thinking about that miniature tree growing in what looks like a soup bowl, all i can think of is the following dialog from Seinfeld:
Jerry: Oh, volunteer work!. See that’s what I like about the holiday season. That’s the true spirit of Christmas. People being helped by people other than me. That makes me feel good inside. Look at what we have here. A Christmas card from Laine. You didn’t have to go to all that trouble.
Elaine: It was no trouble. My assistant did the whole thing.
Jerry: I didn’t even see the picture. How did it come out?
Elaine: Well, you know. It’s a picture?
Jerry: Oh yeah. Look at that. Looks good. Kramer did a good job.
Elaine: Yeah, well. How hard is it to take a picture?
Jerry: … um …
Elaine: What?
Jerry: Did you look at look at this picture carefully?
Elaine: Carefully?
Jerry: Because I’m not sure and and and correct me if I’m wrong but I think I see … a nipple.
Elaine: What?
Jerry: Here. Take a look. What, what is that?
Elaine: Oh my God! That’s my nipple.
Jerry: That’s what I thought.
Elaine: That’s my nipple. My nipple’s exposed. I sent this card to hundreds of people! My parents. My boss. Uh, Nana and Papa.
Jerry: DIDN’T YOU LOOK AT THE PICTURE?
Elaine: Oh God I didn’t notice. Oh, what am I going to do? You know your whole life you go through painstaking efforts to hide your nipple and then BOOM, suddenly hundreds of people get their own personal shot of it.
Really, a headless torso with a couple of fake tattoos and a hairy nipple? For more examples of stock model goodness click this link (warning, it’s rude and hilarious).
The previous entry featured an interview with Romain Guy, the co-author of the “Filthy Rich Clients” book. Today it’s time for Chet Haase, the second author behind this book.
Why have you decided to write this book?
I’ve wanted to write a book for some time – something in the general area of Java and graphics. Then when the idea came up or Filthy Rich Clients, it all made sense. Maybe all I needed as a catchy title?
This is your first book. Looking back, is it easier or harder than what you thought it would be?
Hmmm – mixed.
Actually, the writing itself went better than I thought it would. It turned out that Romain and I could produce lot of content in a relatively short time, and we enjoyed doing it.
But editing the book was quite different; it was sheer hell and torture. Specially painful was the part where people whose opinion you respect review the material and tell you everything that you’ve gotten wrong. It was a dark and depressing winter.
Are you happy with the way the book turned out to be?
Very happy. I think there’s a nice mix of fundamentals, telling people the way things work inside Swing and Java 2D, and very fun stuff, showing how far they can take the platform to create cool applications. There are lots of demos to illustrate the points, lots of pictures to show how things look, and lots of footnotes to help pass the time and fill in all of that empty space at the bottom of the pages.
What is your favorite chapter and why?
Actually, I’ll choose a whole section and not just a chapter:
Part IV: Effects.
All of the material in this section was the original inspiration for the book – let’s show developers how to do the cool stuff for their applications. The rest of the book is all about showing how everything works so that you can understand the Effects section completely when you get there. It’s one thing to just copy & paste some demo code, but it’s much more powerful to be able to understand how it all works so that you can go write your own custom effects.
Jokes on “this is not a book on binding” aside, do you see the business developers adopting the techniques you’re explaining in the book?
Absolutely. I think that any application (perhaps especially some of the truly awful ‘enterprise’ applications that I’ve had to use) could benefit from a better user experience. The effects we discuss in the book are all about enabling better user experience.
For example, the techniques outlined in the Animated Transitions chapter are about creating a seamless flow in an application and avoiding the Submit-Erase-Repopulate UI experience of most web applications today. These techniques could apply just as well to a typical forms-based application as to a more consumer-oriented application.
Using effects is not about animating and jazzing up anything and everything arbitrarily in a user interface; they’re about using the right technique to achieve the goal and improving the experience of the user to make them more productive in using your application. And heck, maybe your users will even like your application more in the process.
Have you thought about adding tooling support (for example in NetBeans) for the TimingFramework?
I would love to see tool support for creating animations in general, whether it’s a tool for creating animated applications or just adding animated effects to a standard GUI.
The original goal of the Timing Framework was not just the library itself, which is just about the plumbing details of running timers and interpolating values, but to help make animations easier in general. I can envision other libraries layered on top of the Timing Framework to make animated effects easier, or component animations easier, or animated transitions easier. And then on top of these, we need tools to make it all dead simple to all developers.
Are you planning on writing more books on desktop technologies in general and on Java desktop in particular?
It’s entirely possible. I’d like to find the intersection of material that the community would like to read and technology that I would like to write about. Specifically, are there other graphics-related topics that warrant a book? Or maybe just one on Java Jokes?
What are your top three wishes for the desktop APIs for the next JDK release?
Animation, performance, and animation.
What are the top three desktop APIs that you wish never existed in the JDK?
Do I have to limit this to desktop APIs?
First on my list is whatever set of classes with ALL_CAPS names. I think the culprit is Corba. I spend a lot of time with the JavaDocs, and I sure am sick of seeing all of those CAPITALIZED classes screaming out at me from the list of all classes.
Next would be PixelGrabber, which tends to be a common way (still!) that people use for getting at the pixel data of an Image. If only we had created BufferedImage in 1.0, then there would have been a far easier and faster mechanism for getting that data.
Finally, I’ll pick on Image.getScaledInstance(). It’s just too horribly slow to be useful, but many people still use it because it’s probably the most obvious route to quality down-scaling in the API. Check out the Images chapter in the book or Chris Campbell‘s excellent article on java.net for the nitty gritty details on how slow this method is and what better alternatives you have.
Do you see yourself in Java desktop area in five years?
Sure! You can never tell about this stuff, but it’s clear that I’ll be fooling around with pixels somewhere. If it’s not related to graphics, I’m probably not interested.
Would you take this book with you to a deserted island?
I think not. After writing, re-writing, and editing the entire book several times, I’ve probably read it enough for several lifetimes. On the other hand, perhaps it would help me pay for passage on a rescue ship. Also, at something like 550 pages, the book would probably help provide some starter fuel for campfires.
Would you take Romain with you to a deserted island?
And then leave him there? That would be cruel, but it’s worth considering.
Besides, Romain loves dessert, so I’m sure he’d love a dessert island.
Does Romain have a good taste in food, or is it just a stereotype on French people?
He eats more American junk food than anyone I know. So either our junk food is of very high quality, or the French palate is highly overrated. Or maybe he’s not French and he’s just been faking that accent this whole time.