vamos la
no começo dos tempos, como vc reusava codigo?
todo o codigo ficava na memoria, e vc controlava cada posição, etc. vc precisava calcular, por exemplo, um cosseno em varias partes, não ia ficar enfiando o codigo pra calcular cosseno sempre.
criava-se uma porção de memoria para o cosseno e vc fazia uma “chamada de função”.
que basicamente é “agora vamos saltar para a posição de memoria que sabe fazer isso, pegar o resultado e voltar pra cá e continuar o programa”. e ai criava-se o protocolo de chamada de função ( como entra parametros? como sai? como retorna ao endereço original? e para uma função chamar outra e outra e outra? )
isso em assembler é coisa de fazer crescer cabelo no peito. mas hoje os tempos são outros.
imagine que vc quer imprimir uma mensagem na saida “padrão”, o famoso print
.
cada hardware vai fazer isso talvez de forma diferente. alguns usam tecnologia x outros y. alguns tem terminal cristal liquido, outros monitor de tubo, outros uma impressora fisica, outros um led que fica piscando, e ai comofas?
a API é uma forma de normalizar isso. define-se a INTERFACE entre um componente e outro.
assim se um componente respeitar a API, vai funcionar.
basicamente o conjunto de tipos, funções, classes, etc, é o que se chama API.
em java: a classe String vc não precisa saber como é, vc usa a API dela, que diz “tenho estes metodos, pode chamar sem medo”.
a classe String esta localizada na biblioteca core da linguagem e é propriedade da SUN/ORACLE. vc pode criar a sua propria classe String por exemplo ( dá trabalho ) basta que respeite a API.
então a pergunta na verdade é: como usar Componentes e Bibliotecas? pq são ELES que expoem uma API ( interface programavel de aplicação ) pra vc usar.
entao o seu programa tem uma API? de certa forma sim, mas vc não precisa se preocupar com isso pq não necessariamente um outro programa vai interagir com o seu (Se for o caso ai vc precisa ver o que é necessario).
como usar ? bom o Android versão x tem uma API versão x e de te da coisas como: mandar SMS, como montar uma telinha, etc. talvez falte algo especifico como poder tocar um tipo especifico de video ou audio, e ai vc vai atras de um componente que faça isso ( ou vc implementa ).
as vezes estas bibliotecas são pagas. as vezes é gratuito sob certas condições. vc descobre na internet.