Watch out for APIs (link muses about APIs in general, not bad ones) that show signs of Ivory Tower Syndrome. Take Swing as the worst case. You've got endless flexibility to create as complicated a model as you'd ever want, and can pull, say, JTable values from rdbms', screen-scrapers, rss feeds, even online weather-predicting toasters.

But to simply have a JTable that self-sorts, a real-world issue, well, you're in big trouble. VB.NET, heck even REALbasic (realsoftware.com) come out of the box with grids that do it, but in Java, you're relearning the quick sort -- or, worse, making do stumbling through reteaching yourself how a bubble sort works b/c "that'd be easier and Moore's Law has caught up with the bubble anyhow".

API makers need to get out of the Ivory Tower and hit the streets before they're done. Or, if they're *only* on the street (exhibit A: VB6 & Windows.Forms; ever try databinding in VB6? Great for demos, and demos *only*), they could learn to hit the Tower.

There's no reason for APIs to get in the way of using great objects, and its the job of the API designer to ensure that their objects cater to both the quick hacker and the truely brilliant power user (who's probably helping make the APIs in the first place, at least with Java).