A plug-in is software that independently covers a partial functionality and thus extends the functionality of an overall system. A higher- level platform is required for the execution of a plug-in, which in turn provides the necessary interfaces for the integration of the plug-in. Plug-ins are not to be confused with Add-ons, which supplement existing software only optionally and make thereby no own libraries available, but use excluding the existing.
The interfaces are elementary component of the development of Plug-Ins and are defined from view of the manufacturers of software products. For the control of Plug-Ins thereby the principle inversion on control is frequently used. With it an implementation paradigm is characterized, which developed with the object-oriented programming, and in connection with Frameworks describes the control of a program part.
However, the interfaces of plug-ins have not yet been generally unified or declared an official standard. Only concerning certain applications few interfaces were defined, which were coined to a quasi standard:
- LinuxAudio Developer's Simple Plug- In API (LADSPA) defines a free interface for audio effects and filters under Linux and
- Virtual Studio Technology (VST), a commonly used interface for software in the audio field.
Plug-Ins for the optimal distribution of resourcesPlug-Ins are used also under the viewpoint of the optimal distribution of resources such as memory use or run time optimization, so that software manufacturers shifted optional functions of their software products into Plug-Ins, which are loaded then depending upon need by the run time environment in addition.
In the context of the use of plug-ins in web browsers, also called browser plug-ins, they have a special function and position. Here the Netscape API defines a standardized interface for the integration of so-called Netscape plug-ins, which is also used by most web browsers. An exception is Internet Explorer, which defines an interface based on the Microsoft ActiveX specification for its plug-ins, which are also called add-ons there.
Netscape plug-ins, however, explicitly do not define any new functionality of the browser, but merely provide mechanisms for audio software, videos and animations that are not provided by the web browser itself. An exception in this regard is again Internet Explorer, which adds new functionality to the browser through its specific add-ons. Thus, the use of browser plug-ins is always a question of the platform used and thus the operating system used.
Another term was coined with server plug-ins, which ultimately characterize specific programs that extend the functions of a web server with additional services.
An application example of plug-ins as an integral part of the Eclipsedevelopment environment:
The extension of the Eclipse platform by further development environments, e.g. for the programming languages C, Java, etc., is realized by means of plug-ins. In this case, this creates an individual working environment in which all tools work together on a uniform platform. The different Plug-Ins are loaded however only if one needs them, whereby an optimal distribution of the resources of the development environment is reached. The organization of different Plug-Ins is here task of a so-called Platform Runtime. A separate XML file(also called manifest) is assigned to each Plug-In, in which both the required and the provided interfaces (also called Extension Points) of the Plug-In are specified.