Arguement of overuse interface, I trend to support - http://blog.sidu.in/2007/09/programming-to-interfaces-strikes-again.html A very long discussion related, Test-friendly, but not caller-friendly? - http://www.nabble.com/Are-you-really-using-JUnit-during-your-development--t2039307i120.html Comparison of interface vs. abstract class - http://blogs.sun.com/darcy/entry/api_design_interfaces_versus_abstract Some issue of marker interface, may be annotation can help. However, I don't think those so call issue are really problem, those just poor usage of marker interface - http://java.dzone.com/articles/are-marker-interfaces-dead http://martinfowler.com/eaaDev/OrganizingPresentations.html