複製鏈接
請複製以下鏈接發送給好友

plugin

鎖定
Plugin(Plug-in, addin, add-in, addon或add-on)是一種計算機應用程序,它和主應用程序(host application)互相交互,以提供特定的功能。
應用程序支持Plugin有許多原因,主要原因有:使第三方的開發者有能力擴展應用程序,以提供無法先期預料的特色;減小應用程序的大小;由於軟件版權之間的不兼容性源代碼和應用程序分享。
中文名
plugin
類    型
計算機應用程序
原    因
提供無法先期預料的特色

plugin支持軟件

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)

plugin機制

主應用程序提供給插件可以使用的服務,讓插件在主應用程序中註冊插件本身,以及和插件進行數據交換的協議。插件依賴於主應用程序提供的這些服務,通常不能獨立運行。相反地,主應用程序和插件是分離的,這就使得我們可以不改變主應用程序而動態增加或更新插件。
公開的應用程序接口API)提供一個標準接口,允許第三方編寫插件和主應用程序交互。一個穩定的API必須在主應用程序版本升級後第三方插件仍可以運行。插件同時也延長了過時的應用程序的生命。Adobe PhotoshopAfter Effects 提供給插件的API已經成為一種圖像處理軟件API的標準,被相類的圖像處理軟件所採納。其它類似的API包括 Audio Units 和VST。
這種插件的機制很普遍,比如一個網絡交換器,它有一個沒被佔用而且是非標準的端口,用它來接納不同的任意的物理層連接;再比如計算機硬件製造業的行業標準架構(Industry Standard Architecture)和IBM著名的微通道架構(Micro Channel Architecture),都允許第三方設備。這些都是類似插件的一種機制。

plugin插件和擴展

插件稍不同於擴展(extension),插件通常依賴於主應用程序的接口,有一個它們可以運行的確定的界限。擴展則通常有更少的限制,也可以提供它們自己的接口。相同的是,它們通常都用來減少主應用程序的大小、提供一些可選的功能。
這裏不得不提到Mozilla Firefox 和相關軟件。它們使用一個叫做Add-on的名詞,Add-on又被細分為插件、主題、搜索引擎和擴展。在以後的文章中將會提到Mozilla插件和古老的NPAPI的淵源,以及firefox中插件和擴展的區別。

plugin歷史淵源

插件的概念可以回朔到上世紀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提出。

pluginPlugin 架構

plugin以下按編程語言分類

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

pluginC++

FxEngine Framework - 一個數據流處理框架
Qt PlugIns - TrollTech的 Qt 框架的一部分
Delphi
TMS Plugin Framework
Java Plug-in Framework(JPF),一種由Eclipse的插件機制而改寫的架構
RCP,由Eclipse發展而來的技術平台,應用程序可以以插件方式編寫,應用程序本身也可以擁有插件
Setuptools
The Twisted Plugin System
Sprinkles
Python plugin system
AL Platform
Mono Addins——Net和Mono的一個addin框架
Code Project 基於NET的插件框架
Active Visic
Active Visic

pluginJSP 語法

<jsp:plugin>
執行一個applet或Bean,有可能的話還要下載一個Java插件用於執行它.
JSP 語法
<jsp:plugin
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName" ]
[ archive="URIToArchive,..." ]
[ align="bottom | top | middle | left | right" ]
[ height="displayPixels" ]
[ width="displayPixels" ]
[ hspace="leftRightPixels" ]
[ vspace="topBottomPixels" ]
[ jreversion="JREVersionNumber | 1.1" ]
[ nspluginurl="URLToPlugin" ]
[ iepluginurl="URLToPlugin" ] >
[ <jsp:params>
[ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+
</jsp:params> ]
[ <jsp:fallback> text message for user </jsp:fallback> ]
</jsp:plugin>
例子
<jsp:plugin type=applet code="Molecule.class" codebase="/html">
<jsp:params>
<jsp:param name="molecule" value="molecules/benzene.mol" />
</jsp:params>
<jsp:fallback>
<p>Unable to load applet</p>
</jsp:fallback>
</jsp:plugin>
描述
<jsp:plugin>;元素用於在瀏覽器中播放或顯示一個對象(典型的就是applet和Bean),而這種顯示需要在瀏覽器的java插件。
當Jsp文件被編譯,送往瀏覽器時,<jsp:plugin>;元素將會根據瀏覽器的版本替換成<object>;或者<embed>;元素。注意,<object>;用於HTML 4.0 ,<embed>;用於HTML 3.2.
一般來説,<jsp:plugin>;元素會指定對象是Applet還是Bean,同樣也會指定class的名字,還有位置,另外還會指定將從哪裏下載這個Java插件。具體如下:
屬性
type="bean | applet"
.將被執行的插件對象的類型,你必須得指定這個是Bean還是applet,因為這個屬性沒有缺省值.
code="classFileName"
將會被Java插件執行的Java Class的名字,必須以.class結尾。這個文件必須存在於codebase屬性指定的目錄中.
codebase="classFileDirectoryName"
將會被執行的Java Class文件的目錄(或者是路徑),如果你沒有提供此屬性,那麼使用<jsp:plugin>;的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。
<jsp:params>[ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+ </jsp:params>
你需要向applet或Bean傳送的參數或參數值
<jsp:fallback> text message for user </jsp:fallback>