O que é um Framework?

galera por favor eu quero saber o que é um Framework?
eu já encontrei diversas definições na web mas nenhuma delas me esclareceu exatamente o que é
o framework é a ferramenta que agente usa pra programar?
exemplo: “Eclipse” e “Netbeans” para Java, “PhpEditor” para PHP, “Borland Delphi” para Delphi
obrigado a quem se dispor a me ensinar

Bom, vou tentar explicar…

um framework é um projeto, uma aplicação que serve de base para outras aplicações. Uns anos atrás eu li o Struts in Action e o autor, Ted Husted,diz mais ou menos o seguinte: que os softwares são muito mais parecidos do que imaginamos e realizam várias tarefas em comum. Os frameworks servem para aumentar a produtividade do processo de desenvolvimento, onde eles servem de alicerce, base para as aplicações (Até por isso nome do famoso framework Struts). Um exemplo, o desenvolvedor não precisa criar toda a camada controller de uma aplicação web pois um frameork web já a dispõe.
Um framework ORM realiza a o mapeamento objeto relacional dos objetos da aplicação com a abse de dados e por ae vai!!!

Então, é errado comparar frameworks com IDEs (Eclipse, Netbeans), onde são coisas totalmente diferentes.

[quote=rod_ser]galera por favor eu quero saber o que é um Framework?
eu já encontrei diversas definições na web mas nenhuma delas me esclareceu exatamente o que é
o framework é a ferramenta que agente usa pra programar?
exemplo: “Eclipse” e “Netbeans” para Java, “PhpEditor” para PHP, “Borland Delphi” para Delphi
obrigado a quem se dispor a me ensinar
[/quote]

Isso que voce mencionou são IDEs. Ou seja programas que te auxiliam a programar em determinada linguagem.

Um framework (falando no mundo java) é um componente que você anexa a sua aplicação para utilizar algumas funcionalidades que já estão prontas no framework. Como o hibernate, que é um framework de persistência. Com ele anexo na sua aplicação, você poderá utilizar as funcionalidades dele para acesso a dados, controle de cache, várias coisas.
Resumindo, um framework (ou lib, ou biblioteca) é um carinha que você pega de alguém e usa as funcionalidades que foram implementadas nele. Um framework é geralmente genérico e pode ser usado por diversos tipos de aplicações.

Agora a palavra framework também pode ser usada por outras áreas, como por exemplo administração. Existem frameworks de processos que definem um conjunto de processos que uma empresa pode adotar e dizer que está usando o framework X ou Y. O ITIL por exemplo é um framework de processos, usado na gestão de um ambiente de TI.

Devem existem centenas de usos para a palavra framework.

pessoal mto obrigado
as duas explicações foram bastante claras
mas eu tenho uma outra pergunta pra ter certeza que entendi:
um framework seria uma DLL de uma impressora por exemplo?

Essa linha de o que é ou não framework é bem tênue. Mas um framework está mais associado a maneira de se fazer alguma coisa. É bem genérico. Ele tem um objetivo, claro, porém ele é uma “forma de trabalhar”.
Uma DLL usada para acesso a uma impressora X, é bem específico, pode ser considerada mais uma biblioteca mesmo. Já uma DLL usada para acesso a impressoras de uma forma mais abrangente pode ser considerado um framework.
É bem complicado definir isso, por isso gera muita confusão. Não se preocupe esse tipo de dúvida é algo que sempre vai te acompanhar. Eu mesmo não tenho muita certeza dessas definições que eu te dei. :smiley:

de qualquer maneira já ajudou bastante!!!

mto obrigado!!

Eu tambem estava com a mesma dúvida e já Aproveitando , Qual seria a ou as melhores maneiras de começar a estudar FrameWorks ???

Obrigado

[quote=sidnei d ferreira]Eu tambem estava com a mesma dúvida e já Aproveitando , Qual seria a ou as melhores maneiras de começar a estudar FrameWorks ???

Obrigado
[/quote]

Na verdade Frameworks facilitam seu desenvolvimento onde ao invés de se fazer tudo na “unha” ou “reinventar a roda” ele provê um conjunto de bibliotecas que facilitam sua vida.
Vou citar alguns exemplos de Framework que vc pode aprender um pouco.
Web: Spring, Struts e JSF
Banco de dados: Hibernate, JPA
Há muitos outros mais porém no momento me recordo somente esses.
Espero ter colaborado.
Flw