Diferença de API, Biblioteca e Componente

Boa tarde, gostaria de saber a diferença entre api, biblioteca e componente (caso haja). Dei uma pesquisada na internet mas nao consegui ainda estabelecer uma definição para cada.
Achei o seguinte site que ainda compara biblioteca e api, farei um quote, nao sei se pode postar o site:

[quote]API é justamente a lista e a descrição das funções de uma biblioteca (ou de um aplicativo) que um programador pode chamar dentro do código dele.

  • biblioteca: conjunto de funções pré-compiladas
  • API: lista e descrição das funções[/quote]

Vendo dessa forma, API e biblioteca são “a mesma coisa”?
E o que viria a ser componente?
Obrigado a todos.

Oi,

Na minha opinião: API = Conjunto de métodos disponíveis para utilizar uma determinada biblioteca.

Exemplo: Na tua aplicação você irá utilizar o método SendMail() da biblioteca JMail para conseguir enviar e-mails.

Neste caso, a biblioteca seria o JMail, onde você estaria usando o método SendMail da sua API na tua aplicação.

Já um componente, pode-se definir sendo uma representação gráfica de um Objeto. O que não existe uma definição 100% precisa, pois um componente pode ou não estar ligado em algo gráfico.

Tchauzin!

Oi,

Olha… essa sua pergunta me deixou completamente confusa. Até que cheguei na conclusão acima.

rsrs

Tchauzin!

Muito obrigado, vejo que definir esses termos nao é uma coisa tao simples, rsrs.
:smiley:

Você está confuso porque existe mais de uma definição. Mas, alguns livros fazem as seguintes definições:

  1. Biblioteca, API ou SDK: Conjunto de código pronto. Pode ser um conjunto de funções matemáticas, não precisa necessariamente orientada a objetos. Portanto, é uma designação ampla, que pode ser usada para se referir a qualquer um dos itens abaixo.

  2. Toolkit: Conjunto de classes ou funções cuja arquitetura não se baseia em extensão, mas sim em uso. Um exemplo seria a STL e a OpenCV do C++, ou o pacote java.util.concurrent. Mas, por essa definição, não seria a AWT (Abstract Window Toolkit), já que boa parte de suas classes são extensíveis.

  3. Framework: Biblioteca de classes que suportam uma funcionalidade, mas que baseiam-se em extensão. Como o caso do Swing, onde você é obrigado a implementar um TableModel, por exemplo. O framework, portanto, é mais intrusivo e gera mais acoplamento do que um Toolkit. Geralmente, um framework chega a impor algum tipo de arquitetura ao projeto de software.

  4. Engine: Um framework que geralmente gerencia o fluxo do código (geralmente roda num loop). Seria também o caso do Swing, JMonkeyEngine, Ogre ou do glut. Hoje também associa-se engines a presença de editores e IDEs, que dão suporte ao ecossistema. Por exemplo, o Matisse para escrever telas do Swing, ou os editores de terreno da Unity.

Essas 4 são as definições que mais gosto. Mas autores diferentes misturam esses conceitos uma vez ou outra. Portanto, não fique tão preso as definições.