In [[computer programming]], '''glue code''' is a [[source code]] that serves solely to "adapt" different parts of code that would otherwise be incompatible. It does not contribute any functionality towards meeting the program's [[requirement]]s, but instead glue code often appears in code written to let existing [[Library (computing)|libraries]] or programs [[Interoperability#Software|interoperate]], as in [[language binding]]s or [[foreign function interface]]s like the [[Java native interface]], or when mapping [[Object (computer science)|objects]] to a [[database]] using [[object-relational mapping]], or when [[Systems integration|integrating]] two or more [[commercial off-the-shelf]] programs. Glue code may be written in the same language as the code it is gluing together, or in a separate [[glue language]]. Glue code is very efficient in [[rapid prototyping]] environments where several components are quickly put together into a single language or framework.
==Consequences==
Because each component is independent (i.e. it is unaware of its relations and is only connected to another component through glue code), the behavior of a component and its interactions can change during the execution of the script. In addition, a different version of one of the components may behave differently, breaking the glue code.
High-level programming languages can suffer from performance penalties because glue code must run through the language interpreter, even when connecting high-performance subsystems. If performance is crucial, using configuration scripting is often preferred to directly connecting binary interfaces of components. In object-oriented scripting languages, glue code often eliminates the need for class hierarchies and large numbers of classes.
# {{cite web |url= http://www.doc.ic.ac.uk/~np2/patterns/scripting/glue-code.html |title= Glue Code |series= Patterns |work= Scripting |first= Nathaniel |last= Pryce |___location= Department of Computing |publisher= Imperial College London }}