plugin

plugin

計算機應用程序
plugin(Plug-in,addin,add-in,addon或add-on),一種計算機應用程序,這個名詞是被Ed Bomke提出的。[1]它和主應用程序(host application)互相交互,以提供特定的功能。應用程序支持Plugin有許多原因,主要包括使得第三方開發者有能力擴展應用程序,以提供無法先期預料的特色;減小應用程序的大小;由于軟件版權之間的不兼容性将源代碼和應用程序分享。
    中文名: 外文名:plugin 别名: 類型:計算機應用程序 原因:提供無法先期預料的特色 時間:上世紀70年代

支持軟件

Plugin通常譯作插件,下文中以插件代替Plugin。

支持插件的軟件例如有:

Email客戶端使用插件對email編碼、解碼

圖像軟件使用插件對文件格式進行支持和處理圖像(Adobe Photoshop,AcdSee)

媒體播放器使用插件支持文件格式和應用過濾器(foobar2000,GStreamer,Quintessential,VST,Winamp,XMMS,WindowsMediaPlayer)

包嗅探器使用插件對包的格式進行解碼(OmniPeek)

遙感應用使用插件處理不同類型傳感器的數據(Opticks)

軟件開發環境使用插件支持不同的編程語言(Eclipse,NetBeans,jEdit,MonoDevelop)

Web浏覽器使用插件播放視頻和媒體格式(Flash,QuickTime)

blog應用平台使用插件增強blog功能(WordPress,LightPress,MovableType,Z-Blog)

blog終端使用插件增加blog編輯功能(Windows Live Writer)

文件編輯器使用插件提供特定的文本編輯能力(Emeditor,Notepad++)

編譯任務管理軟件使用插件提供第三方語言支持或編譯任務支持(Ant)

企業Web應用平台使用插件針對不同業務進行處理(Struts)

機制

主應用程序提供給插件可以使用的服務,讓插件在主應用程序中注冊插件本身,以及和插件進行數據交換的協議。插件依賴于主應用程序提供的這些服務,通常不能獨立運行。相反地,主應用程序和插件是分離的,這就使得我們可以不改變主應用程序而動态增加或更新插件。

公開的應用程序接口(API)提供一個标準接口,允許第三方編寫插件和主應用程序交互。一個穩定的API必須在主應用程序版本升級後第三方插件仍可以運行。插件同時也延長了過時的應用程序的生命。Adobe Photoshop 和 After Effects提供給插件的API已經成為一種圖像處理軟件API的标準,被相類的圖像處理軟件所采納。其它類似的API包括 Audio Units 和VST。

這種插件的機制很普遍,比如一個網絡交換器,它有一個沒被占用而且是非标準的端口,用它來接納不同的任意的物理層連接;再比如計算機硬件制造業的行業标準架構(Industry Standard Architecture)和IBM著名的微通道架構(Micro ChannelArchitecture),都允許第三方設備。這些都是類似插件的一種機制。

插件和擴展

插件稍不同于擴展(extension),插件通常依賴于主應用程序的接口,有一個它們可以運行的确定的界限。擴展則通常有更少的限制,也可以提供它們自己的接口。相同的是,它們通常都用來減少主應用程序的大小、提供一些可選的功能。

這裡不得不提到Mozilla Firefox 和相關軟件。它們使用一個叫做Add-on的名詞,Add-on又被細分為插件、主題(theme)、搜索引擎(search engine)和擴展。在以後的文章中将會提到Mozilla插件和古老的NPAPI的淵源,以及firefox中插件和擴展的區别。

曆史淵源

插件的概念可以回朔到上世紀70年代。那時在Univac 90/60系列主機的Unisys VS/9操作系統中,運行着一個叫 EDT的文本編輯器,它提供一種功能可以從編輯器中運行其它應用程序,并允許這些程序訪問編輯器的緩沖區,在内存中提供一種編輯會話。這樣這些外來的應用程序就可以依靠共享的緩沖區執行文本操作了。這種功能後來被 Waterloo Fortran編譯器使用,和EDT編輯的Fortran程序進行交互編譯。

在PC機上擁有插件功能的第一個軟件可能是在Macintosh上的HyperCard和QuarkXPress,它們在1987年發布。1988年,Silicon Beach軟件公司在 Digital Darkroom和SuperPaint軟件中也包含了插件功能。而Plug-in這個名詞則是被Ed Bomke提出。

Plugin架構

以下按編程語言分類

plugin下包含有c++和jsp語法兩種語言分類

C++

FxEngine Framework-一個數據流處理框架

Qt PlugIns-TrollTech的 Qt框架的一部分

Delphi

TMS Plugin Framework

Java

Java Plug-in Framework(JPF),一種由Eclipse的插件機制而改寫的架構

RCP,由Eclipse發展而來的技術平台,應用程序可以以插件方式編寫,應用程序本身也可以擁有插件

Python

Setuptools

The Twisted Plugin System

Sprinkles

Python plugin system

.NET

AL Platform

Mono Addins-.Net和Mono的一個addin框架

Code Project基于.NET的插件框架

Active Visic

Active Visic

一般來說,;元素會指定對象是Applet還是Bean,同樣也會指定class的名字,還有位置,另外還會指定将從哪裡下載這個Java插件。具體如下:

屬性

type="bean | applet"

.将被執行的插件對象的類型,你必須得指定這個是Bean還是applet,因為這個屬性沒有缺省值.

code="classFileName"

将會被Java插件執行的Java Class的名字,必須以.class結尾。這個文件必須存在于codebase屬性指定的目錄中.

codebase="classFileDirectoryName"

将會被執行的Java Class文件的目錄(或者是路徑),如果你沒有提供此屬性,那麼使用;的jsp文件的目錄将會被使用.

name="instanceName"

這個Bean或applet實例的名字,它将會在Jsp其它的地方調用.

archive="URIToArchive,..."

一些由逗号分開的路徑名,這些路徑名用于預裝一些将要使用的class,這會提高applet的性能.

align="bottom | top | middle | left | right"

圖形,對象,Applet的位置,有以下值:

bottom

top

middle

left

right

height="displayPixels" width="displayPixels"

Applet或Bean将要顯示的長寬的值,此值為數字,單位為象素.

hspace="leftRightPixels" vspace="topBottomPixels"

Applet或Bean顯示時在屏幕左右,上下所需留下的空間,單位為象素.

jreversion="JREVersionNumber | 1.1"

Applet或Bean運行所需的Java Runtime Environment (JRE) 的版本.缺省值是1.1.

nspluginurl="URLToPlugin"

Netscape Navigator用戶能夠使用的JRE的下載地址,此值為一個标準的URL。

iepluginurl="URLToPlugin"

IE用戶能夠使用的JRE的下載地址,此值為一個标準的URL。

你需要向applet或Bean傳送的參數或參數值。

上一篇:reject

下一篇:Package

相關詞條

相關搜索

其它詞條