Biblioteca x framework x API? [fechadas]

33

Qual é a diferença entre uma biblioteca, estrutura e API? Todos eles parecem iguais para mim. Eu gostaria de ouvir as pessoas pensando nisso.

Bob Dole
fonte
2
@ Jorg: Você deveria ter enviado isso como resposta. Tal como está, é um spam limítrofe e entope a página.
2
@Sergio - Jörg W Mittag possui 1171 respostas atenciosas e bem recebidas no SO (42 respostas atenciosas e bem recebidas aqui). Ele não está tentando ser difícil. Ele está tentando melhorar o P.SE mostrando como essa pergunta é desnecessária (sem mencionar que nenhuma resposta aqui menciona a característica distintiva de uma estrutura ainda).
Corbin março

Respostas:

35

Uma biblioteca é uma coleção de funções / objetos que serve a um propósito específico. você pode usar uma biblioteca em uma variedade de projetos.

Uma estrutura é uma coleção de padrões e bibliotecas para ajudar na construção de um aplicativo.

Uma API é uma interface para outros programas interagirem com seu programa sem ter acesso direto.

Em outras palavras, pense em uma biblioteca como um complemento / parte de um aplicativo, uma estrutura como o esqueleto do aplicativo e uma API como uma parte externa do aplicativo.

GSto
fonte
7
Essa não é uma definição muito boa de uma estrutura. Eu realmente não chamar qualquer quadro de uma "coleção de padrões e bibliotecas"
TheLQ
Uma estrutura é mais como um ambiente para construir. Diferente de +1
Klaim 3/11/11
Sim, eu estava um pouco sem palavras por causa disso. alguém tem alguma sugestão melhor? outro sábio sinta-se livre para editar. Procurei na wikipedia, que chama uma estrutura: "As estruturas são um caso especial de bibliotecas de software, pois são abstrações reutilizáveis ​​de código agrupadas em uma API (Interface de programação de aplicativos) bem definida", o que parece causar mais confusão no contexto desta questão do que ajuda.
precisa saber é o seguinte
3
Uma biblioteca é quando seu código é responsável (seu código "usa a biblioteca") e uma estrutura é quando é responsável (a estrutura "executa seu código"). Por exemplo, uma estrutura determina em que ordem as coisas devem acontecer (Swing, servlets), enquanto que em uma biblioteca você decide quando e como ela será usada (conversão de imagem, criptografia). Uma API é apenas uma definição de várias funções que você pode chamar e faz parte de bibliotecas e estruturas.
Martin Wickman
14

Boas respostas até agora, mas elas perdem um ponto-chave - uma estrutura usa IoC . Seu código é cercado por uma estrutura. Ele vive dentro dele. Por outro lado, seu código usa apenas uma biblioteca ou API. Ele mora fora dele. IoC é a diferença.

Roger escasso
fonte
Não é necessariamente verdade. Uma estrutura pode usar a IoC e seu aplicativo pode viver dentro de uma estrutura, mas não precisa. Estupidamente, a entrada da Wikipedia sobre Frameworks lista isso como um 'recurso distintivo' de um framework e faz referência a esta dissertação " dirkriehle.com/computer-science/research/dissertation/… ", mas a dissertação em si não contém a inversão das frases 'ou' ioc 'e na verdade declara "Normalmente, os aplicativos usam não apenas uma estrutura, mas várias". (p26, ref p9)
Kirk Broadhurst
11
@Kirk Broadhurst - na verdade estava pensando em Martin Fowler : "Inversão de controle é uma parte essencial do que diferencia uma estrutura de uma biblioteca (...) Uma estrutura incorpora algum design abstrato, com mais comportamento incorporado. você precisa inserir seu comportamento em vários locais da estrutura, subclassificando ou conectando suas próprias classes. O código da estrutura chama seu código ... "Se concluirmos que a IoC não é um recurso distintivo, não há característica distintiva - são todos iguais e isso não é divertido.
quer
@ScantRoger, o Java Collections Framework usa IoC? Não parece tão .......
Pacerier
3

Uma biblioteca é uma coleção de códigos criados para executar tarefas comuns. O código da biblioteca tende a ser relativamente estável e livre de erros. O uso de bibliotecas apropriadas pode reduzir a quantidade de código que precisa ser gravada. Isso tenderá a reduzir as contagens de linha de código para um aplicativo, aumentando a taxa na qual a funcionalidade é entregue. Na maioria dos casos, é melhor usar uma rotina de biblioteca do que escrever seu próprio código.

Uma API (Application Programming Interface) é uma interface para algumas funcionalidades que permitem que um aplicativo acesse a funcionalidade disponível. Uma API pode ser referida como uma interface. A API existe em vários níveis, incluindo sistema, biblioteca, estrutura, programa e aplicativo. As APIs devem ser definidas antes que o código que as implementa seja implementado.

As APIs devem ser estáveis, embora partes da API possam ser preteridas por vários motivos. Quanto mais amplamente usada a API, mais difícil é alterá-la. A maioria, senão toda a API Java 1.0, ainda está disponível, embora muitos métodos tenham sido preteridos.

Um Framework é uma coleção de APIs projetadas para simplificar a criação de aplicativos. Estruturas fornecem implementações para componentes reutilizáveis. Boas estruturas tendem a ser especializadas em sua aplicação.

O Java Collections Framework é uma coleção de APIs para vários tipos de objetos que podem ser usados ​​para manipular coleções. Ele fornece uma hierarquia de APIs para várias coleções. No Java Collections Framework, a interface SortedSet estende a interface Set, que, por sua vez, estende a interface Collection. Essas APIs são interfaces abstratas e as implementações reais têm nomes diferentes. O Framework de coleções simplifica a implementação de coleções e simplifica as alterações nas implementações durante o desenvolvimento.

As estruturas podem ser construídas com estruturas menores, como é visto no Java Spring Framework, voltado para o desenvolvimento do J2EE. O Spring consiste em mais de uma dúzia de estruturas, muitas das quais podem ser usadas por si próprias ou substituídas por outras estruturas.

O uso das bibliotecas, APIs e estruturas apropriadas pode simplificar o desenvolvimento. Esses componentes cuidam dos problemas comuns e permitem que a equipe de desenvolvimento se concentre nos problemas específicos do aplicativo.

BillThor
fonte
2

Uma estrutura é um avanço da biblioteca. Se sua caixa de ferramentas for uma biblioteca, seu workshop será uma estrutura.

Wikipedia diz

Uma API é uma abstração que descreve uma interface para a interação com um conjunto de funções usadas pelos componentes de um sistema de software

A distinção importante entre uma API e uma interface do usuário é que uma API permite que outros softwares / serviços interajam com sua solução programaticamente.

As APIs podem ser criadas tanto para aplicativos (através de dlls ou plugins) quanto para sites e serviços (através de REST e serviços da web)

Homde
fonte
Boa analogia ...
sunwukung
1

As APIs definem como usar outra coisa em termos de quais objetos e métodos podem ser usados ​​a partir de uma fonte. Por exemplo, a integração do Twitter ou Facebook em um site usa uma API do Twitter ou Facebook para garantir que os dados adequados sejam atualizados.

Estruturas tendem a ser um pouco mais volumosas em certo sentido, pois isso pode quase formar sua própria linguagem às vezes. O jQuery é um exemplo de uma estrutura que tem sua própria sintaxe e carrega um pouco mais de peso em termos de entrar no meu código em um sentido. As estruturas também podem ser plataformas que as tornam semelhantes a APIs em um sentido, por exemplo, o Win32API ou .Net Framework possui vários métodos para criar um aplicativo, para que possam existir estruturas que possuem APIs e APIs que também são exibidas como estruturas.

As bibliotecas tendem a ser arquivos binários que implementam uma API ou Framework e, portanto, são os bits que você precisa para usar uma API ou Framework em alguns casos. Pelo menos é assim que vejo esses termos e as diferenças entre eles.

JB King
fonte
1

Vá para uma biblioteca e comece a ler livros. Se você é o aplicativo, a coleção de livros é a biblioteca. As prateleiras, os armários e o complexo que abriga tudo isso constituem a estrutura. Tudo o que você entra em contato ao executar a tarefa de ler os livros é a API.

explorest
fonte
Esta é uma resposta maravilhosa.
Magus
0

Uma biblioteca é uma coleção de códigos usados ​​para simplificar tarefas comuns - podem ser classes, funções ou o que for específico para seu idioma ou plataforma. Um bom exemplo pode ser uma biblioteca de manipulação de strings que fornece auxiliares para tarefas comuns (construção, divisão, pesquisa ou classificação de strings, etc.).

Uma API (interface de programação de aplicativos) é uma definição ('interface') de como trabalhar com outro aplicativo, sistema ou tecnologia. Essencialmente, define as operações disponíveis para interagir com esse outro sistema. Uma API pode ser uma biblioteca (o que significa que a API está agrupada em uma biblioteca ou em um conjunto de classes), mas a distinção é que uma API sempre faz referência a um sistema externo - seja um banco de dados, serviço da Web, outro aplicativo ou sistema operacional em si.

Um Framework é um conceito maior - ele normalmente contém várias bibliotecas e APIs para executar tarefas comuns. Existe em um nível conceitual mais alto - não é apenas uma coleção de ferramentas, mas também uma coleção de padrões de design, práticas recomendadas e metodologias. Uma Estrutura de software é uma extensão de uma estrutura geral - seus significados incluem ser uma base a partir da qual as coisas são construídas, fornecer suporte e estrutura e fornecer orientação e definição de requisitos.

Kirk Broadhurst
fonte
0

O aplicativo é desenvolvido usando bibliotecas baseadas em uma estrutura e se comunica através de uma API.

Se você criar um aplicativo, diga um aplicativo de processamento de imagem on-line,

  • Você pode usar algumas bibliotecas de processamento de imagem pré-gravadas.
  • em qualquer estrutura que você saiba, que o guiará a construir o aplicativo.
  • Você fornecerá ao aplicativo uma maneira de interagir com o mundo exterior. Essa seria sua API de aplicativos para o resto do mundo.

Quando uma chamada chega ao seu aplicativo

  • seria tratado de uma maneira como você projetou com orientação da estrutura
  • processando a chamada transportada pela biblioteca
  • essas funções serão acessadas através da sua API do mundo exterior

para a pessoa que chama

razões pelas quais existem:

  • biblioteca: evita que você reinvente a roda
  • framework: evita armadilhas inesperadas no design e manuseio do sistema, a menos que o próprio framework tenha falhas
  • API: garante a segurança do aplicativo, interagindo com o núcleo do acesso do mundo real
ganesh
fonte