There have has been a lot of blog posts in recent weeks (Joshua which you mentioned on Java.net included). I think a number of things have contributed to Swing and rich clients in general being where they are today. Swing got pegged with the stereotype that is was slow. This is just now starting to shake off. The .com buzz combinded with
J2EE etc made web applications the hot thing in terms of developer mindshare the last few years. Finally, desktop frameworks didn't rise to the top the way
Struts, WebWork, Tapestry, etc have on the web side. Right now I think things are changing for the better. Companies are realizing that they can't easily get interactive functionality they need with a browser based application.
Now as far as what is holding Swing back / moving forward.
1. Deployment - Webstart is making inroads in this department, but I think it needs to simply just work for users. Until that point you can't use it for massly deployed commercial apps especially. In a corporate enviroment you have some room due to standard configurations on PC's, etc.
2. JRE - Related to deployment is the JRE. The only way to guarantee that things work is to ship your own JRE. I've seen some blog posts where people have gotten this down to 7mgs or so with compression and removing unneeded classes. Sun needs to make a commitment to getting
Java on machines and upgraded with new releases.
3. Evolution of Frameworks - There is still a lot of code that is written and rewritten on the desktop side. I'm hopeful that projects like JDNC and Spring Rich will cause desktop developers to start reusing and enhancing libraries more so there is less total work in getting a Swing client started and working.
The book addresses a number of areas where developers typically have struggles with Swing. The first few chapters go into detail about easing the issues of laying out components. Using the JDK included layouts, placing components is more difficult than creating HTML. I go into things like creating reusable builders to cut down on the code created to build a form. Chapter 5 (which I think is going to be the sample chapter) is a detailed explaination of desktop threading. Finally, chapters 6 and 7 cover Data Binding and Validation using the JGoodies frameworks. These two frameworks can greatly improve application construction time and code simplicity.
The game plan at the moment is to write a sample application in the first few chapters after the 1.0 release. Then I plan on coming back around chapter 10 and doing an entire chapter on client/server communications issues. This chapter should be of particular interest from a rich client perspective.