De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

En informática , una interfaz de programación de aplicaciones ( API ) es una interfaz que define las interacciones entre múltiples aplicaciones de software o intermediarios mixtos de hardware y software. [1] Define los tipos de llamadas o solicitudes que se pueden realizar, cómo hacerlas, los formatos de datos que deben usarse, las convenciones a seguir, etc. También puede proporcionar mecanismos de extensión para que los usuarios puedan extender la funcionalidad existente en de diversas formas y en diversos grados. [2] Una API puede ser completamente personalizada, específica de un componente o diseñada según un estándar de la industria para garantizarinteroperabilidad . A través de la ocultación de información , las API permiten la programación modular , lo que permite a los usuarios utilizar la interfaz independientemente de la implementación.

La referencia a las API web es actualmente el uso más común del término. [3] También hay API para lenguajes de programación , bibliotecas de software , sistemas operativos de computadora y hardware de computadora. Las API se originaron en la década de 1940, aunque el término API no surgió hasta las décadas de 1960 y 1970.

Propósito [ editar ]

Al crear aplicaciones, una API (interfaz de programación de aplicaciones) simplifica la programación al abstraer la implementación subyacente y exponer solo los objetos o acciones que el desarrollador necesita. Si bien una interfaz gráfica para un cliente de correo electrónico puede proporcionar al usuario un botón que realiza todos los pasos para buscar y resaltar nuevos correos electrónicos, una API para la entrada / salida de archivos puede brindarle al desarrollador una función que copie un archivo de una ubicación a otra sin requiriendo que el desarrollador comprenda las operaciones del sistema de archivos que ocurren detrás de escena. [4]

Historia del término [ editar ]

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

El significado del término API se ha ampliado a lo largo de su historia. Primero describió una interfaz solo para programas orientados al usuario final, conocidos como programas de aplicación . Este origen todavía se refleja en el nombre "interfaz de programación de aplicaciones". Hoy en día, el término API es más amplio e incluye también software de utilidad e incluso interfaces de hardware. [6]

La idea de API es mucho más antigua que el término. Los informáticos británicos Wilkes y Wheeler trabajaron en bibliotecas de software modulares en la década de 1940 para la computadora EDSAC . Su libro La preparación de programas para una computadora digital electrónica contiene la primera especificación API publicada. Joshua Bloch afirma que Wilkes y Wheeler "inventaron latentemente" la API, porque es más un concepto que se descubre que se inventa. [6]

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 . [7]

El término "interfaz del programa de aplicación" (sin el sufijo -ing ) se registró por primera vez en un artículo llamado Estructuras de datos y técnicas para gráficos por computadora remota presentado en una conferencia de AFIPS en 1968. [8] [6] Los autores de este artículo utilizan el Término para describir la interacción de una aplicación, un programa de gráficos en este caso, con el resto del sistema informático. Una interfaz de aplicación coherente (que consta de llamadas a subrutinas de Fortran ) tenía la intención de liberar al programador de lidiar con las idiosincrasias del dispositivo de visualización de gráficos y proporcionar independencia del hardware si se reemplazaba la computadora o la pantalla. [7]

El término fue introducido en el campo de las bases de datos por CJ Date [9] en un artículo de 1974 llamado The Relational and Network Approaches: Comparison of the Application Programming Interface . [10] Una API se convirtió en parte del marco ANSI / SPARC para sistemas de administración de bases de datos . Este marco trata la interfaz de programación de aplicaciones por separado de otras interfaces, como la interfaz de consulta. Los profesionales de las bases de datos en la década de 1970 observaron que estas diferentes interfaces podían combinarse; una interfaz de aplicación suficientemente rica también podría admitir otras interfaces. [5]

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

La concepción de la API se amplió de nuevo con los albores de las API web . La disertación de Roy Fielding Architectural Styles and the Design of Network-based Software Architectures en UC Irvine en 2000 describió la transferencia de estado representacional (REST) ​​y describió la idea de una "interfaz de programación de aplicaciones basada en red" que Fielding contrastó con la tradicional "biblioteca- API basadas en ". [12] Las API web XML y JSON tuvieron una adopción comercial generalizada a partir de 2000 y continuaron a partir de 2021.

La API web es ahora el significado más común del término API. [3] Cuando se usa de esta manera, el término API tiene un significado superpuesto con los términos protocolo de comunicación y llamada a procedimiento remoto .

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. [13] En cambio, las interfaces y los agentes propietarios se generalizaron.

Uso [ editar ]

Bibliotecas y marcos [ editar ]

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 sola API puede tener múltiples implementaciones (o ninguna, siendo abstracta) en forma de diferentes bibliotecas que comparten la misma interfaz de programación.

La separación de la API de su implementación puede permitir que los programas escritos en un idioma usen una biblioteca escrita en otro. Por ejemplo, dado que Scala y Java se compilan en un código de bytes compatible , los desarrolladores de Scala pueden aprovechar cualquier API de Java. [14]

El uso de la API puede variar según el tipo de lenguaje de programación involucrado. Una API para un lenguaje de procedimiento 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 . [15] [16]

Los enlaces de idioma también son API. Al mapear las características y capacidades de un idioma a una interfaz implementada en otro idioma, un enlace de idioma permite que una biblioteca o servicio escrito en un idioma se use cuando se desarrolla en otro idioma. [17] Las herramientas tales como SWIG y F2PY, un Fortran -a-- Python generador de interfaz, facilitan la creación de tales interfaces. [18]

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 está mediado por la extensión de su contenido con nuevas clases. conectado al marco en sí.

Además, el flujo de control general del programa puede estar fuera del control de la persona que llama y en manos del marco mediante la inversión del control o un mecanismo similar. [19] [20]

Sistemas operativos [ editar ]

Una API puede especificar la interfaz entre una aplicación y el sistema operativo . [21] 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. [22]

Microsoft ha mostrado un fuerte compromiso con una API compatible con versiones anteriores, particularmente dentro de su biblioteca de API de Windows (Win32), por lo que las aplicaciones más antiguas pueden ejecutarse en versiones más nuevas de Windows usando una configuración específica del ejecutable llamada "Modo de compatibilidad". [23]

Una API se diferencia de una interfaz binaria de aplicación (ABI) en que una API se basa en código fuente mientras que una ABI se basa en binario . Por ejemplo, POSIX proporciona API, mientras que Linux Standard Base proporciona una ABI. [24] [25]

API remotas [ editar ]

Las API remotas permiten a los desarrolladores manipular recursos remotos a través de protocolos , estándares específicos de comunicación que permiten que diferentes tecnologías trabajen juntas, independientemente del idioma o plataforma. Por ejemplo, la API de conectividad de bases de datos de Java permite a los desarrolladores consultar muchos tipos diferentes de bases de datos con el mismo conjunto de funciones, mientras que la API de invocación de métodos remotos de Java utiliza el Protocolo de métodos remotos de Java para permitir la invocación de funciones que operan de forma remota, pero que parecen locales para El desarrollador. [26] [27]

Por lo tanto, las API remotas son útiles para mantener la abstracción de objetos en la programación orientada a objetos ; una llamada a método , ejecutada localmente en un objeto proxy , invoca el método correspondiente en el objeto remoto, utilizando el protocolo de comunicación remota, y adquiere el resultado para ser utilizado localmente como valor de retorno.

Una modificación del objeto proxy también resultará en una modificación correspondiente del objeto remoto. [28]

API web [ editar ]

Las API web son las interfaces definidas a través de las cuales ocurren las interacciones entre una empresa y las aplicaciones que usan sus activos, que también es un Acuerdo de nivel de servicio (SLA) para especificar el proveedor funcional y exponer la ruta del servicio o URL para sus usuarios de API. Un enfoque de API es un enfoque de arquitectura que gira en torno a proporcionar una interfaz de programa a un conjunto de servicios a diferentes aplicaciones que sirven a diferentes tipos de consumidores. [29]

Cuando se utiliza en el contexto del desarrollo web , una API se define normalmente como un conjunto de especificaciones, como los 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 lenguaje de marcado extensible ( XML ) o formato de notación de objetos JavaScript ( JSON ). Un ejemplo podría ser la API de una empresa de envío que se puede agregar a un sitio web centrado 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 remitente en una base de datos web. Si bien históricamente "API web" ha sido prácticamente sinónimo de servicio web , la tendencia reciente (la denominada Web 2.0) se ha alejado 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 de transferencia de estado representacional (REST) y arquitectura orientada a recursos (ROA) más directos . [30] 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 varias API en nuevas aplicaciones conocidas como mashups . [31]En el espacio de las redes sociales, las API web han permitido que las comunidades web faciliten el intercambio de contenido y datos entre comunidades y aplicaciones. De esta manera, el contenido que se crea en un lugar de forma dinámica se puede publicar y actualizar en varias ubicaciones en la web. [32] Por ejemplo, la API REST de Twitter permite a los desarrolladores acceder a los datos básicos de Twitter y la API de búsqueda proporciona métodos para que los desarrolladores interactúen con la búsqueda de Twitter y los datos de tendencias. [33]

Diseño [ editar ]

El diseño de una API tiene un impacto significativo en su uso. [4] El principio de ocultación de información describe el papel de las interfaces de programación como habilitación 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 necesitan comprender las complejidades dentro de los módulos. [34] Por lo tanto, el diseño de una API intenta proporcionar solo las herramientas que un usuario esperaría. [4] El diseño de interfaces de programación representa una parte importante de la arquitectura del software , la organización de una pieza compleja de software. [35]

Políticas de lanzamiento [ editar ]

Las API son una de las formas más comunes de integración de las empresas de tecnología. Aquellos que proporcionan y utilizan API se consideran miembros de un ecosistema empresarial. [36]

Las principales políticas para lanzar una API son: [37]

  • Privada : la API es solo para uso interno de la empresa.
  • Socio : solo socios comerciales específicos pueden utilizar la API. Por ejemplo, las empresas de alquiler de vehículos como Uber y Lyft permiten a los desarrolladores externos autorizados solicitar viajes directamente desde sus aplicaciones. Esto permite a las empresas ejercer un control de calidad seleccionando qué aplicaciones tienen acceso a la API y les proporciona un flujo de ingresos adicional. [38]
  • Pública : la API está disponible para que la utilice el público. Por ejemplo, Microsoft hace pública la API de Windows y Apple lanza su API Cocoa , de modo que se pueda escribir software para sus plataformas . No todos los usuarios pueden acceder a todas las API públicas. 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 DDoS, rendimiento de la red o controles del tablero. [39] El acceso a dichas API se otorga mediante “tokens de API” o validaciones del estado del cliente. [40]

Implicaciones de API públicas [ editar ]

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

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 de Google Guava , las partes que se consideran inestables y que podrían cambiar pronto están marcadas con la anotación de Java @Beta . [42]

Una API pública a veces puede declarar partes de sí misma como obsoletas o rescindidas. Por lo general, esto significa que parte de la API debe considerarse candidata para ser eliminada o modificada de una manera incompatible con versiones anteriores. Por lo tanto, estos cambios permiten que los desarrolladores abandonen las partes de la API que se eliminarán o no se admitirán en el futuro. [43]

El código del cliente puede contener usos innovadores u oportunistas que no fueron previstos por los diseñadores de 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, se puede utilizar de diversas formas. [44] El 19 de febrero de 2020, Akamai publicó su informe anual "Estado de Internet", que muestra la creciente tendencia de los ciberdelincuentes que se dirigen a plataformas API públicas en servicios financieros en todo el mundo. Desde diciembre de 2017 hasta noviembre de 2019, Akamai fue testigo de 85,42 mil millones de ataques de violación de credenciales. Aproximadamente el 20%, o 16.550 millones, estaban en contra de los nombres de host definidos como puntos finales de API. De estos, 473,5 millones se han dirigido a organizaciones del sector de servicios financieros. [45]

Documentación [ editar ]

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

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

Los archivos de documentación tradicionales a menudo se presentan a través de 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. [48]

En aras de la claridad, la documentación de la API puede incluir una descripción de las clases y métodos en la API, así como "escenarios de uso típicos, fragmentos de código, fundamentos de diseño, discusiones sobre el rendimiento y contratos", pero los detalles de implementación de los servicios de la API en sí suelen ser omitido.

La documentación también cubre las restricciones y limitaciones sobre cómo se puede utilizar la API. Por ejemplo, la documentación de una función API podría indicar que sus parámetros no pueden ser nulos, que la función en sí no es segura para subprocesos , [49] Debido a que la documentación API tiende a ser completa, es un desafío para los escritores mantener la documentación actualizada y para que los usuarios lo lean con atención, lo que podría generar errores. [41]

La documentación de la API se puede enriquecer con información de metadatos como anotaciones de Java . El compilador, las herramientas y el entorno de tiempo de ejecución pueden utilizar estos metadatos para implementar comportamientos personalizados o manejo personalizado. [50]

Es posible generar documentación API basada en datos. Al observar muchos programas que usan una API determinada, es posible inferir los usos típicos, así como los contratos y directivas requeridos. [51] Luego, las plantillas se pueden usar para generar lenguaje natural a partir de los datos extraídos.

Disputa sobre la protección de los derechos de autor de las API [ editar ]

En 2010, Oracle Corporation demandó a Google por haber distribuido una nueva implementación de Java incrustada en el sistema operativo Android. [52] Google no había obtenido ningún permiso para reproducir la API de Java, aunque se le había otorgado permiso al proyecto similar OpenJDK. El juez William Alsup dictaminó en el caso Oracle v. Google que las API no pueden tener derechos de autor en los EE. UU. Y que una victoria de 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 de los derechos de autor de comandos de software simples:

Aceptar el reclamo de Oracle sería permitir que cualquier persona registre los derechos de autor de una versión del código para ejecutar un sistema de comandos y, por lo tanto, impedir que todos los demás escriban sus diferentes versiones para ejecutar todos o parte de los mismos comandos. [53] [54]

Sin embargo, en 2014, el fallo de Alsup fue anulado 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. [55] [56]

En 2016, luego de 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 justo , pero Oracle prometió apelar la decisión. [57] Oracle ganó en su apelación, y el Tribunal de Apelaciones del Circuito Federal dictaminó que el uso de las API por parte de Google no calificaba para uso legítimo. [58] En 2019, Google apeló ante la Corte Suprema de los Estados Unidos sobre las resoluciones sobre derechos de autor y uso legítimo, y la Corte Suprema otorgó la revisión. [59] Debido a la pandemia de COVID-19 , las audiencias orales del caso se retrasaron hasta octubre de 2020. [60]

Ejemplos [ editar ]

  • ASPI para interfaz de dispositivo SCSI
  • Cocoa and Carbon para Macintosh
  • DirectX para Microsoft Windows
  • EHLLAPI
  • API de Java
  • ODBC para Microsoft Windows
  • API de sonido multiplataforma OpenAL
  • API multiplataforma OpenCL para computación de propósito general para CPU y GPU
  • API de gráficos multiplataforma OpenGL
  • API de OpenMP que admite la programación de multiprocesamiento de memoria compartida multiplataforma en C, C ++ y Fortran en muchas arquitecturas, incluidas las plataformas Unix y Microsoft Windows.
  • Interfaz de programación de aplicaciones de servidor (SAPI)
  • Capa de DirectMedia simple (SDL)

Ver también [ editar ]

  • Prueba de API
  • Escritor de API
  • Web aumentada
  • Convención de llamadas
  • Arquitectura de agente de solicitud de objeto común (CORBA)
  • Comparación de máquinas virtuales de aplicaciones
  • Modelo de objetos de documento (DOM)
  • Función de doble oportunidad
  • Interfaz de función externa
  • Extremos delanteros y traseros
  • Interfaz (informática)
  • Documento de control de interfaz
  • Lista de API de gráficos 3D
  • Microservicios
  • Destrozar nombre
  • API abierta
  • Definiciones de interfaz de servicio abierta
  • Analizando
  • Enchufar
  • RAML (software)
  • Kit de desarrollo de software (SDK)
  • API web
  • Proveedor de contenido web
  • XPCOM

Referencias [ editar ]

  1. ^ "Qué es una API" . Hubspire .
  2. ^ Fisher, Sharon (1989). "OS / 2 EE para obtener la interfaz 3270 antes" . Libros de Google .
  3. ↑ a b Lane, Kin (10 de octubre de 2019). "Introducción a las API: Historia de las API" . Cartero . Consultado el 18 de septiembre de 2020 . Cuando escucha el acrónimo "API" o su versión ampliada "Interfaz de programación de aplicaciones", casi siempre se hace en referencia a nuestro enfoque moderno, ya que usamos HTTP para proporcionar acceso a datos legibles por máquina en un formato JSON o XML, a menudo simplemente denominadas "API web". Las API han existido casi tanto tiempo como la informática, pero las API web modernas comenzaron a tomar forma a principios de la década de 2000.
  4. ↑ a b c 3333 Clarke, Steven (2004). "Midiendo la usabilidad de la API" . Dr. Dobb's . Consultado el 29 de julio de 2016 .
  5. ^ a b Arquitecturas de bases de datos: un taller de viabilidad (Informe). Washington DC: Departamento de Comercio de EE. UU., Oficina Nacional de Normas. Abril de 1981. págs. 45–47. hdl : 2027 / mdp.39015077587742 . LCCN 81600004 . Publicación especial NBS 500-76 . Consultado el 18 de septiembre de 2020 . 
  6. ↑ a b c Bloch, Joshua (8 de agosto de 2018). Una historia breve y con opiniones de la API (habla). QCon. San Francisco: InfoQ . Consultado el 18 de septiembre de 2020 .
  7. ^ a b Algodón, Ira W .; Greatorex, Frank S. (diciembre de 1968). "Estructuras de datos y técnicas para infografía remota" . AFIPS '68: Actas de la Conferencia de Computación Conjunta de Otoño del 9 al 11 de diciembre de 1968 . AFIPS 1968 Conferencia conjunta sobre informática de otoño. Yo . San Francisco, California: Asociación de Maquinaria de Computación. págs. 533–544. doi : 10.1145 / 1476589.1476661 . ISBN 978-1450378994. OCLC  1175621908 .
  8. ^ "interfaz del programa de aplicación" . Diccionario de inglés de Oxford (edición en línea). Prensa de la Universidad de Oxford. (Se requiere suscripción o membresía en una institución participante ).
  9. ^ Fecha, CJ (18 de julio de 2019). EF Codd y la teoría relacional: una revisión y un análisis detallados de los principales escritos de la base de datos de Codd . pag. 135. ISBN 978-1684705276.
  10. ^ Fecha, CJ; Codd, EF (enero de 1975). "Los enfoques relacional y de red: Comparación de las interfaces de programación de aplicaciones" . En Randall Rustin (ed.). Actas del Taller de 1974 ACM-SIGMOD sobre Descripción, Acceso y Control de Datos . Taller SIGMOD 1974. 2 . Ann Arbor, Michigan: Asociación de Maquinaria Informática. págs. 83-113. doi : 10.1145 / 800297.811532 . ISBN 978-1450374187. OCLC  1175623233 .
  11. ^ Carl, Malamud (1990). Análisis de redes Novell . Van Nostrand Reinhold. pag. 294. ISBN 978-0442003647.
  12. ^ Fielding, Roy (2000). Estilos arquitectónicos y diseño de arquitecturas de software basadas en redes (PhD) . Consultado el 18 de septiembre de 2020 .
  13. ^ 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 .
  14. ^ Odersky, Martin; Cuchara, Lex; Venners, Bill (10 de diciembre de 2008). "Combinando Scala y Java" . www.artima.com . Consultado el 29 de julio de 2016 .
  15. de Figueiredo, Luiz Henrique; Ierusalimschy, Roberto ; Filho, Waldemar Celes. "El diseño e implementación de un lenguaje para extender aplicaciones" . TeCGraf Grupo de Tecnologia Em Computacao Grafica . CiteSeerX 10.1.1.47.5194 . S2CID 59833827 . Consultado el 29 de julio de 2016 .  
  16. ^ Sintes, Tony (13 de julio de 2001). "¿Qué es la API de Java de todos modos?" . JavaWorld . Consultado el 18 de julio de 2020 .
  17. ^ Emery, David. "Estándares, API, interfaces y enlaces" . Acm.org. Archivado desde el original el 16 de enero de 2015 . Consultado el 8 de agosto de 2016 .
  18. ^ "F2PY.org" . F2PY.org . Consultado el 18 de diciembre de 2011 .
  19. ^ Fowler, Martin. "Inversión de control" .
  20. ^ Fayad, Mohamed. "Marcos de aplicaciones orientados a objetos" .
  21. ^ Lewine, Donald A. (1991). Guía del programador POSIX . O'Reilly & Associates, Inc. pág. 1. ISBN 9780937175736. Consultado el 2 de agosto de 2016 .
  22. ^ Oeste, Joel; Dedrick, Jason (2001). "Estandarización de código abierto: el surgimiento de Linux en la era de las redes" (PDF) . Conocimiento, tecnología y políticas . 14 (2): 88-112 . Consultado el 2 de agosto de 2016 .
  23. ^ Microsoft (octubre de 2001). "Soporte para Windows XP" . Microsoft. pag. 4. Archivado desde el original el 26 de septiembre de 2009.
  24. ^ "Introducción de LSB" . Fundación Linux. 21 de junio de 2012 . Consultado el 27 de marzo de 2015 .
  25. ^ Stoughton, Nick (abril de 2005). "Actualización sobre estándares" (PDF) . USENIX . Consultado el 4 de junio de 2009 .
  26. ^ Bierhoff, Kevin (23 de abril de 2009). "Cumplimiento del protocolo API en software orientado a objetos" (PDF) . Instituto CMU de Investigación de Software . Consultado el 29 de julio de 2016 .
  27. ^ Wilson, M. Jeff (10 de noviembre de 2000). "Sea inteligente con los proxies y RMI" . JavaWorld . Consultado el 18 de julio de 2020 .
  28. ^ Henning, Michi; Vinoski, Steve (1999). Programación avanzada CORBA con C ++ . Addison-Wesley . ISBN 978-0201379273. Consultado el 16 de junio de 2015 .
  29. ^ "API-fication" (descarga de PDF) . www.hcltech.com . Agosto de 2014.
  30. ^ Benslimane, Djamal; Schahram Dustdar; Amit Sheth (2008). "Services Mashups: la nueva generación de aplicaciones web" . Computación por Internet IEEE, vol. 12, no. 5 . Instituto de Ingenieros Eléctricos y Electrónicos. págs. 13-15. Archivado desde el original el 28 de septiembre de 2011 . Consultado el 1 de octubre de 2019 .
  31. ^ Niccolai, James (23 de abril de 2008), "Entonces, ¿qué es un mashup empresarial, de todos modos?" , PC World
  32. ^ Parr, Ben. "La Evolución de la API de Social Media" . Mashable . Consultado el 26 de julio de 2016 .
  33. ^ "OBTENER tendencias / lugar" . developer.twitter.com . Consultado el 30 de abril de 2020 .
  34. ^ Parnas, DL (1972). "Sobre los criterios que se utilizarán en la descomposición de sistemas en módulos" (PDF) . Comunicaciones de la ACM . 15 (12): 1053–1058. doi : 10.1145 / 361598.361623 . S2CID 53856438 .  
  35. ^ Garlan, David; Shaw, Mary (enero de 1994). "Introducción a la arquitectura de software" (PDF) . Avances en Ingeniería de Software e Ingeniería del Conocimiento . 1 . Consultado el 8 de agosto de 2016 .
  36. de Ternay, Guerric (10 de octubre de 2015). "Ecosistema empresarial: creación de un foso económico" . Impulsar a las empresas . Consultado el 1 de febrero de 2016 .
  37. Boyd, Mark (21 de febrero de 2014). "Privado, socio o público: ¿Qué estrategia de API es mejor para las empresas?" . Web programable . Consultado el 2 de agosto de 2016 .
  38. ^ Weissbrot, Alison (7 de julio de 2016). "Las API de servicios para automóviles están en todas partes, pero ¿qué ventajas ofrecen las aplicaciones de socios?" . AdExchanger .
  39. ^ "Documentación de Cloudflare API v4" . cloudflare . 25 de febrero de 2020 . Consultado el 27 de febrero de 2020 .
  40. ^ Liew, Zell (17 de enero de 2018). "Las API de servicio de automóvil están en todas partes, pero qué ventajas ofrecen las aplicaciones de socios" . Revista Smashing . Consultado el 27 de febrero de 2020 .
  41. ^ a b Shi, Lin; Zhong, Hao; Xie, Tao; Li, Mingshu (2011). Un estudio empírico sobre la evolución de la documentación de API . Congreso Internacional sobre Enfoques Fundamentales de la Ingeniería de Software . Apuntes de conferencias en Ciencias de la Computación. 6603 . págs. 416–431. doi : 10.1007 / 978-3-642-19811-3_29 . ISBN 978-3-642-19810-6. Consultado el 22 de julio de 2016 .
  42. ^ "guava-libraries - Guava: Google Core Libraries para Java 1.6+ - Alojamiento de proyectos de Google" . 2014-02-04 . Consultado el 11 de febrero de 2014 .
  43. ^ Oracle. "Cómo y cuándo dar de baja las API" . Documentación de Java SE . Consultado el 2 de agosto de 2016 .
  44. ^ Méndez, Diego; Baudry, Benoit; Monperrus, Martín (2013). "Evidencia empírica de la diversidad a gran escala en el uso de API de software orientado a objetos" . 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM) . págs. 43–52. arXiv : 1307.4062 . doi : 10.1109 / SCAM.2013.6648183 . ISBN 978-1-4673-5739-5. S2CID  6890739 .
  45. ^ Takanashi, Dean (19 de febrero de 2020). "Akamai: los ciberdelincuentes están atacando las API de las empresas de servicios financieros" . Venture Beat . Consultado el 27 de febrero de 2020 .
  46. ^ Dekel, Uri; Herbsleb, James D. (mayo de 2009). "Mejora de la usabilidad de la documentación de API con Knowledge Pushing". Instituto de Investigación de Software, Facultad de Ciencias de la Computación . CiteSeerX 10.1.1.446.4214 . 
  47. ^ Parnin, Chris; Treude, Cristoph (mayo de 2011). "Medición de la documentación de API en la Web" . Web2SE : 25–30. doi : 10.1145 / 1984701.1984706 . ISBN 9781450305952. S2CID  17751901 . Consultado el 22 de julio de 2016 .
  48. ^ Maalej, Waleed; Robillard, Martin P. (abril de 2012). "Patrones de conocimiento en la documentación de referencia API" (PDF) . Transacciones IEEE sobre ingeniería de software . Consultado el 22 de julio de 2016 .
  49. ^ Monperrus, Martin; Eichberg, Michael; Tekes, Elif; Mezini, Mira (3 de diciembre de 2011). "¿De qué deben ser conscientes los desarrolladores? Un estudio empírico sobre las directivas de la documentación API". Ingeniería de software empírica . 17 (6): 703–737. arXiv : 1205.6363 . doi : 10.1007 / s10664-011-9186-4 . S2CID 8174618 . 
  50. ^ "Anotaciones" . Sun Microsystems . Archivado desde el original el 25 de septiembre de 2011 . Consultado el 30 de septiembre de 2011 ..
  51. ^ Bruch, Marcel; Mezini, Mira; Monperrus, Martín (2010). "Directivas de subclasificación minera para mejorar la reutilización del marco". 2010 Séptima Conferencia de Trabajo de IEEE sobre repositorios de software de minería (MSR 2010) . págs. 141–150. CiteSeerX 10.1.1.434.15 . doi : 10.1109 / msr.2010.5463347 . ISBN  978-1-4244-6802-7. S2CID  1026918 .
  52. ^ "Oracle y el fin de la programación tal como la conocemos" . DrDobbs. 2012-05-01 . Consultado el 9 de mayo de 2012 .
  53. ^ "Las API no pueden tener derechos de autor, dice el juez en el caso de Oracle" . TGDaily. 2012-06-01 . Consultado el 6 de diciembre de 2012 .
  54. ^ "Oracle America, Inc. contra Google Inc" (PDF) . Cableado . 2012-05-31 . Consultado el 22 de septiembre de 2013 .
  55. ^ "Oracle Am., Inc. contra Google Inc., No. 13-1021, Fed. Cir. 2014" .
  56. ^ Rosenblatt, Seth (9 de mayo de 2014). "Corte se pone del lado de Oracle sobre Android en apelación de patente de Java" . CNET . Consultado el 10 de mayo de 2014 .
  57. ^ "Google supera a Oracle: Android hace un" uso justo "de las API de Java" . Ars Technica . 2016-05-26 . Consultado el 28 de julio de 2016 .
  58. ^ Decker, Susan (27 de marzo de 2018). "Oracle gana el resurgimiento del caso de miles de millones de dólares contra Google" . Bloomberg Businessweek . Consultado el 27 de marzo de 2018 .
  59. ^ Lee, Timothy (25 de enero de 2019). "Google pide a la Corte Suprema que anule el desastroso fallo sobre los derechos de autor de la API" . Ars Technica . Consultado el 8 de febrero de 2019 .
  60. vkimber (28 de septiembre de 2020). "Google LLC contra Oracle America, Inc" . LII / Instituto de Información Legal . Consultado el 6 de marzo de 2021 .

Lectura adicional [ editar ]

  • Taina Bucher (16 de noviembre de 2013). "Objetos de intensa sensación: 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 clave de la programación contemporánea, entendida como parte fundamental de la cultura.