World Library  
Flag as Inappropriate
Email this Article

Plug-in (computing)

Article Id: WHEBN0000023659
Reproduction Date:

Title: Plug-in (computing)  
Author: World Heritage Encyclopedia
Language: English
Subject: Boxee, Platform-enabled website, XChat, MicroB, Vim (text editor)
Collection: Application Programming Interfaces, Software Add-Ons, Technology Neologisms
Publisher: World Heritage Encyclopedia

Plug-in (computing)

Mozilla Firefox displaying a list of installed plug-ins

In computing, a plug-in (or add-in / addin, plugin, extension or add-on / addon) is a software component that adds a specific feature to an existing software application. When an application supports plug-ins, it enables customization. The common examples are the plug-ins used in web browsers to add new features such as search-engines, virus scanners, or the ability to utilize a new file type such as a new video format. Well-known browser plug-ins include the Adobe Flash Player, the QuickTime Player, and the Java plug-in, which can launch a user-activated Java applet on a web page to its execution a local Java virtual machine.

Add-on (or addon) is the general term for what enhances an application. It comprises snap-in, plug-in, theme and skin.[1] An extension add-on tailors the core features of an application by adding an optional module, whereas a plug-in add-on would tailor the outer layers of an application to personalize functionality.

A theme or skin add-on is a preset package containing additional or changed graphical appearance details, achieved by the use of a graphical user interface (GUI) that can be applied to specific software and websites to suit the purpose, topic, or tastes of different users to customize the look and feel of a piece of computer software or an operating system front-end GUI (and window managers).


  • Purpose and examples 1
  • Mechanism 2
  • Compared to extensions 3
  • History 4
  • Frameworks 5
    • C 5.1
    • C++ 5.2
    • Objective-C 5.3
    • Delphi 5.4
    • Java 5.5
    • PHP 5.6
    • Python 5.7
    • .NET 5.8
  • See also 6
  • References 7

Purpose and examples

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

Specific examples of applications and why they use plug-ins:


Example Plug-In Framework

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]

Compared to extensions

Extensions differ slightly from plug-ins. Plug-ins usually have a narrow set of abilities. 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, extensions and themes.


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 Series 90 mainframe computers provided the ability to run a program from the editor and to allow such a program to access the editor buffer, thus allowing an external program to access an edit session in memory.[3] 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.


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


  • C-Pluff, a plug-in framework for C programs. It has been strongly inspired by the Java plug-in framework in Eclipse


  • FxEngine Framework, open dataflow processing framework for audio, video, signal, etc.
  • Google Native Client, sandboxing technology to run safely a subset of Intel x86 native code using software-based fault isolation, from web browsers
  • Qt Plug-Ins, part of Qt framework
  • OmniPeek Plug-in Wizard, creates plug-ins for WildPackets' OmniPeek Network Analyzer
  • Pugg open source framework for plug-in management
  • Pluma, small, cross-platform
  • OFX, open standard for visual effects plug-ins
  • Cross-platform plug-in framework, accompanying a series of articles by Gigi Sayfan in Dr. Dobb's Journal
  • Firebreath An open source, cross-platform framework that builds NPAPI and ActiveX plugins from the same codebase.


  • NSBundle class: Applications can load up bundles directly through NSBundle class to access code stored in it.


  • TMS Plugin Framework, TMS Software Plug-in Frameworks
  • Delphi Plugin Framework, DPF (Delphi Plugin Framework)
  • Hydra, Hydra
  • In built Plugin Architecture in Delphi using BPLs (Borland Package Libraries)
  • TJvPluginManager, TJvPluginManager


  • Java Plug-in Framework (JPF), uses mechanism adapted from Eclipse's plug-in mechanism from its pre-OSGi era
  • Java Simple Plugin Framework (JSPF), lightweight annotation based plug-in system, supports dependency injection, suited for small to medium sized projects
  • OSGi, standardized dynamic component system suited for plug-in programming, used in Eclipse, many commercial Java EE application servers, Spring Framework, and embedded applications
  • Orquidea-Simpodial, OSGI based download and execution manager.
  • Rich Client Platform (RCP), platform for applications adapted from Eclipse, applications are written as plug-ins and may themselves have further plug-ins
  • Netbeans Platform, most commonly known for the Netbeans IDE, which is an application built on the Netbeans Platform, which is a framework that allows making modules, plugins for other NB applications (usually a group of interacting modules) and complete applications like the netbeans IDE
  • jin-plugin, minimal framework for Java, PHP
  • Sezpoz uses annotations to perform modular service lookups. Used by e.g. Jenkins to load plugins.


  • jin-plugin, minimal framework for Java, PHP


  • dip
  • Envisage
  • Colony Framework, inspired by OSGi and Eclipse RCP simplifying the concepts of both and adapting them to Pythonic philosophy
  • PyUtilib, system based on Trac component architecture, a simplified Zope Component Architecture
  • Setuptools
  • Sprinkles
  • Stevedore
  • The Twisted Plug-in System
  • Yapsy
  • Zope Component Architecture


  • .NET Add-In Team Blog
  • AL Platform
  • Code Project
  • Mono Add-ins, for .NET, Mono
  • Plux.NET, platform to build plug-in systems under .NET
  • Managed Extensibility Framework
  • Compact Plugs
  • System.Reflection namespace: Application can load up libraries and/or executables using classes in this namespace, allowing easy self-defined plugins.

See also


  1. ^ a b Mozilla Firefox plugins – Description of the difference between Mozilla Firefox plugins and extensions under the general term add-on.
  2. ^ Wordpress Plug-in API – Description of the Wordpress Plug-in architecture.
  3. ^ EDT Text Editor Reference Manual, Cinnaminson, New Jersey: Unisys Corporation, 1975
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.