Language binding
In programming and software design, a binding is an application programming interface (API) that provides glue code specifically made to allow a programming language to use a foreign library or operating system service (one that is not native to that language).
Characteristics
[edit | edit source]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++. To use such libraries from another language, usually of higher-level, such as Java, Common Lisp, Scheme, Python, or Lua, a binding to the library must be created in that language, possibly requiring recompiling the language's code, depending on the amount of modification needed.[2] However, most languages offer a foreign function interface, such as Python's and OCaml's ctypes, and Embeddable Common Lisp's cffi and uffi.[3][4][5]
For example, Python bindings are used when an extant C library, written for some purpose, is to be used from Python. Another example is libsvn which is written in C to provide an API to access the Subversion software repository. To access Subversion from within Java code, libsvnjavahl can be used, which depends on libsvn being installed and acts as a bridge between the language Java and libsvn, thus providing an API that invokes functions from libsvn to do the work.[6]
Major motives to create library bindings include software reuse, to reduce reimplementing a library in several languages, and the difficulty of implementing some algorithms efficiently in some high-level languages.
Runtime environment
[edit | edit source]This section needs expansion. You can help by adding to it. (November 2016) |
Object models
[edit | edit source]- Common Object Request Broker Architecture (CORBA) – cross-platform-language model
- Component Object Model (COM) – Microsoft Windows only cross-language model
- Distributed Component Object Model (DCOM) – extension enabling COM to work over networks
- Cross Platform Component Object Model (XPCOM) – Mozilla applications cross-platform model
- Common Language Infrastructure – .NET Framework cross-platform-language model
- Freedesktop.org D-Bus – open cross-platform-language model
This section needs expansion. You can help by adding to it. (November 2016) |
Virtual machines
[edit | edit source]This section needs expansion. You can help by adding to it. (November 2016) |
Porting
[edit | edit source]- Portable object – cross-platform-language object model definition
This section needs expansion. You can help by adding to it. (November 2016) |
See also
[edit | edit source]Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').
- Application programming interface (API)
- Application binary interface (ABI)
- Calling convention
- Embedded SQL
- Name mangling
- Simplified Wrapper and Interface Generator (SWIG) – interface binding generator from many languages to many languages, open-source
- Wrapper function
References
[edit | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
External links
[edit | edit source]- JTC1/SC22/WG11 - Binding Techniques, an ISO standard for language bindings
- What is a language binding?
Lua error in Module:Authority_control at line 153: attempt to index field 'wikibase' (a nil value).