API

Da Wikipédia, a enciclopédia livre
Ir para navegação Pular para pesquisar

Uma interface de programação de aplicativo ( API ) é uma conexão entre computadores ou entre programas de computador . É uma espécie de interface de software , que oferece um serviço a outros softwares . [1] Um documento ou padrão que descreve como construir tal conexão ou interface é chamado de especificação API . Diz-se que um sistema de computador que atende a esse padrão implementa ou expõe uma API. O termo API pode se referir à especificação ou à implementação.

Em contraste com uma interface de usuário , que conecta um computador a uma pessoa, uma interface de programação de aplicativo conecta computadores ou partes de software entre si. Ele não se destina a ser usado diretamente por uma pessoa (o usuário final ) que não seja um programador de computador que o está incorporando ao software. Uma API geralmente é composta de diferentes partes que atuam como ferramentas ou serviços disponíveis para o programador. Diz-se que um programa ou programador que usa uma dessas partes chama essa parte da API. As chamadas que compõem a API também são conhecidas como sub-rotinas , métodos, solicitações ou terminais . Uma especificação de API define essas chamadas, o que significa que explica como usá-los ou implementá-los.

Um dos objetivos das APIs é ocultar os detalhes internos de como um sistema funciona, expondo apenas as partes que um programador achará úteis e mantendo-as consistentes, mesmo se os detalhes internos forem alterados posteriormente. Uma API pode ser customizada para um par específico de sistemas ou pode ser um padrão compartilhado que permite a interoperabilidade entre muitos sistemas.

As APIs da Web permitem a comunicação entre computadores conectados pela Internet . Também existem APIs para linguagens de programação , bibliotecas de software , sistemas operacionais de computador e hardware de computador . APIs originaram-se na década de 1940, embora o termo não tenha surgido até as décadas de 1960 e 70.

Objetivo

Na construção de aplicativos, uma API (interface de programação de aplicativo) simplifica a programação abstraindo a implementação subjacente e expondo apenas objetos ou ações de que o desenvolvedor precisa. Enquanto uma interface gráfica para um cliente de e - mail pode fornecer a um usuário um botão que executa todas as etapas para buscar e destacar novos e-mails, uma API para entrada / saída de arquivo pode dar ao desenvolvedor uma função que copia um arquivo de um local para outro sem exigindo que o desenvolvedor entenda as operações do sistema de arquivos que ocorrem nos bastidores. [2]

História do termo

Um diagrama de 1978 que propõe a expansão da ideia da API para se tornar uma interface de programação geral, além dos programas de aplicação apenas. [3]

O termo API inicialmente descreveu uma interface apenas para programas voltados para o usuário final, conhecidos como programas de aplicativos . Essa origem ainda se reflete no nome "interface de programação de aplicativo". Hoje, o termo é mais amplo, incluindo também software utilitário e até interfaces de hardware . [4]

A ideia da API é muito mais antiga do que o próprio termo. Os cientistas da computação britânicos Maurice Wilkes e David Wheeler trabalharam em uma biblioteca de software modular na década de 1940 para o EDSAC , um dos primeiros computadores. As sub-rotinas desta biblioteca foram armazenadas em fita de papel perfurada organizada em um arquivo . Esse gabinete também continha o que Wilkes e Wheeler chamavam de "catálogo de biblioteca" de notas sobre cada sub-rotina e como incorporá-la a um programa. Hoje, tal catálogo seria chamado de API (ou uma especificação de API ou documentação de API) porque instrui um programador sobre como usar (ou "chamar") cada sub-rotina de que o programador precisa. [4]

O livro de Wilkes e Wheeler, The Preparation of Programs for an Electronic Digital Computer, contém a primeira especificação API publicada. Joshua Bloch considera que Wilkes e Wheeler "inventaram latentemente" a API, porque é mais um conceito que é descoberto do que inventado. [4]

Embora as pessoas que cunharam o termo API estivessem implementando software em um Univac 1108 , o objetivo de sua API era tornar possíveis programas independentes de hardware . [5]

O termo "interface de programa de aplicação" (sem um sufixo -ing ) é registrado pela primeira vez em um artigo denominado Estruturas de dados e técnicas para computação gráfica remota apresentado em uma conferência AFIPS em 1968. [6] [4] Os autores deste artigo usam o termo para descrever a interação de um aplicativo - um programa gráfico, neste caso - com o resto do sistema do computador. Uma interface de aplicativo consistente (consistindo em chamadas de subrotinas Fortran ) tinha o objetivo de liberar o programador de lidar com idiossincrasias do dispositivo de exibição de gráficos e fornecer independência de hardware se o computador ou a exibição fossem substituídos. [5]

O termo foi introduzido no campo dos bancos de dados por CJ Date [7] em um artigo de 1974 chamado The Relational and Network Approaches: Comparison of the Application Programming Interface . [8] Uma API tornou-se parte da estrutura ANSI / SPARC para sistemas de gerenciamento de banco de dados . Essa estrutura tratou a interface de programação de aplicativos separadamente de outras interfaces, como a interface de consulta. Os profissionais de banco de dados na década de 1970 observaram que essas diferentes interfaces podiam ser combinadas; uma interface de aplicativo suficientemente rica pode oferecer suporte a outras interfaces também. [3]

Essa observação levou a APIs que suportavam todos os tipos de programação, não apenas a programação de aplicativos. Em 1990, a API foi definida simplesmente como "um conjunto de serviços disponíveis para um programador para executar certas tarefas" pelo tecnólogo Carl Malamud . [9]

A ideia da API foi expandida novamente com o surgimento das chamadas de procedimento remoto e APIs da web . À medida que as redes de computadores se tornaram comuns nas décadas de 1970 e 80, os programadores queriam ligar para bibliotecas localizadas não apenas em seus computadores locais, mas em computadores localizados em outros lugares. Essas chamadas de procedimento remoto foram bem suportadas pela linguagem Java em particular. Na década de 1990, com a disseminação da Internet , padrões como CORBA , COM e DCOM competiram para se tornar a forma mais comum de expor serviços de API. [10]

A dissertação de Roy Fielding sobre Estilos de arquitetura e projeto de arquiteturas de software baseadas em rede na UC Irvine em 2000 descreveu a transferência de estado representacional (REST) ​​e descreveu a ideia de uma "interface de programação de aplicativo baseada em rede" que Fielding contrastou com a biblioteca tradicional. baseadas em "APIs. [11] APIs da web XML e JSON tiveram ampla adoção comercial começando em 2000 e continuando a partir de 2021. A API da web é agora o significado mais comum do termo API. [12]

A Web Semântica proposta por Tim Berners-Lee em 2001 incluía "APIs semânticas" que reformulavam a API como uma interface de dados aberta e distribuída, em vez de uma interface de comportamento de software. [13] Interfaces e agentes proprietários tornaram-se mais difundidos do que os abertos, mas a ideia da API como uma interface de dados se consolidou. Como as APIs da web são amplamente utilizadas para trocar dados de todos os tipos online, API se tornou um termo amplo que descreve grande parte da comunicação na Internet. [10] Quando usado desta forma, o termo API tem um significado sobreposto ao termo protocolo de comunicação .

Uso

Bibliotecas e frameworks

A interface para uma biblioteca de software é um tipo de API. A API descreve e prescreve o "comportamento esperado" (uma especificação), enquanto a biblioteca é uma "implementação real" desse conjunto de regras.

Uma única API pode ter várias implementações (ou nenhuma, sendo abstrata) na forma de diferentes bibliotecas que compartilham a mesma interface de programação.

A separação da API de sua implementação pode permitir que programas escritos em uma linguagem usem uma biblioteca escrita em outra. Por exemplo, como Scala e Java compilam para bytecode compatível , os desenvolvedores Scala podem tirar proveito de qualquer API Java. [14]

O uso da API pode variar dependendo do tipo de linguagem de programação envolvida. Uma API para uma linguagem procedural como Lua poderia consistir principalmente em rotinas básicas para executar código, manipular dados ou tratar erros, enquanto uma API para uma linguagem orientada a objetos , como Java, forneceria uma especificação de classes e seus métodos de classe . [15] [16]

As ligações de linguagem também são APIs. Ao mapear os recursos e capacidades de um idioma para uma interface implementada em outro idioma, uma vinculação de idioma permite que uma biblioteca ou serviço escrito em um idioma seja usado ao desenvolver em outro idioma. [17] Ferramentas como SWIG e F2PY, um gerador de interface Fortran -to- Python , facilitam a criação de tais interfaces. [18]

Uma API também pode estar relacionada a uma estrutura de software : uma estrutura pode ser baseada em várias bibliotecas que implementam várias APIs, mas ao contrário do uso normal de uma API, o acesso ao comportamento embutido na estrutura é mediado pela extensão de seu conteúdo com novas classes conectado ao próprio framework.

Além disso, o fluxo geral de controle do programa pode estar fora do controle do chamador e nas mãos da estrutura por inversão de controle ou mecanismo semelhante. [19] [20]

Sistemas operacionais

Uma API pode especificar a interface entre um aplicativo e o sistema operacional . [21] POSIX , por exemplo, especifica um conjunto de APIs comuns que visam permitir que um aplicativo escrito para um sistema operacional compatível com POSIX seja compilado para outro sistema operacional compatível com POSIX.

Linux e Berkeley Software Distribution são exemplos de sistemas operacionais que implementam as APIs POSIX. [22]

A Microsoft demonstrou um forte compromisso com uma API compatível com versões anteriores, particularmente dentro de sua biblioteca API do Windows (Win32), de modo que aplicativos mais antigos podem ser executados em versões mais recentes do Windows usando uma configuração específica do executável chamada "Modo de Compatibilidade". [23]

Uma API difere de uma interface binária de aplicativo (ABI) porque uma API é baseada em código-fonte enquanto uma ABI é baseada em binário . Por exemplo, POSIX fornece APIs enquanto o Linux Standard Base fornece um ABI. [24] [25]

APIs remotas

As APIs remotas permitem que os desenvolvedores manipulem recursos remotos por meio de protocolos , padrões específicos de comunicação que permitem que diferentes tecnologias trabalhem juntas, independentemente do idioma ou plataforma. Por exemplo, a API Java Database Connectivity permite que os desenvolvedores consultem muitos tipos diferentes de bancos de dados com o mesmo conjunto de funções, enquanto a API de chamada de método remoto Java usa o Java Remote Method Protocol para permitir a chamada de funções que operam remotamente, mas parecem locais para o desenvolvedor. [26] [27]

Portanto, APIs remotas são úteis para manter a abstração de objetos na programação orientada a objetos ; uma chamada de método , executada localmente em um objeto proxy , invoca o método correspondente no objeto remoto, usando o protocolo remoto, e adquire o resultado para ser usado localmente como um valor de retorno.

Uma modificação do objeto proxy também resultará em uma modificação correspondente do objeto remoto. [28]

Web APIs

As APIs da Web são as interfaces definidas por meio das quais as interações acontecem entre uma empresa e os aplicativos que usam seus ativos, que também é um Acordo de Nível de Serviço (SLA) para especificar o provedor funcional e expor o caminho do serviço ou URL para seus usuários de API. Uma abordagem de API é uma abordagem de arquitetura que gira em torno de fornecer uma interface de programa para um conjunto de serviços para diferentes aplicativos que atendem a diferentes tipos de consumidores. [29]

Quando usado no contexto de desenvolvimento web , uma API é tipicamente definido como um conjunto de especificações, tais como Hypertext Transfer Protocol (HTTP) mensagens de solicitação, juntamente com uma definição da estrutura de mensagens de resposta, geralmente em um Extensible Markup Language ( XML ) ou formato JavaScript Object Notation ( JSON ). Um exemplo pode ser uma API de empresa de remessa que pode ser adicionada a um site com foco em comércio eletrônico para facilitar o pedido de serviços de remessa e incluir automaticamente as taxas de remessa atuais, sem que o desenvolvedor do site tenha que inserir a tabela de taxas do remetente em um banco de dados da web. Embora "API da web" historicamente tenha sido praticamente sinônimo de serviço da web , a tendência recente (chamada de Web 2.0) está se afastando de serviços da web baseados em SOAP (Simple Object Access Protocol ) e arquitetura orientada a serviços (SOA) em direção a recursos da web no estilo de transferência de estado de representação mais direta (REST) e arquitetura orientada a recursos (ROA). [30] Parte dessa tendência está relacionada ao movimento da Web Semântica em direção ao Resource Description Framework (RDF), um conceito para promover tecnologias de engenharia ontológica baseadas na web . As APIs da Web permitem a combinação de várias APIs em novos aplicativos conhecidos como mashups . [31] No espaço da mídia social, as APIs da web permitiram que as comunidades da web facilitassem o compartilhamento de conteúdo e dados entre comunidades e aplicativos. Dessa forma, o conteúdo criado em um local dinamicamente pode ser postado e atualizado em vários locais na web. [32] Por exemplo, a API REST do Twitter permite que os desenvolvedores acessem os dados principais do Twitter e a API de pesquisa fornece métodos para os desenvolvedores interagirem com os dados de pesquisa e tendências do Twitter. [33]

Design

O design de uma API tem impacto significativo em seu uso. [2] O princípio de ocultação de informações descreve o papel das interfaces de programação como permitindo a programação modular , ocultando os detalhes de implementação dos módulos de forma que os usuários dos módulos não precisem entender as complexidades dentro dos módulos. [34] Assim, o design de uma API tenta fornecer apenas as ferramentas que o usuário espera. [2] O design de interfaces de programação representa uma parte importante da arquitetura de software , a organização de uma peça complexa de software. [35]

Políticas de liberação

APIs são uma das formas mais comuns de integração das empresas de tecnologia. Aqueles que fornecem e usam APIs são considerados membros de um ecossistema de negócios. [36]

As principais políticas para lançar uma API são: [37]

  • Privado : a API é apenas para uso interno da empresa.
  • Parceiro : apenas parceiros de negócios específicos podem usar a API. Por exemplo, empresas de locação de veículos , como Uber e Lyft, permitem que desenvolvedores terceirizados aprovados solicitem caronas diretamente de seus aplicativos. Isso permite que as empresas exerçam controle de qualidade, selecionando quais aplicativos têm acesso à API, e fornece a eles um fluxo de receita adicional. [38]
  • Público : a API está disponível para uso do público. Por exemplo, a Microsoft torna pública a API do Windows e a Apple lança sua API Cocoa , para que o software possa ser escrito para suas plataformas . Nem todas as APIs públicas são geralmente acessíveis a todos. Por exemplo, provedores de serviços de Internet como Cloudflare ou Voxility, usam APIs RESTful para permitir que clientes e revendedores acessem suas informações de infraestrutura, estatísticas de DDoS, desempenho de rede ou controles de painel. [39] O acesso a tais APIs é concedido por "tokens de API" ou validações de status do cliente. [40]

Implicações API pública

Um fator importante quando uma API se torna pública é sua "estabilidade de interface". Mudanças na API - por exemplo, adicionar novos parâmetros a uma chamada de função - podem quebrar a compatibilidade com os clientes que dependem dessa API. [41]

Quando partes de uma API apresentada publicamente estão sujeitas a alterações e, portanto, não estáveis, essas partes de uma API específica devem ser documentadas explicitamente como "instáveis". Por exemplo, na biblioteca Google Guava , as partes que são consideradas instáveis, e que podem mudar em breve, são marcadas com a anotação Java @Beta . [42]

Uma API pública às vezes pode declarar partes de si mesma como obsoletas ou rescindidas. Isso geralmente significa que parte da API deve ser considerada uma candidata a ser removida ou modificada de maneira incompatível com versões anteriores. Portanto, essas alterações permitem que os desenvolvedores façam a transição de partes da API que serão removidas ou não suportadas no futuro. [43]

O código do cliente pode conter usos inovadores ou oportunistas que não foram pretendidos pelos designers da API. Em outras palavras, para uma biblioteca com uma base de usuários significativa, quando um elemento passa a fazer parte da API pública, ele pode ser usado de diversas maneiras. [44] Em 19 de fevereiro de 2020, a Akamai publicou seu relatório anual "State of the Internet", mostrando a tendência crescente de cibercriminosos visando plataformas API públicas em serviços financeiros em todo o mundo. De dezembro de 2017 a novembro de 2019, a Akamai testemunhou 85,42 bilhões de ataques de violação de credencial. Cerca de 20%, ou 16,55 bilhões, eram contra nomes de host definidos como terminais de API. Destes, 473,5 milhões têm como alvo organizações do setor de serviços financeiros. [45]

Documentação

A documentação da API descreve quais serviços uma API oferece e como usar esses serviços, com o objetivo de cobrir tudo que um cliente precisa saber para fins práticos.

A documentação é crucial para o desenvolvimento e manutenção de aplicativos que usam a API. [46] A documentação da API é tradicionalmente encontrada em arquivos de documentação, mas também pode ser encontrada em mídias sociais, como blogs, fóruns e sites de perguntas e respostas. [47]

Os arquivos de documentação tradicionais geralmente são apresentados por meio de um sistema de documentação, como Javadoc ou Pydoc, que tem aparência e estrutura consistentes. No entanto, os tipos de conteúdo incluídos na documentação diferem de API para API. [48]

Para maior clareza, a documentação da API pode incluir uma descrição de classes e métodos na API, bem como "cenários de uso típicos, fragmentos de código, fundamentos de design, discussões de desempenho e contratos", mas os detalhes de implementação dos próprios serviços de API são geralmente omitido.

Restrições e limitações sobre como a API pode ser usada também são abordadas na documentação. Por exemplo, a documentação de uma função de API pode observar que seus parâmetros não podem ser nulos, que a própria função não é segura para thread . [49] Como a documentação da API tende a ser abrangente, é um desafio para os escritores manter a documentação atualizada e para os usuários lê-la com atenção, potencialmente gerando bugs. [41]

A documentação da API pode ser enriquecida com informações de metadados, como anotações Java . Esses metadados podem ser usados ​​pelo compilador, ferramentas e pelo ambiente de tempo de execução para implementar comportamentos personalizados ou tratamento personalizado. [50]

É possível gerar documentação de API de maneira orientada a dados. Ao observar vários programas que utilizam uma determinada API, é possível inferir os usos típicos, bem como os contratos e diretrizes exigidos. [51] Então, modelos podem ser usados ​​para gerar linguagem natural a partir dos dados extraídos.

Disputa sobre proteção de direitos autorais para APIs

Em 2010, a Oracle Corporation processou o Google por ter distribuído uma nova implementação de Java embutida no sistema operacional Android. [52] O Google não adquiriu nenhuma permissão para reproduzir a API Java, embora a permissão tenha sido dada ao projeto OpenJDK semelhante. O juiz William Alsup decidiu no caso Oracle x Google que as APIs não podem ser protegidas por direitos autorais nos EUA e que uma vitória da Oracle teria ampliado amplamente a proteção de direitos autorais para um "conjunto funcional de símbolos" e permitido a proteção de direitos autorais de comandos de software simples:

Aceitar a afirmação da Oracle seria permitir que qualquer pessoa registrasse os direitos autorais de uma versão do código para executar um sistema de comandos e, assim, impedir que todos os outros escrevessem suas diferentes versões para executar todos ou parte dos mesmos comandos. [53] [54]

A decisão da Alsup foi anulada em 2014 em um recurso para o Tribunal de Apelações do Circuito Federal , embora a questão de saber se tal uso de APIs constitui uso justo tenha sido deixada sem solução. [55] [56]

Em 2016, após um julgamento de duas semanas, um júri determinou que a reimplementação do Google da API Java constituía uso justo , mas a Oracle prometeu apelar da decisão. [57] A Oracle venceu em sua apelação, com a decisão do Tribunal de Apelações do Circuito Federal de que o uso das APIs pelo Google não se qualificava para uso justo. [58] Em 2019, o Google apelou para a Suprema Corte dos Estados Unidos sobre as decisões de direitos autorais e de uso justo, e a Suprema Corte concedeu a revisão. [59] Devido à pandemia COVID-19 , as audiências orais no caso foram adiadas até outubro de 2020. [60]

O caso foi decidido pela Suprema Corte em favor do Google. [61]

Exemplos

Veja também

Referências

  1. ^ Reddy, Martin (2011). Design de API para C ++ . Elsevier Science. p. 1. ISBN 9780123850041.
  2. ^ a b c Clarke, Steven (2004). "Medindo a usabilidade da API" . Dr. Dobb's . Retirado em 29 de julho de 2016 .
  3. ^ a b Arquiteturas de banco de dados - um workshop de viabilidade (relatório). Washington, DC: Departamento de Comércio dos EUA, National Bureau of Standards. Abril de 1981. pp. 45–47. hdl : 2027 / mdp.39015077587742 . LCCN 81600004 . Publicação especial NBS 500-76 . Recuperado em 18 de setembro de 2020 . 
  4. ^ a b c d Bloch, Joshua (8 de agosto de 2018). Uma breve e opinativa história da API (fala). QCon. São Francisco: InfoQ . Recuperado em 18 de setembro de 2020 .
  5. ^ a b Algodão, Ira W .; Greatorex, Frank S. (dezembro de 1968). "Estruturas de dados e técnicas para computação gráfica remota" . AFIPS '68: Proceedings of the December 9-11, 1968, Fall Joint Computer Conference . AFIPS 1968 Fall Joint Computer Conference. Eu . San Francisco, Califórnia: Association for Computing Machinery. pp. 533–544. doi : 10.1145 / 1476589.1476661 . ISBN 978-1450378994. OCLC  1175621908 .
  6. ^ "interface do programa de aplicação" . Oxford English Dictionary (ed. Online). Imprensa da Universidade de Oxford. (É necessária uma assinatura ou associação a uma instituição participante .)
  7. ^ Date, CJ (2019). EF Codd e a Teoria Relacional: Uma Revisão Detalhada e Análise dos Principais Escritos de Banco de Dados de Codd . p. 135. ISBN 978-1684705276.
  8. ^ Data, CJ; Codd, EF (janeiro de 1975). "As abordagens relacionais e de rede: Comparação das interfaces de programação de aplicações" . Em Randall Rustin (ed.). Proceedings of 1974 ACM-SIGMOD Workshop on Data Description, Access and Control . Workshop SIGMOD 1974. 2 . Ann Arbor, Michigan: Association for Computing Machinery. pp. 83-113. doi : 10.1145 / 800297.811532 . ISBN 978-1450374187. OCLC  1175623233 .
  9. ^ Carl, Malamud (1990). Analisando Redes Novell . Van Nostrand Reinhold. p. 294. ISBN 978-0442003647.
  10. ^ a b Jin, Brenda; Sahni, Saurabh; Shevat, Amir (2018). Projetando APIs da Web . O'Reilly Media. ISBN 9781492026877.
  11. ^ Fielding, Roy (2000). Estilos arquitetônicos e projeto de arquiteturas de software baseadas em rede (PhD) . Recuperado em 18 de setembro de 2020 .
  12. ^ Lane, Kin (10 de outubro de 2019). "Introdução às APIs: História das APIs" . Carteiro . Recuperado em 18 de setembro de 2020 . Quando você ouve a sigla "API" ou sua versão expandida "Interface de programação de aplicativo", é quase sempre em referência à nossa abordagem moderna, em que usamos HTTP para fornecer acesso a dados legíveis por máquina em um formato JSON ou XML, muitas vezes simplesmente conhecido como “APIs da web”. As APIs existem há quase tanto tempo quanto a computação, mas as APIs da web modernas começaram a tomar forma no início dos anos 2000.
  13. ^ Dotsika, Fefie (agosto de 2010). "APIs Semânticas: Escalando em direção à Web Semântica". International Journal of Information Management . 30 (4): 335–342. doi : 10.1016 / j.ijinfomgt.2009.12.003 .
  14. ^ Odersky, Martin; Spoon, Lex; Venners, Bill (10 de dezembro de 2008). "Combinando Scala e Java" . www.artima.com . Retirado em 29 de julho de 2016 .
  15. ^ de Figueiredo, Luiz Henrique; Ierusalimschy, Roberto ; Filho, Waldemar Celes (1994). “Desenho e implementação de uma linguagem de extensão de aplicações” . TeCGraf Grupo de Tecnologia Em Computação Gráfica: 273–284. CiteSeerX 10.1.1.47.5194 . S2CID 59833827 . Retirado em 29 de julho de 2016 .  
  16. ^ Sintes, Tony (13 de julho de 2001). "Afinal, o que é a API Java?" . JavaWorld . Página visitada em 2020-07-18 .
  17. ^ Emery, David. "Padrões, APIs, interfaces e ligações" . Acm.org. Arquivado do original em 16/01/2015 . Página visitada em 08/08/2016 .
  18. ^ "F2PY.org" . F2PY.org . Página visitada em 2011-12-18 .
  19. ^ Fowler, Martin. "Inversão de controle" .
  20. ^ Fayad, Mohamed. "Estruturas de aplicativos orientadas a objetos" .
  21. ^ Lewine, Donald A. (1991). Guia do programador POSIX . O'Reilly & Associates, Inc. p. 1. ISBN 9780937175736. Retirado em 2 de agosto de 2016 .
  22. ^ West, Joel; Dedrick, Jason (2001). "Padronização de código aberto: a ascensão do Linux na era da rede" (PDF) . Conhecimento, tecnologia e política . 14 (2): 88-112 . Retirado em 2 de agosto de 2016 .
  23. ^ Microsoft (outubro de 2001). "Suporte para Windows XP" . Microsoft. p. 4. Arquivado do original em 26/09/2009.
  24. ^ "Introdução ao LSB" . Linux Foundation. 21 de junho de 2012 . Página visitada em 2015-03-27 .
  25. ^ Stoughton, Nick (abril de 2005). "Atualização de padrões" (PDF) . USENIX . Página visitada em 04/06/2009 .
  26. ^ Bierhoff, Kevin (23 de abril de 2009). "Conformidade do protocolo API em software orientado a objetos" (PDF) . Instituto CMU de Pesquisa de Software . Retirado em 29 de julho de 2016 .
  27. ^ Wilson, M. Jeff (10 de novembro de 2000). "Fique esperto com proxies e RMI" . JavaWorld . Página visitada em 2020-07-18 .
  28. ^ Henning, Michi; Vinoski, Steve (1999). Programação CORBA avançada com C ++ . Addison-Wesley . ISBN 978-0201379273. Retirado em 16 de junho de 2015 .
  29. ^ "API-fication" (download de PDF) . www.hcltech.com . Agosto de 2014.
  30. ^ Benslimane, Djamal; Schahram Dustdar; Amit Sheth (2008). "Mashups de serviços: a nova geração de aplicativos da Web" . IEEE Internet Computing, vol. 12, não. 5 . Instituto de Engenheiros Elétricos e Eletrônicos. pp. 13–15. Arquivado do original em 28/09/2011 . Recuperado em 01/10/2019 .
  31. ^ Niccolai, James (2008-04-23), "So What Is an Enterprise Mashup, Anyway?" , PC World
  32. ^ Parr, Ben (21 de maio de 2009). "A evolução da API de mídia social" . Mashable . Retirado em 26 de julho de 2016 .
  33. ^ "OBTER tendências / local" . developer.twitter.com . Recuperado em 2020-04-30 .
  34. ^ Parnas, DL (1972). "Sobre os critérios a serem usados ​​na decomposição de sistemas em módulos" (PDF) . Comunicações da ACM . 15 (12): 1053–1058. doi : 10.1145 / 361598.361623 . S2CID 53856438 .  
  35. ^ Garlan, David; Shaw, Mary (janeiro de 1994). "Uma introdução à arquitetura de software" (PDF) . Avanços em Engenharia de Software e Engenharia do Conhecimento . 1 . Retirado em 8 de agosto de 2016 .
  36. ^ de Ternay, Guerric (10 de outubro de 2015). "Ecossistema de negócios: criando um fosso econômico" . BoostCompanies . Recuperado em 01/02/2016 .
  37. ^ Boyd, Mark (21/02/2014). "Privado, parceiro ou público: qual estratégia de API é melhor para os negócios?" . ProgrammableWeb . Retirado em 2 de agosto de 2016 .
  38. ^ Weissbrot, Alison (7 de julho de 2016). "APIs de serviço de carro estão em toda parte, mas o que há para aplicativos de parceiros?" . AdExchanger .
  39. ^ "Documentação da API Cloudflare v4" . Cloudflare . 25 de fevereiro de 2020 . Página visitada em 27 de fevereiro de 2020 .
  40. ^ Liew, Zell (17 de janeiro de 2018). "APIs de serviço de carro estão em toda parte, mas o que está nele para aplicativos de parceiros" . Smashing Magazine . Página visitada em 27 de fevereiro de 2020 .
  41. ^ a b Shi, Lin; Zhong, Hao; Xie, Tao; Li, Mingshu (2011). Um estudo empírico sobre a evolução da documentação API . Conferência Internacional sobre Abordagens Fundamentais para Engenharia de Software . Notas de aula em Ciência da Computação. 6603 . pp. 416–431. doi : 10.1007 / 978-3-642-19811-3_29 . ISBN 978-3-642-19810-6. Retirado em 22 de julho de 2016 .
  42. ^ "guava-libraries - Guava: Google Core Libraries for Java 1.6+ - Google Project Hosting" . 04/02/2014 . Página visitada em 11/02/2014 .
  43. ^ Oracle. "Como e quando suspender APIs" . Documentação Java SE . Retirado em 2 de agosto de 2016 .
  44. ^ Mendez, Diego; Baudry, Benoit; Monperrus, Martin (2013). "Evidência empírica de diversidade em grande escala no uso de APIs de software orientado a objetos" . 2013 IEEE 13ª Conferência Internacional de Trabalho sobre Análise e Manipulação de Código-Fonte (SCAM) . pp. 43–52. arXiv : 1307.4062 . doi : 10.1109 / SCAM.2013.6648183 . ISBN 978-1-4673-5739-5. S2CID  6890739 .
  45. ^ Takanashi, Dean (19 de fevereiro de 2020). "Akamai: Os cibercriminosos estão atacando APIs em empresas de serviços financeiros" . Venture Beat . Página visitada em 27 de fevereiro de 2020 .
  46. ^ Dekel, Uri; Herbsleb, James D. (maio de 2009). "Melhorando a usabilidade da documentação API com o Knowledge Pushing". Instituto de Pesquisa de Software, Escola de Ciência da Computação . CiteSeerX 10.1.1.446.4214 . 
  47. ^ Parnin, Chris; Treude, Cristoph (maio de 2011). "Medindo a documentação da API na Web" . Web2SE : 25–30. doi : 10.1145 / 1984701.1984706 . ISBN 9781450305952. S2CID  17751901 . Retirado em 22 de julho de 2016 .
  48. ^ Maalej, Waleed; Robillard, Martin P. (abril de 2012). "Padrões de conhecimento na documentação de referência de API" (PDF) . IEEE Transactions on Software Engineering . Retirado em 22 de julho de 2016 .
  49. ^ Monperrus, Martin; Eichberg, Michael; Tekes, Elif; Mezini, Mira (3 de dezembro de 2011). “O que os desenvolvedores devem estar cientes? Um estudo empírico sobre as diretrizes da documentação da API”. Engenharia de software empírica . 17 (6): 703–737. arXiv : 1205.6363 . doi : 10.1007 / s10664-011-9186-4 . S2CID 8174618 . 
  50. ^ "Anotações" . Sun Microsystems . Arquivado do original em 25/09/2011 . Página visitada em 30/09/2011 ..
  51. ^ Bruch, Marcel; Mezini, Mira; Monperrus, Martin (2010). "Mineração de diretivas de subclasse para melhorar a reutilização de framework". 2010 7ª Conferência de Trabalho do IEEE sobre Repositórios de Software de Mineração (MSR 2010) . pp. 141-150. CiteSeerX 10.1.1.434.15 . doi : 10.1109 / msr.2010.5463347 . ISBN  978-1-4244-6802-7. S2CID  1026918 .
  52. ^ "Oracle e o fim da programação conforme a conhecemos" . DrDobbs. 01-05-2012 . Página visitada em 2012-05-09 .
  53. ^ "As APIs não podem ter direitos autorais, afirma o juiz no caso da Oracle" . TGDaily. 01/06/2012 . Página visitada em 06/12/2012 .
  54. ^ "Oracle America, Inc. vs. Google Inc" (PDF) . Com fio . 31/05/2012 . Retirado 2013-09-22 .
  55. ^ "Oracle Am., Inc. v. Google Inc., No. 13-1021, Fed. Cir. 2014" .
  56. ^ Rosenblatt, Seth (9 de maio de 2014). "Tribunal fica do lado da Oracle sobre o Android no recurso de patente do Java" . CNET . Página visitada em 2014-05-10 .
  57. ^ "Google vence Oracle - Android faz" uso justo "de APIs Java" . Ars Technica . 26/05/2016 . Página visitada em 2016-07-28 .
  58. ^ Decker, Susan (27 de março de 2018). "Oracle ganha renascimento de caso de bilhões de dólares contra o Google" . Bloomberg Businessweek . Recuperado em 27 de março de 2018 .
  59. ^ Lee, Timothy (25 de janeiro de 2019). "O Google pede que a Suprema Corte anule a decisão desastrosa sobre os direitos autorais da API" . Ars Technica . Recuperado em 8 de fevereiro de 2019 .
  60. ^ vkimber (2020-09-28). "Google LLC v. Oracle America, Inc" . LII / Instituto de Informação Legal . Recuperado em 2021-03-06 .
  61. ^ "Suprema Corte dos Estados Unidos, No. 18–956, GOOGLE LLC, PETITIONER v. ORACLE AMERICA, INC" (PDF) . 5 de abril de 2021.

Outras leituras

Ligações externas