En programación y diseño de software , un enlace es una interfaz de programación de aplicaciones (API) que proporciona un código de unión creado específicamente para permitir que un lenguaje de programación utilice una biblioteca externa o un servicio del sistema operativo (uno que no es nativo de ese lenguaje).
Características
El enlace generalmente se refiere a una asignación de una cosa a otra. En el contexto de las bibliotecas de software , los enlaces son bibliotecas contenedoras que unen dos lenguajes de programación , de modo que una biblioteca escrita para un lenguaje se puede usar en otro lenguaje. [1] Muchas bibliotecas de software están escritas en lenguajes de programación de sistema como C o C++ . Para usar dichas bibliotecas desde otro lenguaje, generalmente de nivel superior , como Java , Common Lisp , Scheme , Python o Lua , se debe crear un enlace a la biblioteca en ese lenguaje, posiblemente requiriendo volver a compilar el código del lenguaje, dependiendo de la cantidad de modificación necesaria. [2] Sin embargo, la mayoría de los lenguajes ofrecen una interfaz de función externa , como Python y OCamlctypes , y Embeddable Common Lisp y cffi. uffi[ 3 ] [4] [5]
Por ejemplo, los enlaces de Python se utilizan cuando se va a utilizar una biblioteca C existente, escrita para algún propósito, desde Python. Otro ejemplo es libsvnque está escrito en C para proporcionar una API para acceder al repositorio de software Subversion . Para acceder a Subversion desde dentro del código Java, se puede utilizar , que depende de estar instalado y actúa como un puente entre el lenguaje Java y , proporcionando así una API que invoca funciones de para hacer el trabajo. [6]libsvnjavahllibsvnlibsvnlibsvn
Los principales motivos para crear enlaces de bibliotecas incluyen la reutilización de software , la reducción de la reimplementación de una biblioteca en varios lenguajes y la dificultad de implementar algunos algoritmos de manera eficiente en algunos lenguajes de alto nivel.
Entorno de ejecución
Modelos de objetos
- Arquitectura de intermediario de solicitudes de objetos comunes (CORBA): modelo multiplataforma y de lenguaje
- Modelo de objetos componentes (COM): modelo multilingüe exclusivo
de Microsoft Windows
- Modelo de objetos de componentes distribuidos (DCOM): extensión que permite que COM funcione en redes
- Modelo de objetos de componentes multiplataforma ( XPCOM ): modelo multiplataforma de aplicaciones de Mozilla
- Modelo de lenguaje multiplataforma de Common Language Infrastructure – .NET Framework
- Freedesktop.org D-Bus : modelo de lenguaje abierto y multiplataforma
Maquinas virtuales
Portabilidad
- Objeto portátil : definición del modelo de objeto multiplataforma y lenguaje
Véase también
- Interfaz de programación de aplicaciones (API)
- Interfaz binaria de aplicación (ABI)
- Convención de llamadas
- SQL integrado
- Mutilación de nombres
- Generador de interfaces y envoltorios simplificados ( SWIG ): generador de enlaces de interfaces de varios idiomas a varios idiomas, de código abierto
- Función de envoltura
Referencias
- ^ "Apéndice A. Creación de un enlace de idioma para Cairo". Cairographics.org . Consultado el 2 de abril de 2014 .
- ^ "Estándares, API, interfaces y enlaces". Acm.org. Archivado desde el original el 16 de enero de 2015. Consultado el 2 de abril de 2014 .
- ^ "ctypes – Una biblioteca de funciones externas para Python". Documentación de Python v3.8.3 . Docs.python.org . Consultado el 4 de junio de 2020 .
- ^ Hickey, Jason; Madhavapeddy, Anil; Minsky, Yaron (2013). "Real World OCaml, Capítulo 19. Interfaz de función externa". realworldocaml.org . Consultado el 19 de julio de 2015 .
- ^ "Introducción – Manual del usuario de CFFI". Common-lisp.net . Consultado el 2 de abril de 2014 .
- ^ "Preguntas frecuentes sobre Subversion JavaHL". Subclipse.tigris.org. 18 de junio de 2013. Consultado el 2 de abril de 2014 .
Enlaces externos
- JTC1/SC22/WG11 - Técnicas de vinculación, un estándar ISO para vinculaciones de lenguaje
- ¿Qué es un enlace de idioma?