This week's book giveaway is in the OCAJP forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide 1Z0-808 and have Jeanne Boyarsky & Scott Selikoff on-line! See this thread for details.
Swing can be fast for complex apps too -- faster than apps with native components, actually -- if you take advantage of the separable model architecture. For example, if you have a mess of data changes, then it's much faster to make them to the data model (of a table or list, say) and then flush the data out to the component than it is to update the values in the component one by one. Some component architectures don't give you that option.