Articulo de referencia

API

Una interfaz de programación de aplicaciones ( API ) es una conexión entre ordenadores o entre programas informáticos . Es un tipo de interfaz de software que ofrece un servicio...

Página semiprotegida

Una interfaz de programación de aplicaciones ( API ) es una conexión entre ordenadores o entre programas informáticos . Es un tipo de interfaz de software que ofrece un servicio a otros programas . [ 1 ] [ 2 ] Un documento o estándar que describe cómo construir dicha conexión o interfaz se denomina especificación de API . Se dice que un sistema informático que cumple con este estándar implementa o expone una API. El término API puede referirse tanto a la especificación como a la implementación.

A diferencia de una interfaz de usuario , que conecta un ordenador con una persona, una interfaz de programación de aplicaciones (API) conecta ordenadores o programas informáticos entre sí. No está diseñada para ser utilizada directamente por una persona (el usuario final ) que no sea un programador [ 2 ] que la incorpora al software. Una API suele estar compuesta por diferentes partes que actúan como herramientas o servicios disponibles para el programador. Se dice que un programa o programador que utiliza una de estas partes llama a esa porción de la API. Las llamadas que componen la API también se conocen como subrutinas , métodos, solicitudes o puntos finales . Una especificación de API define estas llamadas, es decir, explica cómo utilizarlas o implementarlas.

Uno de los principales objetivos de las API es ocultar los detalles internos del funcionamiento de un sistema, exponiendo únicamente las partes que un programador considere útiles y manteniendo su coherencia incluso si dichos detalles internos cambian posteriormente. Una API puede diseñarse a medida para un par de sistemas específicos o puede ser un estándar compartido que permita la interoperabilidad entre múltiples sistemas.

El término API se usa a menudo para referirse a las API web [ 3 ] , que permiten la comunicación entre computadoras conectadas a internet . También existen API para lenguajes de programación , bibliotecas de software , sistemas operativos y hardware . Las API surgieron en la década de 1940, aunque el término no apareció hasta las décadas de 1960 y 1970.

Objetivo

Una API abre un sistema de software a interacciones externas. Permite que dos sistemas de software se comuniquen a través de una interfaz , utilizando señales acordadas mutuamente. [ 4 ] En otras palabras, una API conecta entidades de software entre sí. A diferencia de una interfaz de usuario , una API generalmente no es visible para los usuarios. Es una parte interna del sistema de software, utilizada para la comunicación entre máquinas. [ 5 ]

Una API bien diseñada expone únicamente los objetos o acciones necesarios para el software o los desarrolladores de software. Oculta los detalles que no son útiles. Esta abstracción simplifica la programación. [ 6 ]

Metafóricamente, las API conectan el software como si fueran bloques que se encajan entre sí.

El desarrollo de software mediante API se ha comparado con el uso de bloques de construcción, como los bloques de Lego . Los servicios o bibliotecas de software son análogos a estos bloques; pueden unirse mediante sus API para componer un nuevo producto de software. [ 7 ] Este proceso de unión se denomina integración . [ 4 ]

Por ejemplo, consideremos un sensor meteorológico que ofrece una API. Cuando se transmite un mensaje al sensor, este detecta las condiciones meteorológicas actuales y responde con un informe meteorológico. El mensaje que activa el sensor es una llamada a la API , y el informe meteorológico es una respuesta a la API . [ 8 ] Una aplicación de pronóstico del tiempo podría integrarse con varias API de sensores meteorológicos, recopilando datos meteorológicos de toda un área geográfica.

Una API se suele comparar con un contrato . Representa un acuerdo entre las partes: un proveedor de servicios que ofrece la API y los desarrolladores de software que dependen de ella. Si la API se mantiene estable, o si solo cambia de forma predecible, la confianza de los desarrolladores en ella aumentará. Esto puede incrementar su uso. [ 9 ]

Historia del término

Un diagrama de 1978 que propone la expansión de la idea de la API para convertirse en una interfaz de programación general, más allá de los programas de aplicación únicamente [ 10 ].

El término API inicialmente describía una interfaz únicamente para programas orientados al usuario final, conocidos como programas de aplicación . Este origen aún se refleja en el nombre "interfaz de programación de aplicaciones". Hoy en día, el término es más amplio e incluye también software de utilidad e incluso interfaces de hardware . [ 11 ]

La idea de la API es mucho más antigua que el término en sí. Los científicos informáticos británicos Maurice Wilkes y David Wheeler trabajaron en una biblioteca de software modular en la década de 1940 para EDSAC , una de las primeras computadoras. Las subrutinas de esta biblioteca se almacenaban en cintas de papel perforadas organizadas en un archivador . Este archivador también contenía lo que Wilkes y Wheeler llamaron un "catálogo de biblioteca" con notas sobre cada subrutina y cómo incorporarla a un programa. Hoy en día, dicho catálogo se denominaría API (o especificación de API o documentación de API) porque instruye al programador sobre cómo usar (o "llamar") cada subrutina que necesita. [ 11 ]

El libro de Wilkes y Wheeler, *The Preparation of Programs for an Electronic Digital Computer*, contiene la primera especificación API publicada. Joshua Bloch considera que Wilkes y Wheeler "inventaron latentemente" la API, ya que se trata más de un concepto descubierto que inventado. [ 11 ]

Aunque las personas que acuñaron el término API estaban implementando software en un Univac 1108 , el objetivo de su API era hacer posibles los programas independientes del hardware . [ 12 ]

El término «interfaz de programación de aplicaciones» (sin el sufijo -ing ) se registra por primera vez en un artículo titulado Estructuras de datos y técnicas para gráficos remotos por computadora, presentado en una conferencia de AFIPS en 1968. [ 13 ] [ 11 ] Los autores de este artículo utilizan el término para describir la interacción de una aplicación —un programa gráfico en este caso— con el resto del sistema informático. Una interfaz de aplicación consistente (que consiste en llamadas a subrutinas de Fortran ) tenía como objetivo liberar al programador de lidiar con las peculiaridades del dispositivo de visualización gráfica y proporcionar independencia de hardware en caso de que se reemplazara la computadora o la pantalla. [ 12 ]

El término fue introducido en el campo de las bases de datos por CJ Date [ 14 ] en un artículo de 1974 titulado " Los enfoques relacionales y de red : comparación de la interfaz de programación de aplicaciones" [ 15 ] . Una API pasó a formar parte del marco ANSI/SPARC para sistemas de gestión de bases de datos . Este marco trataba la interfaz de programación de aplicaciones por separado de otras interfaces, como la interfaz de consulta. Los profesionales de bases de datos en la década de 1970 observaron que estas diferentes interfaces podían combinarse; una interfaz de aplicación suficientemente completa podía soportar también las demás interfaces [ 10 ] .

Esta observación dio lugar a API que admitían todo tipo de programación, no solo la programación de aplicaciones. En 1990, el tecnólogo Carl Malamud definió la API simplemente como "un conjunto de servicios disponibles para un programador para realizar ciertas tareas" . [ 16 ]

Captura de pantalla de la documentación de la API web escrita por la NASA.

La idea de la API se expandió nuevamente con el surgimiento de las llamadas a procedimientos remotos y las API web . A medida que las redes informáticas se popularizaron en las décadas de 1970 y 1980, los programadores querían llamar a bibliotecas ubicadas no solo en sus computadoras locales, sino también en computadoras ubicadas en otros lugares. Estas llamadas a procedimientos remotos fueron bien soportadas por el lenguaje Java en particular. En la década de 1990, con la expansión de Internet , estándares como CORBA , COM y DCOM compitieron para convertirse en la forma más común de exponer servicios API. [ 17 ]

La disertación de Roy Fielding , Estilos arquitectónicos y el diseño de arquitecturas de software basadas en redes, presentada en UC Irvine en 2000, describió la transferencia de estado representacional (REST) ​​y la idea de una "interfaz de programación de aplicaciones basada en redes" que Fielding contrastó con las API tradicionales "basadas en bibliotecas". [ 18 ] Las API web XML y JSON tuvieron una amplia adopción comercial a partir de 2000 y continúan hasta 2021. La API web es ahora el significado más común del término API. [ 3 ]

La Web Semántica propuesta por Tim Berners-Lee en 2001 incluía "API semánticas" que reformulaban la API como una interfaz de datos abierta y distribuida en lugar de una interfaz de comportamiento de software. [ 19 ] Las interfaces y agentes propietarios se generalizaron más que los abiertos, pero la idea de la API como una interfaz de datos se afianzó. Debido a que las API web se utilizan ampliamente para intercambiar datos de todo tipo en línea, API se ha convertido en un término amplio que describe gran parte de la comunicación en Internet. [ 17 ] Cuando se utiliza de esta manera, el término API tiene un significado superpuesto con el término protocolo de comunicación .

Tipos

Bibliotecas y marcos de trabajo

La interfaz de una biblioteca de software es un tipo de API. La API describe y prescribe el "comportamiento esperado" (una especificación), mientras que la biblioteca es una "implementación real" de este conjunto de reglas.

Una única API puede tener múltiples implementaciones (o ninguna, al ser abstracta) en forma de diferentes bibliotecas que comparten la misma interfaz de programación.

La separación de la API de su implementación permite que los programas escritos en un lenguaje utilicen una biblioteca escrita en otro. Por ejemplo, dado que Scala y Java se compilan a código de bytes compatible , los desarrolladores de Scala pueden aprovechar cualquier API de Java. [ 20 ]

El uso de API puede variar según el tipo de lenguaje de programación involucrado. Una API para un lenguaje procedimental como Lua podría consistir principalmente en rutinas básicas para ejecutar código, manipular datos o manejar errores, mientras que una API para un lenguaje orientado a objetos , como Java, proporcionaría una especificación de clases y sus métodos de clase . [ 21 ] [ 22 ]La ley de Hyrum establece que "Con un número suficiente de usuarios de una API, no importa lo que se prometa en el contrato: alguien dependerá de todos los comportamientos observables del sistema". [ 23 ] Mientras tanto, varios estudios muestran que la mayoría de las aplicaciones que utilizan una API tienden a usar solo una pequeña parte de ella. [ 24 ]

Las vinculaciones de lenguaje también son API. Al mapear las características y capacidades de un lenguaje a una interfaz implementada en otro lenguaje, una vinculación de lenguaje permite utilizar una biblioteca o servicio escrito en un lenguaje al desarrollar en otro lenguaje. [ 25 ] Herramientas como SWIG y F2PY, un generador de interfaces de Fortran a Python , facilitan la creación de dichas interfaces. [ 26 ]

Una API también puede estar relacionada con un marco de software : un marco puede basarse en varias bibliotecas que implementan varias API, pero a diferencia del uso normal de una API, el acceso al comportamiento integrado en el marco se realiza extendiendo su contenido con nuevas clases incorporadas al propio marco.

Además, el flujo de control general del programa puede estar fuera del control del llamador y en manos del marco mediante inversión de control o un mecanismo similar. [ 27 ] [ 28 ]

Sistemas operativos

Una API puede especificar la interfaz entre una aplicación y el sistema operativo . [ 29 ] POSIX , por ejemplo, especifica un conjunto de API comunes que tienen como objetivo permitir que una aplicación escrita para un sistema operativo compatible con POSIX se compile para otro sistema operativo compatible con POSIX.

Linux y Berkeley Software Distribution son ejemplos de sistemas operativos que implementan las API POSIX. [ 30 ]

Microsoft has shown a strong commitment to a backward-compatible API, particularly within its Windows API (Win32) library, so older applications may run on newer versions of Windows using an executable-specific setting called "Compatibility Mode".[31] How much Microsoft developers' access to the company's operating systems' internal APIs is an advantage is unclear. Richard A. Shaffer of Technologic Computer Letter in 1987 compared the situation to a baseball game in which "Microsoft owns all the bats and the field",[32] and large vendors like Lotus Development and Ashton-Tate reportedly received information about MS-DOS 5.0 that smaller software developers did not.[33]Ed Esber of Ashton-Tate said in a 1987 interview, however, that Bill Gates told him that his developers sometimes had to rewrite software based on early APIs. Gates noted in the interview that Microsoft's Apple Macintosh applications were more successful than those for MS-DOS, because his company did not have to also devote resources to Mac OS.[34]

An API differs from an application binary interface (ABI) in that an API is source code based while an ABI is binary based. For instance, POSIX provides APIs while the Linux Standard Base provides an ABI.[35][36]

Remote APIs

Remote APIs allow developers to manipulate remote resources through protocols, specific standards for communication that allow different technologies to work together, regardless of language or platform. For example, the Java Database Connectivity API allows developers to query many different types of databases with the same set of functions, while the Java remote method invocation API uses the Java Remote Method Protocol to allow invocation of functions that operate remotely, but appear local to the developer.[37][38]

Therefore, remote APIs are useful in maintaining the object abstraction in object-oriented programming; a method call, executed locally on a proxy object, invokes the corresponding method on the remote object, using the remoting protocol, and acquires the result to be used locally as a return value.

Una modificación del objeto proxy también dará como resultado una modificación correspondiente del objeto remoto. [ 39 ]

API web

Las API web son las interfaces definidas a través de las cuales se producen interacciones entre una empresa y las aplicaciones que utilizan sus recursos. Esto también constituye un Acuerdo de Nivel de Servicio (SLA) que especifica el proveedor funcional y expone la ruta del servicio o URL para sus usuarios de API. Un enfoque de API es un enfoque arquitectónico que gira en torno a proporcionar una interfaz de programación a un conjunto de servicios para diferentes aplicaciones que atienden a distintos tipos de consumidores. [ 40 ]

Cuando se utiliza en el contexto del desarrollo web , una API se define típicamente como un conjunto de especificaciones, como mensajes de solicitud del Protocolo de Transferencia de Hipertexto (HTTP), junto con una definición de la estructura de los mensajes de respuesta, generalmente en un formato de Lenguaje de Marcado Extensible ( XML ) o Notación de Objetos JavaScript ( JSON ). Un ejemplo podría ser una API de una empresa de envíos que se puede agregar a un sitio web enfocado en el comercio electrónico para facilitar el pedido de servicios de envío e incluir automáticamente las tarifas de envío actuales, sin que el desarrollador del sitio tenga que ingresar la tabla de tarifas del transportista en una base de datos web. Si bien "API web" históricamente ha sido prácticamente sinónimo de servicio web , la tendencia reciente (la llamada Web 2.0 ) se ha estado alejando de los servicios web basados ​​en el Protocolo Simple de Acceso a Objetos ( SOAP ) y la arquitectura orientada a servicios (SOA) hacia recursos web de estilo transferencia de estado representacional (REST) ​​más directos y arquitectura orientada a recursos (ROA). [ 41 ] Parte de esta tendencia está relacionada con el movimiento de la Web Semántica hacia el Marco de Descripción de Recursos (RDF), un concepto para promover tecnologías de ingeniería de ontologías basadas en la web . Las API web permiten la combinación de múltiples API en nuevas aplicaciones conocidas como mashups . [ 42 ] En el ámbito de las redes sociales, las API web han permitido a las comunidades web facilitar el intercambio de contenido y datos entre comunidades y aplicaciones. De esta forma, el contenido creado en un lugar puede publicarse y actualizarse dinámicamente en múltiples ubicaciones de la web. [ 43 ] Por ejemplo, la API REST de Twitter permite a los desarrolladores acceder a los datos principales de Twitter y la API de búsqueda proporciona métodos para que los desarrolladores interactúen con los datos de búsqueda y tendencias de Twitter. [ 44 ]

Diseño

El diseño de una API tiene un impacto significativo en su uso. [ 6 ] El principio de ocultación de información describe el papel de las interfaces de programación como facilitadoras de la programación modular al ocultar los detalles de implementación de los módulos, de modo que los usuarios de los módulos no necesiten comprender las complejidades internas de los mismos. [ 45 ] Por lo tanto, el diseño de una API busca proporcionar únicamente las herramientas que un usuario esperaría. [ 6 ] El diseño de las interfaces de programación representa una parte importante de la arquitectura de software , la organización de un software complejo. [ 46 ]

Políticas de publicación

Las API son una de las formas más comunes de integración entre las empresas tecnológicas. Aquellas que proporcionan y utilizan API se consideran miembros de un ecosistema empresarial. [ 47 ]

Las principales políticas para publicar una API son: [ 48 ]

  • Privado : La API es solo para uso interno de la empresa.
  • Socio : Solo socios comerciales específicos pueden usar la API. Por ejemplo, empresas de transporte con conductor como Uber y Lyft permiten que desarrolladores externos autorizados soliciten viajes directamente desde sus aplicaciones. Esto les permite controlar la calidad al seleccionar qué aplicaciones tienen acceso a la API y les proporciona una fuente de ingresos adicional. [ 49 ]
  • Público : La API está disponible para uso público. Por ejemplo, Microsoft hace pública la API de Windows y Apple publica su API Cocoa , para que se pueda escribir software para sus plataformas . No todas las API públicas son accesibles para todos. Por ejemplo, los proveedores de servicios de Internet como Cloudflare o Voxility utilizan API RESTful para permitir que los clientes y revendedores accedan a la información de su infraestructura, estadísticas de DDoS, rendimiento de la red o controles del panel de control. [ 50 ] El acceso a dichas API se otorga mediante "tokens de API" o validaciones del estado del cliente. [ 51 ]

Implicaciones de la API pública

Un factor importante cuando una API se hace pública es la "estabilidad de su interfaz". Los cambios en la API —por ejemplo, agregar nuevos parámetros a una llamada a una función— podrían romper la compatibilidad con los clientes que dependen de esa API. [ 52 ]

Cuando partes de una API presentada públicamente están sujetas a cambios y, por lo tanto, no son estables, dichas partes de una API en particular deben documentarse explícitamente como "inestables". Por ejemplo, en la biblioteca Google Guava , las partes que se consideran inestables y que podrían cambiar pronto están marcadas con la anotación de Java@Beta . [ 53 ]

Una API pública a veces puede declarar partes de sí misma como obsoletas o eliminadas. Esto generalmente significa que parte de la API debe considerarse candidata a ser eliminada o modificada de forma incompatible con versiones anteriores. Por lo tanto, estos cambios permiten a los desarrolladores dejar de usar partes de la API que serán eliminadas o no recibirán soporte en el futuro. [ 54 ]

El código del cliente puede contener usos innovadores u oportunistas que no fueron previstos por los diseñadores de la API. En otras palabras, para una biblioteca con una base de usuarios significativa, cuando un elemento pasa a formar parte de la API pública, puede utilizarse de diversas maneras. [ 55 ] El 19 de febrero de 2020, Akamai publicó su informe anual "Estado de Internet", que muestra la creciente tendencia de los ciberdelincuentes a atacar las plataformas de API públicas en los servicios financieros de todo el mundo. Desde diciembre de 2017 hasta noviembre de 2019, Akamai registró 85.420 millones de ataques de violación de credenciales. Alrededor del 20%, o 16.550 millones, fueron contra nombres de host definidos como puntos finales de API. De estos, 473,5 millones tuvieron como objetivo organizaciones del sector de servicios financieros. [ 56 ]

Documentación de la API

La documentación de la API describe qué servicios ofrece una API y cómo utilizar esos servicios, con el objetivo de abarcar todo lo que un cliente necesita saber para fines prácticos.

La documentación es crucial para el desarrollo y mantenimiento de aplicaciones que utilizan la API. [ 57 ] La documentación de la API se encuentra tradicionalmente en archivos de documentación, pero también puede encontrarse en redes sociales como blogs, foros y sitios web de preguntas y respuestas. [ 58 ]

Los archivos de documentación tradicionales suelen presentarse mediante un sistema de documentación, como Javadoc o Pydoc, que tiene una apariencia y estructura consistentes. Sin embargo, los tipos de contenido incluidos en la documentación difieren de una API a otra. [ 59 ]

En aras de la claridad, la documentación de la API puede incluir una descripción de las clases y los métodos, así como escenarios de uso típicos, fragmentos de código, fundamentos de diseño, análisis de rendimiento y contratos, pero generalmente se omiten los detalles de implementación de los servicios de la API. Puede adoptar diversas formas, como documentos instructivos, tutoriales y obras de referencia. También incluirá distintos tipos de información, como guías y funcionalidades.

Las restricciones y limitaciones sobre cómo se puede usar la API también se abordan en la documentación. Por ejemplo, la documentación de una función de la API podría indicar que sus parámetros no pueden ser nulos y que la función en sí no es segura para subprocesos . [ 60 ] Debido a que la documentación de la API tiende a ser exhaustiva, resulta un desafío para los autores mantenerla actualizada y para los usuarios leerla con atención, lo que podría generar errores. [ 52 ]

La documentación de la API se puede enriquecer con información de metadatos, como anotaciones de Java . Estos metadatos pueden ser utilizados por el compilador, las herramientas y el entorno de ejecución para implementar comportamientos o manejo personalizados. [ 61 ]

Es posible generar documentación de API de forma basada en datos. Al observar numerosos programas que utilizan una API determinada, se pueden inferir los usos típicos, así como los contratos y directivas necesarios. [ 62 ] Posteriormente, se pueden utilizar plantillas para generar lenguaje natural a partir de los datos extraídos.

En 2010, Oracle Corporation demandó a Google por haber distribuido una nueva implementación de Java integrada en el sistema operativo Android. [ 63 ] Google no había obtenido ningún permiso para reproducir la API de Java, aunque sí se había otorgado permiso al proyecto similar OpenJDK. El juez William Alsup dictaminó en el caso Oracle contra Google que las API no pueden estar protegidas por derechos de autor en los EE. UU. y que una victoria para Oracle habría ampliado ampliamente la protección de los derechos de autor a un "conjunto funcional de símbolos" y habría permitido la protección por derechos de autor de comandos de software simples:

Aceptar la afirmación de Oracle equivaldría a permitir que cualquiera registrara los derechos de autor de una versión de código para ejecutar un sistema de comandos y, por lo tanto, impediría que otros escribieran versiones diferentes para ejecutar la totalidad o parte de los mismos comandos. [ 64 ] [ 65 ]

El fallo de Alsup fue revocado en 2014 en apelación ante el Tribunal de Apelaciones del Circuito Federal , aunque la cuestión de si dicho uso de API constituye un uso justo quedó sin resolver. [ 66 ] [ 67 ]

En 2016, tras un juicio de dos semanas, un jurado determinó que la reimplementación de la API de Java por parte de Google constituía un uso legítimo , pero Oracle prometió apelar la decisión. [ 68 ] Oracle ganó su apelación, y el Tribunal de Apelaciones del Circuito Federal dictaminó que el uso de las API por parte de Google no calificaba como uso legítimo. [ 69 ] En 2019, Google apeló ante la Corte Suprema de los Estados Unidos tanto por las resoluciones sobre la posibilidad de derechos de autor como sobre el uso legítimo, y la Corte Suprema admitió la revisión. [ 70 ] Debido a la pandemia de COVID-19 , las audiencias orales del caso se retrasaron hasta octubre de 2020. [ 71 ]

El caso fue resuelto por la Corte Suprema a favor de Google. [ 72 ]

Ejemplos

Véase también

Referencias

  1. Perron, Brian E.; Luan, Hui; Qi, Zia; Victor, Bryan G.; Goyal, Kavin (2024). "Desmitificando las interfaces de programación de aplicaciones (API): Desbloqueando el poder de los grandes modelos de lenguaje y otros servicios de IA basados ​​en la web en la investigación del trabajo social". arXiv : 2410.20211 [ cs.SE ].
  2. 1 2 Reddy, Martin (2011). Diseño de API para C++ . Elsevier Science. pág. 1. ISBN  9780123850041.
  3. 1 2 Lane, Kin (10 de octubre de 2019). "Introducción a las API: Historia de las API" . Postman . Recuperado el 18 de septiembre de 2020. Cuando escuchas el acrónimo "API" o su versión expandida "Interfaz de programación de aplicaciones", casi siempre se refiere a nuestro enfoque moderno, en el que usamos HTTP para proporcionar acceso a datos legibles por máquina en un formato JSON o XML, a menudo denominados simplemente "API web". Las API han existido casi desde que existe la informática, pero las API web modernas comenzaron a tomar forma a principios de la década de 2000.
  4. 1 2 Pedro, Bruno (2024). Building an API Product: Design, Implement, Release, and Maintain API Products that Meet User Needs . Packt Publishing. p. 4. ISBN  9781837638536.
  5. Biehl, Matthias (2016). Diseño de API RESTful . API-University Press. pág. 10. ISBN  9781514735169.
  6. 1 2 3 Clarke, Steven (2004). "Medición de la usabilidad de las API" . Dr. Dobb's . Recuperado el 29 de julio de 2016 .
  7. Jin, Brenda; Sahni, Saurabh; Shevat, Amir (2018). «Prefacio». Diseño de API web: Creación de API que encantan a los desarrolladores . O'Reilly Media. ISBN 9781492026877.
  8. Geewax, JJ (2021). Patrones de diseño de API . Manning. pág. 6. ISBN  9781638350330.
  9. Jacobson, Daniel; Brail, Greg; Woods, Dan (2011). APIs: A Strategy Guide . O'Reilly Media. p. 4. ISBN  9781449321642.
  10. 1 2 Arquitecturas de bases de datos: un taller de viabilidad (Informe). Washington, DC: Departamento de Comercio de los Estados Unidos, Oficina Nacional de Estándares. Abril de 1981. págs. 45–47 . hdl : 2027/mdp.39015077587742 . LCCN 81600004. Publicación especial NBS 500-76 . Recuperado el 18 de septiembre de 2020 .  
  11. ^ Bloch, Joshua (8 de agosto de 2018 ) . Una historia breve y objetiva de la API (discurso). QCon. San Francisco: InfoQ . Consultado el 18 de septiembre de 2020 .
  12. 1 2 Cotton, Ira W.; Greatorex, Frank S. (diciembre de 1968). "Estructuras de datos y técnicas para gráficos remotos por computadora" . AFIPS '68: Actas de la Conferencia Conjunta de Computación de Otoño del 9 al 11 de diciembre de 1968. Conferencia Conjunta de Computación de Otoño de AFIPS 1968. Vol. I. San Francisco, California: Association for Computing Machinery. págs. 533–544 . doi : 10.1145/1476589.1476661 . ISBN   978-1450378994OCLC 1175621908 
  13. "interfaz de programación de aplicaciones" . Oxford English Dictionary ( edición en línea). Oxford University Press. (Se requiere suscripción o ser miembro de una institución participante ).
  14. Date, CJ (2019). EF Codd y la teoría relacional: una revisión y análisis detallados de los principales escritos de Codd sobre bases de datos . Lulu.com. pág. 135. ISBN  978-1684705276.
  15. Date, CJ; Codd, EF (enero de 1975). «Los enfoques relacionales y de red: comparación de las interfaces de programación de aplicaciones» . En Randall Rustin (ed.). Actas del Taller ACM-SIGMOD de 1974 sobre Descripción, Acceso y Control de Datos . Taller SIGMOD de 1974. Vol. 2. Ann Arbor, Michigan: Association for Computing Machinery. págs. 83–113 . doi : 10.1145/800297.811532 . ISBN   978-1450374187OCLC 1175623233 .​ 
  16. Carl, Malamud (1990). Analyzing Novell Networks . Van Nostrand Reinhold. p. 294. ISBN  978-0442003647.
  17. 1 2 Jin, Brenda; Sahni, Saurabh; Shevat, Amir (2018). Diseño de API web . Medios O'Reilly. ISBN 9781492026877.
  18. Fielding, Roy (2000). Estilos arquitectónicos y el diseño de arquitecturas de software basadas en redes (PhD) . Recuperado el 18 de septiembre de 2020 .
  19. Dotsika, Fefie (agosto de 2010). "API semánticas: escalando hacia la web semántica". Revista Internacional de Gestión de la Información . 30 (4): 335– 342. doi : 10.1016/j.ijinfomgt.2009.12.003 .
  20. Odersky, Martin; Spoon, Lex; Venners, Bill (10 de diciembre de 2008). "Combinando Scala y Java" . www.artima.com . Consultado el 29 de julio de 2016 .
  21. de Figueiredo, Luiz Henrique; Ierusalimschy, Roberto ; Filho, Waldemar Celes (1994). "El diseño e implementación de un lenguaje para extender aplicaciones" . Actas del XXI Seminario Brasileño de Software y Hardware . págs. 273–284 . CiteSeerX 10.1.1.47.5194 . S2CID 59833827. Recuperado el 29 de julio de 2016 .   
  22. Sintes, Tony (13 de julio de 2001). "¿Qué es exactamente la API de Java?" . JavaWorld . Consultado el 18 de julio de 2020 .
  23. Winters, Titus; Tom Manshreck; Hyrum Wright, eds. (2020). Ingeniería de software en Google: lecciones aprendidas de la programación a lo largo del tiempo . Sebastopol, CA: O'Reilly Media. ISBN 9781492082798OCLC 1144086840 .​ 
  24. Mastrangelo, Luis; Ponzanelli, Luca; Mocci, Andrea; Lanza, Michele; Hauswirth, Matthias; Nystrom, Nathaniel (23 de octubre de 2015). «Úselo bajo su propio riesgo: la API insegura de Java en acción». Actas de la Conferencia Internacional ACM SIGPLAN de 2015 sobre Programación Orientada a Objetos, Sistemas, Lenguajes y Aplicaciones . Nueva York, Nueva York, EE. UU.: Association for Computing Machinery. págs. 695–710 . doi : 10.1145/2814270.2814313 . ISBN  978-1-4503-3689-5.
  25. Emery, David. "Estándares, API, interfaces y enlaces" . Acm.org. Archivado del original el 16 de enero de 2015. Consultado el 8 de agosto de 2016 .
  26. "F2PY.org" . F2PY.org . Consultado el 18 de diciembre de 2011 .
  27. Fowler, Martin. "Inversión de control" .
  28. Fayad, Mohamed. "Marcos de trabajo para aplicaciones orientadas a objetos" .
  29. Lewine, Donald A. (1991). Guía del programador POSIX . O'Reilly & Associates, Inc. pág. 1. ISBN  9780937175736Consultado el 2 de agosto de 2016 .
  30. West, Joel; Dedrick, Jason (2001). "Estandarización de código abierto: el auge de Linux en la era de las redes" (PDF) . Conocimiento, Tecnología y Política . 14 (2): 88–112 . doi : 10.1007/PL00022278 . Recuperado el 2 de agosto de 2016 .
  31. Microsoft (octubre de 2001). "Soporte para Windows XP" . Microsoft. pág. 4. Archivado del original el 26 de septiembre de 2009. 
  32. Barney, Douglas (1987-11-02). "Equilibrándose en la cuerda floja del éxito de Microsoft" . Computerworld . Vol. XXI, n.º 44. pág. SR15 . Consultado el 2025-06-08 .   
  33. Barney, Douglas (1986-07-07). "Favoritismo y las pequeñas empresas" . Computerworld . Vol. 20, n.º 27, págs. 45, 50. Consultado el 13 de enero de 2026 .   
  34. Gates, Bill; Manzi, Jim; Esber, Ed (1987-11-02). "El gran debate del software" . Computerworld (Entrevista). Vol. XXI, n.º 44. Entrevista realizada por Paul Gillin. pág. SR7 . Consultado el 8 de junio de 2025 .   
  35. "Introducción al LSB" . Linux Foundation. 21 de junio de 2012. Archivado del original el 2 de abril de 2015. Consultado el 27 de marzo de 2015 .
  36. Stoughton, Nick (abril de 2005). "Actualización sobre estándares" (PDF) . USENIX . Consultado el 4 de junio de 2009 .
  37. Bierhoff, Kevin (23 de abril de 2009). "Cumplimiento del protocolo API en software orientado a objetos" (PDF) . Instituto de Investigación de Software de la CMU . Recuperado el 29 de julio de 2016 .
  38. Wilson, M. Jeff (10 de noviembre de 2000). "Sácale el máximo provecho a los proxies y RMI" . JavaWorld . Consultado el 18 de julio de 2020 .
  39. Henning, Michi; Vinoski, Steve (1999). Programación avanzada de CORBA con C++ . Addison-Wesley . ISBN 978-0201379273Consultado el 16 de junio de 2015 .
  40. "API-fication" (PDF) . www.hcltech.com . Agosto de 2014.
  41. Benslimane, Djamal; Schahram Dustdar; Amit Sheth (2008). "Services Mashups: The New Generation of Web Applications" . IEEE Internet Computing . 12 (5). IEEE: 13–15 . Bibcode : 2008IIC....12e..13B . doi : 10.1109/MIC.2008.110 . Recuperado el 1 de octubre de 2019 .
  42. Niccolai, James (23 de abril de 2008), "¿Qué es un Enterprise Mashup, de todos modos?" , PC World , archivado del original el 10 de octubre de 2017 , consultado el 17 de septiembre de 2017.
  43. Parr, Ben (21 de mayo de 2009). "La evolución de la API de redes sociales" . Mashable . Recuperado el 26 de julio de 2016 .
  44. "GET trends/place" . developer.twitter.com . Consultado el 30 de abril de 2020 .
  45. Parnas, DL (1972). "Sobre los criterios que deben utilizarse para descomponer sistemas en módulos" (PDF) . Communications of the ACM . 15 (12): 1053– 1058. doi : 10.1145/361598.361623 . S2CID 53856438 . 
  46. Garlan, David; Shaw, Mary (enero de 1994). "Una introducción a la arquitectura de software" (PDF) . Avances en ingeniería de software e ingeniería del conocimiento . 1. Recuperado el 8 de agosto de 2016 .
  47. de Ternay, Guerric (10 de octubre de 2015). "Ecosistema empresarial: creando un foso económico" . BoostCompanies . Archivado del original el 17 de septiembre de 2016. Consultado el 1 de febrero de 2016 .
  48. Boyd, Mark (21 de febrero de 2014). "Privada, asociada o pública: ¿Qué estrategia de API es la mejor para las empresas?" . ProgrammableWeb . Recuperado el 2 de agosto de 2016 .
  49. Weissbrot, Alison (7 de julio de 2016). "Las API de servicios de automóviles están por todas partes, pero ¿qué beneficios obtienen las aplicaciones asociadas?" . AdExchanger .
  50. "Documentación de la API v4 de Cloudflare" . cloudflare . 25 de febrero de 2020. Consultado el 27 de febrero de 2020 .
  51. Liew, Zell (17 de enero de 2018). "Las API de servicios de automóviles están por todas partes, pero ¿qué beneficios obtienen las aplicaciones asociadas?" . Smashing Magazine . Recuperado el 27 de febrero de 2020 .
  52. 1 2 Shi, Lin; Zhong, Hao; Xie, Tao; Li, Mingshu (2011). Un estudio empírico sobre la evolución de la documentación de API . Conferencia internacional sobre enfoques fundamentales de la ingeniería de software. Lecture Notes in Computer Science. Vol. 6603. pp. 416–431 . doi : 10.1007/978-3-642-19811-3_29 . ISBN   978-3-642-19810-6Consultado el 22 de julio de 2016 .
  53. google/guava: Bibliotecas principales de Google para Java en GitHub
  54. Oracle. "Cómo y cuándo descontinuar las API" . Documentación de Java SE . Consultado el 2 de agosto de 2016 .
  55. Méndez, Diego; Baudry, Benoit; Monperrus, Martin (2013). Evidencia empírica de diversidad a gran escala en el uso de API de software orientado a objetos . 2013 IEEE 13.ª Conferencia Internacional de Trabajo sobre Análisis y Manipulación de Código Fuente (SCAM). pp. 43–52 . arXiv : 1307.4062 . doi : 10.1109/SCAM.2013.6648183 . ISBN  978-1-4673-5739-5. S2CID 6890739 . 
  56. Takanashi, Dean (19 de febrero de 2020). "Akamai: Los ciberdelincuentes atacan las API de las empresas de servicios financieros" . Venture Beat . Consultado el 27 de febrero de 2020 .
  57. Dekel, Uri; Herbsleb, James D. (mayo de 2009). "Mejora de la usabilidad de la documentación de API mediante la transferencia de conocimiento". Instituto de Investigación de Software, Facultad de Informática . Bibcode : 2009icse.confR..39D . CiteSeerX 10.1.1.446.4214 . 
  58. Parnin, Chris; Treude, Cristoph (mayo de 2011). «Medición de la documentación de API en la web» . Actas del 2.º Taller Internacional sobre Web 2.0 para Ingeniería de Software . págs. 25-30 . doi : 10.1145/1984701.1984706 . ISBN  9781450305952. S2CID 17751901 . Consultado el 22 de julio de 2016 . 
  59. Maalej, Waleed; Robillard, Martin P. (septiembre de 2012). "Patrones de conocimiento en la documentación de referencia de API" (PDF) . IEEE Transactions on Software Engineering . 39 (9): 1264–1282 . doi : 10.1109/TSE.2013.12 . Recuperado el 22 de julio de 2016 .
  60. Monperrus, Martin; Eichberg, Michael; Tekes, Elif; Mezini, Mira (3 de diciembre de 2011). "¿De qué deberían ser conscientes los desarrolladores? Un estudio empírico sobre las directivas de la documentación de API". Ingeniería de software empírica . 17 (6): 703– 737. arXiv : 1205.6363 . doi : 10.1007/s10664-011-9186-4 . S2CID 8174618 . 
  61. "Anotaciones" . Sun Microsystems . Archivado del original el 25/09/2011 . Consultado el 30/09/2011 ..
  62. Bruch, Marcel; Mezini, Mira; Monperrus, Martin (2010). Minería de directivas de subclases para mejorar la reutilización de marcos . 7.ª Conferencia de Trabajo IEEE sobre Minería de Repositorios de Software (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 . 
  63. "Oracle y el fin de la programación tal como la conocemos" . DrDobbs. 1 de mayo de 2012. Consultado el 9 de mayo de 2012 .
  64. "Las API no pueden estar protegidas por derechos de autor, dice un juez en el caso de Oracle" . TGDaily. 1 de junio de 2012. Archivado del original el 31 de julio de 2020. Consultado el 6 de diciembre de 2012 .
  65. "Oracle America, Inc. vs. Google Inc." (PDF) . Wired . 31 de mayo de 2012. Consultado el 22 de septiembre de 2013 .
  66. "Oracle Am., Inc. v. Google Inc., No. 13-1021, Fed. Cir. 2014" . Justia Law .
  67. Rosenblatt, Seth (9 de mayo de 2014). "El tribunal falla a favor de Oracle en el caso Android en la apelación de la patente de Java" . CNET . Recuperado el 10 de mayo de 2014 .
  68. "Google supera a Oracle: Android hace un "uso justo" de las API de Java" . Ars Technica . 26 de mayo de 2016. Consultado el 28 de julio de 2016 .
  69. Decker, Susan (27 de marzo de 2018). "Oracle gana la reactivación del caso multimillonario contra Google" . Bloomberg Businessweek . Consultado el 27 de marzo de 2018 .
  70. Lee, Timothy (25 de enero de 2019). "Google pide a la Corte Suprema que revoque el desastroso fallo sobre los derechos de autor de las API" . Ars Technica . Consultado el 8 de febrero de 2019 .
  71. vkimber (28-09-2020). "Google LLC v. Oracle America, Inc" . LII / Legal Information Institute . Consultado el 06-03-2021 .
  72. "Corte Suprema de los Estados Unidos, No. 18–956, GOOGLE LLC, PETICIONARIO contra ORACLE AMERICA, INC" (PDF) . 5 de abril de 2021.

Lecturas adicionales

  • Bucher, Taina (16 de noviembre de 2013). "Objetos de sentimiento intenso: el caso de la API de Twitter" . Cultura Computacional (3). ISSN 2047-2390 . Sostiene que "las API están lejos de ser herramientas neutrales" y forman una parte fundamental de la programación contemporánea, entendida como una parte esencial de la cultura.
  • Ondrejka, Cory (28 de febrero de 2014). "Maury, innovación y cambio" . En 1853, pronunció el discurso principal en el Convenio Marítimo de Bruselas, donde propuso un formato de informe estandarizado para datos meteorológicos; si fuera 2005, habría propuesto una API pública para que las computadoras se comunicaran entre sí, con el fin de lograr una recopilación de datos más eficiente y precisa.( URL de texto .)
  • Corte Suprema de los Estados Unidos . "¿ Qué es una API? ". En la opinión del tribunal Google v. Oracle 2021 , págs.  3-7: "Para cada tarea, existe un código informático ; la API (también conocida como Interfaz de Programación de Aplicaciones) es el método para llamar a ese 'código informático' (instrucción, como una receta , en lugar de instrucciones de cocina, se trata de instrucciones para la máquina ) para que se ejecute".
  • Forrester  : Industria de TI  : Caso API  : Google vs. Oracle – 20 de mayo de 2021 – Formato de contenido: Audio con texto – Duración: 26:41
Obtenido de " https://en.wikipedia.org/w/index.php?title=API&oldid=1360602768 "