API design – What makes a good Java API?

I plan to create an API that exposes parts of my software for other developers to use. I'm not sure how I should structure my API to be easy for developers to use. In my case, I'm asking specifically about the Java APIs, but I guess these concepts apply to all languages.