In computing, a plug-in is a set of software that adds specific capabilities to a larger software application. If supported, plug-ins enable customizing the functionality of an application. For example, plug-ins are commonly used in web browsers to play video, scan for viruses, and display new file types. The image on the right is a screenshot of common Firefox web browser plug-ins. The Adobe Acrobat, QuickTime, and Microsoft Office 2007 plug-ins add the capability to display new file types inside the Firefox web browser.
Add-on is often considered the general term comprising snap-ins, plug-ins, extensions, and themesPurpose and examples
Applications support plug-ins for many reasons. Some of the main reasons include:
- to enable third-party developers to create capabilities to extend an application
- to support easily adding new features
- to reduce the size of an application
- to separate source code from an application because of incompatible software licenses.
Specific examples of applications and why they use plug-ins:
- 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)
- Microsoft Office uses plug-ins (better known as add-ins) to extend the capabilities of its application by adding custom commands and specialized features
- 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)
- Mechanism
As shown in the figure, 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.[1][2]
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[3] and competing applications such as Corel Paint Shop Pro have adopted them.
Plug-ins and extensions
Extensions differ slightly from plug-ins. Plug-ins usually have a narrow set of capability. 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. 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.
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[update], 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:
[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.
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.
- OSGi, a standardized dynamic component system suited for plug-in programming, used in Eclipse, many commercial Java EE application servers, Spring Framework, and embedded applications.
- Rich Client Platform (RCP), platform for applications adapted from Eclipse, applications are written as plug-ins and may themselves have further plug-ins
Python
- Envisage
- Colony Framework, a plug-in framework that takes inspiration from OSGi and Eclipse RCP simplifying the concepts of both and adapting them to the Pythonic philosophy
- PyUtilib, a plug-in system that is based on Trac. Trac component architecture is simplified Zope Component Architecture
- Setuptools
- Sprinkles
- The Twisted Plug-in System
- Yapsy
- Zope Component Architecture
.NET
- .NET Add-In Team Blog
- AL Platform
- Code Project .NET Based Plug-in Framework
- Mono Add-ins—an add-in framework for .NET and Mono
- Plux.NET—A Platform for Building Plug-in Systems Under .NET
- Managed Extensibility Framework—Managed Extensibility Framework
- Compact Plugs— Compact Plugs
0 comments:
Post a Comment