Tuesday, September 04, 2007

Book Review: Filthy Rich Clients

This review will be in two parts. I was contacted about reviewing Filthy Rich Clients by Chet Haase and Romain Guy and at the same time asked to review Safari's "Rough Cuts" subscription. So first, let's get the not so good out of the way.

Safari's "Rough Cuts" is similar to Manning's MEAP (Manning Early Access Program). If you aren't familiar with either one it's basically a way to read a book as chapters are made available online. The difference, as far as I can tell, between MEAP and Rough Cuts is that chapters released through MEAP are complete whereas chapters released through Rough Cuts often times are incomplete. That isn't to say that reading the final draft of a book versus the Rough Cut version is significantly different but there were things missing like diagrams that are referred to in the text. I may be in the minority here but I actually find them useful in most cases and when a book is talking about a diagram its nice to be able to see it. Add that to my dislike of Safari's interface for reading books online and I give it a thumbs down. I'd rather just read the book when it is complete than have incomplete chapters made available.

And now on to some good news. FRC is a great book. The community has needed a book like this for a long time and I can't think of any better folks to write this kind of book than Chet and Romain. I've been following their blogs for a long time and am a big fan of all the cool things Romain has done with Swing.

FRC is a book about "Developing Animated and Graphical Effects for Desktop Java Applications". Yes, that is on the cover but I couldn't think of a better way to describe this book. FRC gives some much needed insight into the inner workings of Swing, AWT, and Java2D and how they all interact. Sure, you can scour the web and locate a lot of articles and blogs that talk about this but its nice to finally have this in one place. But don't worry, its not that deep. Its just enough to help you understand when things start getting cool later on.

The book does assume a basic understanding of desktop development with Java. If you are new to Swing you might want to get a few basics down before delving into FRC. The book reads very well, even going between the two authors, which you can easily tell who wrote what. If its technical it was probably Chet. If it was pretty it was probably Romain. Not to say that Romain isn't technical in his own right.

There are plenty of code fragments in the book to help convey the author's points. In fact, there is a lot. More than I expected. On a sad note, even though all the examples are available on the book's web site they are Netbeans projects. I download a few and tried to compile them with Ant from the command line but they always complained about Netbeans dependencies. Granted, I didn't research this much so the problem may have easily been resolved.

The book is fun and results are immediate. I've already started trying to come up with a side project for myself just to try out a lot of the techniques described in FRC. I'd recommend this book to anyone looking to spruce up their existing desktop applications or design something entirely new and original. Great work Chet and Romain!!


David O'Meara said...

Hey look, I found Gregg :) I was just reading your departure notice on your other blog!

kodeninja said...

Hi Gregg!

I'm working on an existing Swing application (a designer for a workflow app). Soon gonna move up to Tiger (JDK 1.5). Can this book help me too if i want to do some cool things with and basically just jazz up the GUI of my app?


Gregg Bolinger said...

The book may help a little. Some of the cool things in the book I believe are really targeted at Java6. Most things will work in 5 however.

If you are just now moving to java 5 I'd get up to speed on the changed from 1.4 to 5 before jumping into this book though.

Unknown said...

Hi kodeninja!

The only things that are Java SE 6 specific in the book are the use of the LinearGradient class and the use of the AlphaComposite.derive() method. When those are used, it's easy to write a workaround for J2SE 5.0. LinearGradient for instance can be found in SwingX (or emulated with several gradients) and derive() is just another form of AlphaComposite.getInstance().

Chet Haase said...

To clarify: although we do discuss some 6-isms (such as the new Gradients), most of the material applies just as well to 5. Many of the techniques will even work on earlier releases, although some of the utilities (such as the Timing Framework library) depend on language features in 5.

(Hi Gregg - nice review, thanks!)


Gregg Bolinger said...

Thanks for the clarification guys. I wasn't sure if I missed that in the book or if it was left out. Either way, good to know.

Marty said...

I don't use (or have installed) Netbeans. I was able to compile and run all the examples that I tried.

Anonymous said...

There are plenty of code fragments in the book to help convey the author's points. In fact, there is a lot. More than I expected. On a sad note, even though all the examples are available on the book's web site they are Netbeans projects.