Design de um framework com herança

Tenho notado em alguns posts que quando sai um framework, geralmente Java, que faz uso da herança, o pessoal começa a olhar ‘meio torto’ para o framework, alegando que vc estaria atrelando seu domínio à um framework.
Gostaria de saber a diferença de um framework assim ao Rails, por exemplo, que faz uso de herança e é considerado muito bem desenhado.

PS: Não é nada contra nenhuma tecnologia, apenas quero entender essa questão.

É só uma opinião, mas acho que essa preocupação com herança existe em linguagens onde há uma preocupação muito forte com o tipo, ou seja, com o que um objeto é. Em Ruby é mais importante o que ele faz (duck typing), então não há muita neura sobre se um objeto é do tipo ActiveRecord::Base ou não.

Seria interessante debatermos sobre um exemplo.

Por exemplo vc precisa forçar herança? Não bastaria anotações + interfaces em dado momento?

[quote=peczenyj]Seria interessante debatermos sobre um exemplo.

Por exemplo vc precisa forçar herança? Não bastaria anotações + interfaces em dado momento?[/quote]

Não que eu precise forçar, mas fiquei pensando sobre o assunto, que a maioria dos frameworks Java usando herança, são condiderados mal desenhados,e o Rails usa herança em quase todo framework, por isso a questão.

Um exemplo discutido a mais tempo no fórum foi o Guice, que foi criticado por ter uma classe que teria que ser extendida para fazer bind das suas dependências.

http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/AbstractModule.html
http://www.guj.com.br/java/54508--google-guice-google--di-framework