diferença entre; Framework, lib e .jar

bom dia alguem pode me dizer qual a diferença entre; Framework, lib e .jar.
obrigado

lib (ou biblioteca) é um conjunto de funcionalidades (no caso do Java, classes úteis ou funções úteis encapsuladas em classes) que podem ser reaproveitadas pelos seus projetos. Por exemplo: o projeto Apache Commons.

um framework é uma aplicação semi pronta que possui uma série de pontos de extensão que você, como programador, deve ir preenchendo. Exemplo: Struts. No Struts, você já tem o MVC todo pré-implementado, porém só isto não gera uma aplicação útil. Esta torna-se útil com o “recheio” que você irá fornecer, sob a forma das actions que você irá implementar, etc.

No caso do framework, você sempre vai ver o conceito de inversão de controle aplicado, ao contrário de uma biblioteca. No uso de uma biblioteca, é a sua aplicação que decide quando um método ou classe deve ser usado. No caso de um framework, a situação se inverte. É o framework que decide quando os componentes customizados que você forneceu a este deverão ser usados.

Exemplo: um framework web qualquer que implemente o padrão MVC. Você é o responsável pela implementação dos controladores, mas você jamais os chama diretamente, normalmente é o próprio framework que sabe quando este será chamado, sacou?

É muito comum as pessoas confundirem estes dois conceitos, e chamar qualquer coisa em Java de “framework”. Há inclusive um artigo do Martin Fowler excelente sobre o padrão de inversão de controle, que pode te ajudar pra daná a entender o que vêm a ser um framework de fato ( http://martinfowler.com/articles/injection.html )

E o Jar? É apenas um arquivo no formato zip (que trocamos a extensão para .jar) que contém uma série de arquivos .class ou recursos.

espere a resposta dos outros, mais o que eu acho é o seguinte:

framework: é um conjunto de classes que tem o objetivo montar um modelo de arquitetura e disponibilizar alguns hotspots que são classes que devem ser implementadas para que o projeto funcione e tambem alguns frozenspots que são serviços prontos dos frameworks

lib, é uma bibliotéca, um conjunto de classes utéis para o desenvolvimento.

.jar é um arquivo compactado que pode conter varios arquivos de projeto, ex: libs, frameworks, projetos, classes suas, etc…

acho que é isso

Um jar é um agrupado de uma ou mais classes java, que já foi(foram) compilada(s).
Uma lib é um agrupamento de jars e possíveis outros recursos, que ampliam a disponibilidade de recursos para desenvolver novas classes.
Um framework pode ser composto por várias libs e jars diferentes, cujo objetivo é atender à uma especificação da linguagem, facilitar a codificação (embora seu uso indiscriminado atrapalhe) e permitir que velhos problemas tenham novas soluções.