Duvidas de Api

Estou começando com Android. e estou gostando muito, mas tenho minhas duvidas como qualquer iniciante.

Por exemplo:

  • O que são APIs?
  • Pra que servem?
  • Como Usa-las em um app?
  • Uma API é feita por nós? Se não…
  • Onde se pega uma API?

Valeu qualquer ajuda.

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.

Entendi…

Do jeito que vc fala, os sites e sistemas hoje em dia nao sao mais criados do zero…tem sempre uma API pronta pra cada função…é isso mesmo?

Sendo assim, basta eu procurar uma API que realize determinada funcão e inseri no meu projeto?

se for assim criar um sistema é muito facil…

Obrigado pela dica…gostaria de saber mais, como por exemplo, como implementar uma API no meu projeto.

PS: vc tem ou conhece algum tutorial que ensine a criar um chat com android studio e firebase? mas não um que envia notificaçoes, mas um chat como o Whatsap…

obrigado.

de novo, use o termo biblioteca ( que pode ter componentes adequados ao que vc quer ).

realmente, criar um sistema pode ser facil, hoje existem facilidades para fazer coisas em determinados padrões mas se vc quiser fazer algo ligeiramente diferente vc vai ter que programar ( ou usar outra coisa, o que pode levar tempo ).

cada biblioteca que vc adiciona representa uma dependencia no seu sistema. tome cuidado com isso: elas podem ter outras dependencias e em caso uma dela ter bug vc vai ter que se entender com quem fez a mesma.

Não é incomum uma blblioteca expor diferentes componentes e num dado momento eles decidirem ir em uma outra direção e manter as coisas antigas por backward compability e, nesse caso, é comum dizer "a API X esta deprecated " que significa que um dado conjunto de funcionalidades pode deixar de funcionar no futuro.

Ou vc quer fazer algo e tem diferentes APIs disponiveis e ai vc precisa escolher uma.

mas fora isso, não se usa o termpo API tao frequentemente. isso é um detalhe ( importante ) mas se fala mais em biblioteca, framework e componente.