2009-05-31 11 views
10

Aunque entiendo más o menos qué es un enlace de idioma, me cuesta entender cómo funcionan. ¿Podría alguien explicar cómo se hace un enlace de Java para WinAPI, por ejemplo?¿Cómo se hace un lenguaje vinculante?

Respuesta

8

Encontrará resultados mucho mejores si busca Foreign Function Interface o FFI. El FFI es lo que le permite llamar a las funciones que se escribieron en un idioma diferente, es decir, las extranjeras. Los diferentes lenguajes y tiempos de ejecución tienen FFI muy diferentes y tendrás que aprender cada uno individualmente. Aprender un FFI también te obliga a saber un poco más sobre las funciones internas de tu lenguaje y su tiempo de ejecución de lo que normalmente estás acostumbrado. Algunas FFI te hacen escribir código en el idioma de destino, como Haskell (donde el código FFI debe escribirse en Haskell) y otras te hacen escribir código en el idioma de origen, como Python (donde el código FFI debe escribirse en C).

Algunos lenguajes no usan el término FFI (aunque sería bueno si lo hicieran). Para Java, se llama Java Native Interface, o JNI.

+0

Gracias. Estaba al tanto de JNI, en realidad. Pero no sabía dónde debería cavar para obtener más información. – qeek

1

Los idiomas (generalmente) tienen una sintaxis definida para llamar al código "nativo". Por lo tanto, si tiene una biblioteca que exporta el método foo(), realizar un biding significa que creará, en su ejemplo, una clase Java con el método foo(). De esta forma, puede llamar al MyBinding.foo() desde el resto de un código, no habrá diferencia si fue un método de Java puro o un código de C compilado.

De nuevo para Java, es probable que desee consultar la documentación JNI. Otros idiomas tienen mecanismos similares. Hay herramientas como SIP que tomarán varios archivos de encabezado C (++) y producirán enlaces de Python para él. Creo que otros lenguajes también podrían tener herramientas similares.

Cuestiones relacionadas