BrowseAtWork.com:   [ UP ]   [Manage cookies]

Plug-in (computing)

From Wikipedia, the free encyclopedia

  (Redirected from Plugin)
Jump to: navigation, search

In computing, a plug-in (also called plugin, addin, add-in, addon, add-on, snap-in or snapin) consists of a computer program that interacts with a host application (a web browser or an email client, for example) to provide a certain, usually very specific, function "on demand". Add-on is often considered the general term comprising plug-ins, extensions, and themes as subcategories.[1]

Contents

[edit] Purposes and examples

Applications support plug-ins for many reasons. Some of the main reasons include:

Examples of applications and their plug-ins include:

[edit] Mechanism

Example Plug-In Framework

The host application provides services which the plug-in can use, including a way for plug-ins to register themselves with the host application and a protocol for the exchange of data with plug-ins. Plug-ins depend on the services provided by the host application and do not usually work by themselves. Conversely, the host application operates independently of the plug-ins, making it possible for end-users to add and update plug-ins dynamically without needing to make changes to the host application.

Open application programming interfaces (APIs) provide a standard interface, allowing third parties to create plug-ins that interact with the host application. A stable API allows third-party plug-ins to continue to function as the original version changes and to extend the life-cycle of obsolete applications. The Adobe Photoshop and After Effects plug-in APIs have become a standard[citation needed] and competing applications such as Corel Paint Shop Pro have adopted them to some extent. Other examples of such APIs include Audio Units and VST.

Games and productivity applications often use plug-in architectures which allow original and third-party publishers to add functionality.

The Microsoft Flight Simulator series has become well-known for its aircraft add-ons.

Outside software, a network switch may ship with an unoccupied but non-standard port to accommodate various optional physical-layer connectors.

Outside software again, manufacturers can use plug-ins to create vendor lock-in by limiting upgrade options solely to those available from or endorsed by the original manufacturer. IBM's Micro Channel Architecture, technically superior to Industry Standard Architecture as a way to add components to IBM PCs, largely failed to gain wide support due to the difficulty in getting certification for third-party devices.

[edit] Plug-ins and extensions

With regard to web browsers, plug-ins differ from extensions.[1] Plug-ins are generally external, binary components using the Netscape Plugin API (or ActiveX within Microsoft Internet Explorer) to handle new types of multimedia. Extensions, on the other hand, usually integrate with the browser's application logic or "chrome", that is, the interface of the browser itself. Since plug-ins and extensions both increase the utility of the original application, Mozilla uses the term "add-on" as an inclusive category of augmentation modules that consists of plug-ins, themes, and search engines.

For example, the original impetus behind the development of Mozilla Firefox was the pursuit of a small baseline application, leaving exotic or personalized functionality to be implemented by extensions to avoid feature creep. This is in contrast to the "kitchen sink" approach in its predecessors, the Mozilla Application Suite and Netscape 6 and 7. Therefore, after integration, extensions can be seen as part of the browser itself, tailored from a set of optional modules. Firefox also supports plug-ins using NPAPI. When the browser encounters references to content a plug-in specializes in, the data is handed off to be processed by that plug-in. Since there is generally a clear separation between the browser and the plug-in, the results are discrete objects embedded within a webpage. The same distinction between plug-ins and extensions is in use by other web browsers, such as Microsoft Internet Explorer, where a typical extension might be a new toolbar, and a plug-in might embed a video player on the page.

A software extension is a computer program designed to be incorporated into another piece of software in order to enhance, or extend, the functionalities of the latter. On its own, the program is not useful or functional.

Examples of software applications that support extensions include the Mozilla Firefox Web browser, Adobe Systems Photoshop and Microsoft Windows Explorer shell extensions. It is common to find that applications whose scope is potentially unbounded will feature an extensions interface (API), and the API description will often be published so that third-party developers can produce extensions.

Extension mechanisms can also be found in some operating systems such as with Linux kernel modules. The runtime environment of some programming languages also support extensions, such as PHP with support for extensions that provide an interface to third party libraries, and extensions to offer debugging, profiling, security and performance enhancement.

Other popular terms used to denote extensions are add-ons, add-ins or plugins.

The terms modules and components are also used, but they don't stress the aspect of extending. They are terms to generally describe the structure of programs and can be used for the extended core program as well.

[edit] History

Plug-ins appeared as early as the mid 1970s, when the EDT text editor running on the Unisys VS/9 operating system using the Univac 90/60 series mainframe computer provided the ability to run a program from the editor and to allow such program to access the editor buffer, thus allowing an external program to access an edit session in memory. The plug-in program could make calls to the editor to have it perform text-editing services upon the buffer that the editor shared with the plug-in. The Waterloo Fortran compiler used this feature to allow interactive compilation of Fortran programs edited by EDT.

Very early PC software applications to incorporate plug-in functionality included HyperCard and QuarkXPress on the Macintosh, both released in 1987. In 1988, Silicon Beach Software included plug-in functionality in Digital Darkroom and SuperPaint, and Ed Bomke coined the term plug-in.

Currently, programmers typically implement plug-in functionality using shared libraries compulsorily installed in a place prescribed by the host application. HyperCard supported a similar facility, but more commonly included the plug-in code in the HyperCard documents (called stacks) themselves. Thus the HyperCard stack became a self-contained application in its own right, distributable as a single entity that end-users could run without the need for additional installation-steps.

[edit] Plug-in frameworks

Software developers can use the following plug-in frameworks (organized here by programming language) to add plug-in capability to their applications:

[edit] C++

  • Boost Extension- Boost C++ plug-in framework, available from boost sandbox
  • FxEngine Framework—Open C++ dataflow processing framework for audio, video, signal, etc.
  • Qt Plug-Ins—part of Nokia's Qt Framework
  • OmniPeek Plug-in Wizard—creates plug-ins for WildPackets' OmniPeek Network Analyzer
  • Pugg open Source C++ framework for plug-in management
  • OFX an open standard for visual effects plug-ins.

[edit] Delphi

[edit] Java

[edit] Python

[edit] .NET

[edit] See also

[edit] References

  1. ^ a b Mozilla Firefox plugins - Description of the difference between Mozilla Firefox plugins and extensions under the general term add-on.