A
foreign function interface (
FFI) is a mechanism by which a program written in one
programming language can call routines or make use of services written in another. The term comes from the specification for
Common Lisp, which explicitly refers to the language features for inter-language calls as such; the term is also used officially by the
Haskell and
Python programming languages. Other languages use other terminology: the
Ada programming language talks about "
language bindings", while
Java refers to its FFI as the JNI (
Java Native Interface) or JNA (
Java Native Access). Foreign function interface has become generic terminology for mechanisms which provide such services.