Language binding

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In computing, a binding from a programming language to a library or operating system service is an application programming interface (API) providing glue code to use that library or service in a particular programming language.

Binding generally refers to a mapping of one thing to another. In the context of software libraries, bindings are wrapper libraries that bridge two programming languages so that a library written for one language can be used in another language.[1] Many software libraries are written in system programming languages such as C or C++; in order to use these libraries from another (usually higher-level) language such as Java, Common Lisp, Python or Lua, a binding to the library must be created in that language, possibly requiring the recompilation of the language's code depending on the amount of modification necessary.[2] However, most languages offer an interface to foreign functions, such as Python's ctypes and Embeddable Common Lisp's cffi and uffi.[3][4]

For example, Python bindings are used when an already existing C library written for some purpose is to be used from Python. Another example is libsvn, which is written in C and provides an API for accessing Subversion; in order to access Subversion from within Java code, libsvnjavahl can be used, which depends on libsvn being installed and acts as a bridge between the Java programming language and libsvn, thus providing an API that invokes functions from libsvn to do the real work.[5]

Software reuse is a major motivation for creating library bindings, rather than reimplementing the library in several languages. Another is the impossibility of implementing certain algorithms efficiently in high-level languages.

See also[edit]

References[edit]

  1. ^ "Appendix A. Creating a language binding for cairo". Cairographics.org. Retrieved 2014-04-02. 
  2. ^ "Standards, APIs, Interfaces and Bindings". Acm.org. Retrieved 2014-04-02. 
  3. ^ "15.17. ctypes — A foreign function library for Python". Python v2.7.6 documentation. Docs.python.org. Retrieved 2014-04-02. 
  4. ^ "Introduction - CFFI User Manual". Common-lisp.net. Retrieved 2014-04-02. 
  5. ^ "Subversion JavaHL FAQ". Subclipse.tigris.org. 2013-06-18. Retrieved 2014-04-02. 

External links[edit]