Do you have examples? Most modern Java libraries I know (e.g. Guava) implement interfaces and heavily use composition.
The "inheritance based" things mostly got deprecated/replaced when Java 1.5 introduced generics and most libraries needed to be heavily changed anyways.
The Android API is fascinatingly anachronistic. I have been programming Java since 1.0.2, but only recently started working with Android. It's been like stepping through a portal back to a time when we had no idea how to structure software.
Sadly, many of the "older" programmers haven't learned any better. And sometimes it's a limitation of the language (eg, Java which doesn't allow default implementations in interfaces).
Comments
Do you have examples? Most modern Java libraries I know (e.g. Guava) implement interfaces and heavily use composition.
The "inheritance based" things mostly got deprecated/replaced when Java 1.5 introduced generics and most libraries needed to be heavily changed anyways.
The Android View subclasses are an interesting example of a deep inheritance hierarchy in a relatively modern design.
The Android API is fascinatingly anachronistic. I have been programming Java since 1.0.2, but only recently started working with Android. It's been like stepping through a portal back to a time when we had no idea how to structure software.
I've seen a lot of it in product codebases (both Enterprise and Startup) I've had to work with.
I guess it's different when you're maintaining a library - you have more freedom to version up and rewrite things.
Sadly, many of the "older" programmers haven't learned any better. And sometimes it's a limitation of the language (eg, Java which doesn't allow default implementations in interfaces).