Resumo: API e ABI

Henry Barreto's photo
Henry Barreto
·Feb 4, 2022·

2 min read

O que é API?

O termo API, Application Programming Interface, ou algo como interface para programação de aplicativos, é muito conhecido na área de desenvolvimento de software em geral devido ao uso diário pelos programadores do mundo todo.

Tentando ser um pouco mais direto, uma API é responsável pela comunicação entre diferentes níveis de um Software, agindo como um agente de confiança e estabilidade entre as partes participantes. Um exemplo facilmente encontrado são as API HTTP, que estão presente em quase todas as comunicações entre a camada de apresentação, front-end, e a camáda lógica, back-end, de páginas web.

Um outro exemplo com um pouco menos de rigor na explicação pode ser a utilização de constantes, variáveis, funções, objetos, etc., que você ou alguma biblioteca expõe para os utilizadores da sua biblioteca/modulo; essencialmente código fonte.

O que é ABI?

Já uma ABI, aplication binary interface ou interface binária de aplicação em tradução livre, é responsável pela comunicação entre dois módulos binários, já “compilados”, de um programa. A ABI define como as funções serão invocadas, como os parâmetros serão passados, como os valores serão retornados, como as bibliotecas/módulos serão implementadas e carregadas na memória.

Um dos usos para ABI é a comunicação entre uma biblioteca dinâmica compilada é um programa usuário. Como essa biblioteca estaria compilada e só temos acesso ao binário da mesma, para acessar seus elementos, precisamos de um interface de comunicação; e aí entra a ABI, como um “contrato” disponibilizado pela biblioteca e seguido pelo programa usuário.

Claro, há várias outras questões bem mais complexas por trás de uma ABI, o que merece um artigo completo: como é feita essa comunicação, Linker, sistema operacional, CPU e outros, mas acredito que essa diferenciação básica entre API e ABI é suficiente para esse blog.

Referências:

Did you find this article valuable?

Support Henry Barreto by becoming a sponsor. Any amount is appreciated!

See recent sponsors Learn more about Hashnode Sponsors
 
Share this