Você está na página 1de 7

_

Stack Overflow em Portugus um site Veja como funciona:


de perguntas e respostas para
programadores profissionais e
entusiastas. Registre-se, leva apenas
um minuto.
As melhores respostas
Registrar-se Qualquer pessoa recebem votos positivos e
pode fazer uma Qualquer um sobem para os primeiros
pergunta pode responder lugares

Qual a diferena de API, biblioteca e Framework?

Me parecem termos muito prximos e eventualmente vejo textos que trocam um pelo outro, como se em algumas determinadas situaes
suas definies se sobreponham.

Quais seriam as definies tcnicas que permitem distinguir o que API, biblioteca e Framework?

Em quais situaes permitido intercambiar os termos sem ferir sua definio tcnica?

api framework terminologia biblioteca

editada 2/12/14 s 15:44 perguntada 29/05/14 s 11:33


bigown Math
211mil 35 492 765 20,2mil 11 60 97

6 Respostas

S para complementar, ajudar ou confundir um pouco mais :) e ser ligeiramente dissonante.


Os termos podem ser definidos diferentemente dependendo do contexto.

Fui olhar a definio encontrada na Wikipedia em ingls para os termos API, Library e
Framework. "S para variar" uma definio melhor.

API

L fica claro que uma API um conceito mais abstrato que define formas de executar uma
tarefa especfica. a maneira que o seu cdigo se relaciona com uma biblioteca. Algumas
respostas passam a impresso (no necessariamente afirmam) que API para acessar
servios externos a aplicao, e frequentemente isto verdade. Se fosse sempre verdadeiro,
"como manipular uma string" no seria uma API, o que . Muita gente usa o termo API para
outra coisa relacionada que webservices ou algo semelhante, onde obviamente tem
uma API, mas o provimento de servios no a API em si.

De uma certa forma podemos dizer que a API a documentao que determina como um
programador pode realizar uma tarefa atravs de uma biblioteca. Claro que no h uma
relao obrigatria com a documentao. possvel ter uma API (porca) sem documentao.
E a documentao efetiva de uma biblioteca ser prxima mas no necessariamente igual a
API. A API um conjunto de regras para realizar uma tarefa. Ela trata de comportamentos.

Uma API costuma ser estvel, especialmente quando ela de livre uso publicamente. Apesar
de incomum ela pode ter partes documentadas como instveis (mutveis), o que exige muito
cuidado no seu uso.

Em alguns casos uma API pode documentar alguns detalhes de como deve ser a
implementao para garantir que alguns objetivos sejam alcanados.

A API mais uma especificao e no uma implementao.

Biblioteca

A biblioteca normalmente uma implementao real das regras de uma API. Portanto ela
mais concreta. Assim como a API, voc no precisa saber os detalhes da implementao para
us-la. A biblioteca precisa respeitar as regras da API sempre mas no precisa ter sua
implementao estvel. A biblioteca costuma ser autossuficiente.

Uma biblioteca pode conter implementaes pblicas que no fazem parte da API. Us-las
pode trazer risco.

Voc chama uma biblioteca. uma ferramenta. Voc usa o que precisa.

At o momento nenhuma resposta tratou do termo biblioteca como forma de organizao de


cdigos binrios para o uso com aplicaes. Uma biblioteca tambm um arquivo executvel
com um conjunto de funes para executar diversas tarefas. .dll ou .so so arquivos de
biblioteca para ligao dinmica na aplicao. .lib ou .a so arquivos de biblioteca para
ligao esttica na aplicao.

Voc pode ter uma biblioteca de manipulao strings, de expresses regulares, de colees
de dados, de manipulao de arquivos, acesso a um banco de dados, manipulao de
imagens, etc.

As bibliotecas podem ser externas, que o caso de servios web. Esta uma forma comum
hoje em dia para evitar pirataria j que muitas aplicaes so web. Pode ter algumas
vantagens, mas tambm possui muitas desvantagens.

Framework

Um framework normalmente um conjunto de bibliotecas para conseguir executar uma


operao maior. comum um framework encapsular os comportamentos da API em
implementaes mais complexas permitindo o seu uso de forma mais flexvel, frequentemente
atravs de extenses, configuraes e inverses de controle. Como pode ser considerada
uma camada em cima da API eventualmente pode simplific-la em certo sentido. Ele costuma
dar consistncia a um conjunto de bibliotecas (pena que acontece o oposto em alguns casos).

O framework costuma "tomar conta" da sua aplicao deixando "portas" para voc acessar o
que importante para o seu objetivo. comum ter uma grande interdependncia entre seus
componentes. Por estas duas razes, o framework pode se tornar um fardo quando ele no
bem feito, ou no adequado ao que o programador precisa, ou quando o programador no
sabe bem como us-lo. O que muito comum acontecer uma ou mais dessas situaes.

Um framework chama voc. um estilo de vida. Seu projeto se compromete com ele.

Frameworks podem ser entendidos como plataformas de desenvolvimento. Eles possuem


lacunas que devem ser preenchidas pelo programador para funcionar conforme sua
necessidade. Pode ser visto como um esqueleto de uma aplicao. Frequentemente so
confundidos, de forma certa ou errada, como um conjunto de classes.

Algumas vezes o termo usado para determinar um conjunto de arquivos de bibliotecas de


cdigos binrios, ou fontes ou at outros recursos para a aplicao que so relacionados.

Exemplos so os sistemas de GUI, de operaes web, alguns ORMs, um conjunto de


bibliotecas padro de uma linguagem de programao, implementao de um padro MVC,
etc.

Algumas vezes uma biblioteca ou se torna to complexa que acaba virando um framework.
Se isto bom ou ruim deixo para voc decidir.

Toolkits e SDKs
Voc no perguntou mas ainda pode ter os toolkits que podem ser confundidos com
frameworks mas funcionam de forma mais livre, eles so mais como bibliotecas funcionando
em conjunto mas de uma maneira tradicional onde voc chama o que precisa.

Existem ainda os SDKs. Software Development Kits podem assumir a forma de toolkits ou de
frameworks e fornecem tudo o que precisa para programar em cima de uma plataforma
(sistema operacional, banco de dados, aplicao, etc.). Estes kits costumam englobar
ferramentas adicionais alm das bibliotecas alm de documentao e exemplos de cdigos
que ajudam a usar a biblioteca adequadamente.

Concluso
Na maior parte dos tempo os termos podem ser intercambiveis sem causar grande
problema. Todo mundo entende essas trs coisas como um conjunto de cdigos prontos para
alcanar algum objetivo (mesmo que no seja exatamente bem isto em nos trs casos).

Mas quando voc est definindo algo mais formal, quando explica para algum detalhes de
um projeto, melhor usar os termos corretos para dar melhor entendimento. Claro que se o
interlocutor no sabe os termos corretos, a conversa fica truncada de qualquer jeito. A voc
manda o sujeito vir aqui ler isto :)

Algumas definies e imagens eu tirei destas respostas no SO.


editada 23/05 s 12:37 respondida 29/05/14 s 16:13
Comunidade bigown
1 211mil 35 492 765

3 verdade, toolkit e SDK tambm podem entrar na "mistura" desses conceitos. Gostei que tenha citado.
Math 29/05/14 s 16:36

2 Aceitei essa resposta por considerar ela a mais didtica. Math 6/06/14 s 11:29

2 +1 pelo "Estilo de vida" Josh 13/12/14 s 12:34

@bigown estou tentando entender a aplicao real desse termo, e para no abrir outra questo c estou:
onde a API se encontra no cdigo ? Se que existe nexo na minha pergunta... Tipo, ela uma parte do
cdigo, ela o cdigo + documentao, o que compem a API ? MagicHat 30/07/16 s 6:47

1 @MagicHat A grosso modo, o que pblico no cdigo (feito com conscincia) acaba sendo parte da API,
afinal um contrato pblico para uso. Mas se no for documentado no podemos considerar como a API,
pode ser pblico por acaso. bigown 30/07/16 s 11:14

API

API (Application Programming Interface - Interface entre Aplicativo e programao) um


conjunto de instrues e padres de programao para acesso a um aplicativo de software.
Uma empresa de software lana sua API para o pblico de modo que outros criadores de
software possam desenvolver produtos acionados por esse servio.

Pegue como exemplo o MercadoLivre, que disponibiliza a sua API de modo que
desenvolvedores de sites pudessem obter acesso mais fcil a informaes sobre seus
produtos. Com a utilizao da API, um site independente pode postar links diretamente para
produtos da MercadoLivre, com preos atualizados e uma opo que permite compra
imediata.

Com as APIs, os aplicativos conversam uns com os outros sem conhecimento e/ou
interveno dos usurios. Quando voc compra ingressos de cinema online, o site de
ingressos usa uma API para enviar a sua informao de carto de crdito a um aplicativo
remoto que verifica se os dados procedem. Assim que o pagamento confirmado, o aplicativo
remoto envia uma resposta ao site de ingressos liberando a emisso dos ingressos
adquiridos.

Um outro exemplo, a API do Windows proporciona aos desenvolvedores acessar coisas


como:

1. Sistema de arquivos(ie CreateFile, DeleteFile, GetFileSize),


2. Gerenciamento dos Dispositivos(ie SetupDiEnumDeviceInfo, DiShowUpdateDevice),
3. Registro do Windows(ie RegCreateKeyEx, RegDeleteKeyEx),
4. Shell(ie CreateProfile, GetAllUsersProfileDirectory, ShellExecuteEx).

Biblioteca

Uma Biblioteca uma coleo de implementaes(ie funes, classes, procedimentos), que


tem uma interface bem definida pelo qual o comportamento invocado. Alm disso, o
comportamento fornecido para reutilizao por vrios programas independentes. Um
programa invoca o comportamento fornecidos pela biblioteca atravs de um mecanismo da
linguagem. O que distingue a chamada como sendo a uma biblioteca vs outra funo no
mesmo programa, a maneira que o cdigo organizado no sistema.

Framework

Um Framework muitas vezes uma estrutura em camadas, indicando que tipo de programas
podem ou devem ser construdos e como eles se inter-relacionam. Algumas estruturas de
sistemas tambm incluem programas reais, especificam interfaces de programao ou
oferecer ferramentas de programao para usar os Frameworks.

Nota: Imagem retirada do site Dot Net Tricks

Um Framework pode ser para um conjunto de funes dentro de um sistema e como elas se
inter-relacionam, as camadas de um sistema operacional, as camadas de um subsistema de
aplicao, como a comunicao deve ser padronizado em algum nvel de uma rede, e assim
por diante.

editada 2/06/14 s 20:15 respondida 29/05/14 s 12:44


stderr
25,9mil 5 26 58

As definies formais j esto em outras respostas, ento vou tentar uma abordagem mais
pragmtica.

API em geral o conjunto de interfaces, classes e mtodos disponveis para voc usar em um
framework, ferramenta ou servio. Um Web Service REST ou SOAP que possui um conjunto
de servios disponveis pode ser chamado de API. O padro de arquitetura JEE composto
por vrias APIs (Servlets, EJB, etc.). Cada Javadoc documenta a API do respectivo projeto.

Pense num Framework como uma estrutura pr-fabricada que voc "compra", monta as
pecinhas segundo o manual, preenche os miolos com o que faltar e constri o que voc
precisa. Cada um atender escopos diferentes, mas todos tentaro resolver problemas
comuns que o desenvolvedor enfrenta. Por exemplo, um framework web lhe proporcionar
meios para resolver todos os pontos mais comuns de uma arquitetura web: listagem de
dados, internacionalizao, formatao, lgica de controle, concorrncia, escalabilidade e por
a vai.

Por outro lado, existe tambm o conceito de framework de trabalho que vai alm da tecnologia
em si. Ele prope uma forma de trabalho baseado em determinados conceitos. Exemplos so
o RUP e o Scrum, que podem ser chamados de frameworks de processo. O conceito de
MapReduce usado em Big Data tambm um tipo de framework que define como se faz
processamento paralelo e distribudo. A partir dos conceitos, ento se pode construir APIs,
ferramentas, bibliotecas e mesmo frameworks que implementam os conceitos envolvidos.

Uma biblioteca poderia ser bem definida como um conjunto de classes ou rotinas que
auxiliam em tarefas comuns. Dizem que todos os bons programadores tem seu prprio
conjunto de bibliotecas.

Finalmente, considere que todos esses termos esto interligados:

Uma API pode ser definida por uma instituio (W3C, JCP) e implementada por
ferramentas, frameworks e bibliotecas.
Um framework pode implementar e disponibilizar uma ou mais APIs e usar vrias
bibliotecas internas ou de terceiros.
Uma biblioteca tem sua prpria API e pode trabalhar em conjunto com vrios frameworks.

Em teoria, errado usar os termos de forma intercambivel, pois h sutis diferenas


dependendo contexto. Na prtica isso fica um tanto borrado, principalmente quando o usurio
no conhece em detalhes a biblioteca, ferramenta ou framework.

Mesmo assim, algum pode dizer sem nenhum problema que usou a API de formatao do
framework Spring ou ainda a biblioteca de rotinas teis que esto presentes framework Spring
para trabalhar com listas (Collections).

Abstraindo: se um framework implementa uma API, eu posso dizer tanto que estou
usando o framework quanto a API, pois no caso so a mesma "pessoa".

editada 29/05/14 s 12:37 respondida 29/05/14 s 12:26


utluiz
55,7mil 6 96 198

Logo, todo API uma biblioteca? Por exemplo JodaTime uma biblioteca para trabalhar com datas e no
mximo se comunica com outras bibliotecas mas no serve para implementar um servio, e Servlets so
bibliotecas para utilizar o framework web, logo, uma API? Math 29/05/14 s 12:48

1 @Math Toda biblioteca uma API. Servlets no so bibliotecas, uma API pois consiste num conjunto de
interfaces e classes que voc implementa para construir sua aplicao. Mas falando em JSPs podemos
dizer que as taglibs so bibliotecas de uso comum que implentam uma API definida no padro JEE ou
mesmo taglibs adicionais definidas por terceiros. utluiz 29/05/14 s 12:52

1 Uma biblioteca tem uma API (Application Programming Interface). Do mesmo jeito que um programa tem
uma interface com o usurio, mas o programa no apenas a sua tela; uma biblioteca tem uma interface
(nomes de funes, tipos de parmetros, etc.) para acessar a funcionalidade interna, mas a biblioteca no
a API. Algumas vezes as pessoas definem uma API comum para ser usada por vrias bibliotecas, por
exemplo. marcus 29/05/14 s 19:14

De acordo com a Wikipdia:

API

API, de Application Programming Interface (ou Interface de Programao de


Aplicativos) um conjunto de rotinas e padres estabelecidos por um software para a
utilizao das suas funcionalidades por aplicativos que no pretendem envolver-se em
detalhes da implementao do software, mas apenas usar seus servios

Framework

Um framework (ou arcabouo), em desenvolvimento de software, uma abstrao que


une cdigos comuns entre vrios projetos de software provendo uma funcionalidade
genrica. Um framework pode atingir uma funcionalidade especfica, por configurao,
durante a programao de uma aplicao. Ao contrrio das bibliotecas, o framework
quem dita o fluxo de controle da aplicao, chamado de Inverso de Controle.

Mas voc com certeza j procurou pelas definies.

Uma API basicamente uma Aplicao traduzida num servio direcionado, atravs do qual
outras Aplicaes, completas ou no, possam existir. Tudo isso independente da linguagem
pois, como toda Interface (no visual, claro), tem como funo permitir ao programador
compreender uma arquitetura sem conhecer sua implementao.

Perceba que no listei a definio de Biblioteca pois ela est diretamente relacionada um
Framework, mesmo que ela possa no fazer parte de um framework, com todas suas regras
de diretrizes.

Muitas vezes uma biblioteca apenas um grupo de funes de mltiplos arquivos que
permutam solues para resolver um problema especfico (ver abaixo).

E um Framework pode se classificar em dois grupos: os de domnio especfico e os


chamados full-stack que nada mais so do que vrios frameworks de domnio especfico parte
de algo maior, podendo, inclusive, compartilhar dependncias.
E todo framework, seja do tipo que for, possui sua prpria API, com as assinaturas de seus
mtodos os quais, como dito, permite ao programador utiliz-lo sem abrir o cdigo.

Idealmente no se deve misturar as definies para no causar confuso ao interlocutor,


bvio, mas, por exemplo, usar o termo framework tanto para domnio especfico, full stack
inofensivo pois de todo jeito so frameworks.

Mesmo uma simples biblioteca tambm um framework, mas de domnio especfico, termo
nem sempre conhecido o que resulta numa afirmao errnea, porm inofensiva.

J API diferente. Apesar de intrinsecamente relacionada ela representa uma coisa


completamente diferente.

editada 29/05/14 s 12:15 respondida 29/05/14 s 11:59


user7261 Bruno Augusto
7.057 1 22 45

1 Me levantaram algumas dvidas lendo seu texto, toda API uma biblioteca, entretanto nem toda biblioteca
uma API? Uma API ento seria uma biblioteca que interfaceia dois servios? E um Framework um
conjunto de bibliotecas? Math 29/05/14 s 12:37

2 No vejo uma API como uma biblioteca mas sim, toda biblioteca tem sua API, mesmo que muitos
"programadores" (aqueles caras que acham que programam) no verem isso. E sim, um framework um
conjunto de bibliotecas, todas elas codificadas num mesmo padro, estruturadas de uma mesma forma,
regradas sob um mesmo modelo padronizado e etc. Bruno Augusto 29/05/14 s 14:24

API
Application Programming Interface ou Interface de Programao de Aplicativos. Voc usar
uma API para acessar um programa ou servio externo. Por exemplo: tu pode criar um
aplicativo de terceiro para o Facebook, Twitter ou mesmo o StackOverflow usando suas
respectivas APIs. H funcionalidades de sistemas operacionais, como o Windows e Android,
que tambm esto disponveis via APIs.

Biblioteca
Usado para algo que atende uma necessidade especfica. Por exemplo, converter HTML em
PDF, ORM (Object Relational Mapping), entre muitos outros.

Framework
Usado para algo muito mais amplo. Pense na quantidade de coisas que um framework web
faz: rotas, ORM, sesso, versionamento de banco de dados, gerao de HTML,
gerenciamento de usurios, entre muitas outras coisas. Em alguns casos, frameworks so
feitos a partir de vrias bibliotecas funcionando em conjunto.

Ainda sobre API


Como foi dito nas outras respostas, tanto bibliotecas quanto frameworks costumam ter uma
API, ou seja, uma interface documentada para que os programadores consigam us-las.
Neste caso voc est usando tanto a biblioteca/framework como sua respectiva API. Como
exemplo veja a documentao desta API da biblioteca ActiveRecord.

editada 30/05/14 s 1:18 respondida 29/05/14 s 12:06


user7261

Explicao resumida:

API

Serve para integrar sistemas. Algum disponibiliza uma API para que voc consiga integrar
seu sistema com o sistema que disponibilizou a API. Ou voc cria e disponibiliza uma API
caso deseje que algum integre um sistema com o seu. Em geral, pode ser um conjunto de
classes ou maneiras de como acessar um webservice rest ou soap.

Biblioteca

Conjunto de funes agrupadas com a mesma finalidade. como um canivete suo, voc
usa o que precisa, na hora que precisa.

Framework

um esqueleto para construir aplicaes. Voc deve obedecer a estrutura de pastas e seguir
as prticas definidas pelo framework.

respondida 29/12/16 s 14:44


Antonio Alexandre
2.237 1 23