In Effective Java, Joshua Bloch favors interfaces over abstract classes. However, he notes that a skeletal implementation should come with every interface.
I feel that a skeletal implementation is almost the same as an abstract class. How do these two concepts differ?
Edited after re-reading the aforementioned section in Effective Java
According to this section of the book a skeletal implementation is an abstract class. He recommends this approach because, after a skeletal implementation is in place, it becomes trivial to implement the interface and selectively override methods, even with an anonymous class (as he does in his book).
Previous answer, edited slightly for continuity
A skeletal implementation could theoretically be a complete implementation and therefore concrete. Then it could be used with composition, because it can be instantiated. Whereas abstract classes require inheritance.