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.
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.
Você está confuso porque existe mais de uma definição. Mas, alguns livros fazem as seguintes definições:
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.
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.
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.
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.