Monday, November 24, 2008
SEMINAR TOPIC 5
Plug-in (computing)
In computing, a plug-in (also: plugin, addin, add-in, addon, add-on, snap-in or snapin; but see also extension) 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". Applications support plugins for many reasons. Some of the main reasons include:
to enable third-party developers to create capabilities to extend an application
to support features yet unforeseen
to reduce the size of an application
to separate source code from an application because of incompatible software licenses.
Examples of applications and their plug-ins include:
Rockbox, a firmware for digital audio players, can use plug-ins, for example: play games, use the text editor
Email clients use plug-ins to decrypt and encrypt email (Pretty Good Privacy)
Graphics software use plug-ins to support file formats and process images (Adobe Photoshop)
Media players use plug-ins to support file formats and apply filters (foobar2000, GStreamer, Quintessential, VST, Winamp, XMMS)
Packet sniffers use plug-ins to decode packet formats (OmniPeek)
Remote sensing applications use plug-ins to process data from different sensor types (Opticks)
Software development environments use plug-ins to support programming languages (Eclipse, jEdit, MonoDevelop)
Web browsers use plug-ins to play video and presentation formats (Flash, QuickTime, Microsoft Silverlight, 3DMLW)
Some digital mixing consoles allow plug-ins to extend features such as reverberation effects, equalization and compression.
Some Web content management system use plug-ins to increase functionalities (Joomla, WordPress).
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[which?] 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.
Plug-ins and extensions
Plug-ins differ slightly from extensions, which modify or add to existing functionality. Plug-ins generally rely on the host application's user interface and have a well-defined boundary to their possible set of actions. Extensions generally have fewer restrictions on their actions, and may provide their own user-interfaces. They sometimes help to decrease the size of the core host application and to offer optional functions. Mozilla Firefox and related software products use the term "Add-on" as an inclusive category of augmentation modules that consists of plug-ins, themes, search engines and a well-developed system which aims to reduce the feature creep that plagued the Mozilla Application Suite.
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.
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:
C++
FxEngine Framework - a dataflow renju Framework
Qt Plug-Ins - part of TrollTech's Qt Framework
Delphi
TMS Plug-in Framework
Java
Java Plug-in Framework (JPF), a plug-in mechanism adapted from Eclipse's plug-in mechanism from its pre-OSGi era.
Rich Client Platform (RCP), platform for applications adapted from Eclipse , applications are written as plugins and may themselves have further plug-ins
OSGi, a standardized dynamic component system suited for plugin programming, used in Eclipse, many commercial J2EE application servers, Spring Framework, and embedded applications.
Python
Setuptools
Hive ERP Framework, a plugin-in framework that takes inspiration from OSGi and Eclipse RCP simplifying the concepts of both and adapting them to the pythonic philosophy
The Twisted Plug-in System
Sprinkles
Envisage
.NET
AL Platform
Mono Add-ins - an add-in framework for .NET and Mono
Code Project .NET Based Plug-in Framework
.NET Add-In Team Blog
Plux.NET - A Platform for Building Plug-in Systems Under .NET
Visual Assist
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment