I tried to answer this question in a free article published in the premiere issue of the free Java Magazine. Feedback is, as always, highly appreciated!