plugin

Plugin(Plug-in, addin, add-in, addon或add-on)是一种计算机应用程序,它和主应用程序(host application)互相交互,以提供特定的功能。

应用程序支持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)

主应用程序提供给插件可以使用的服务,让插件在主应用程序中注册插件本身,以及和插件进行数据交换的协议。插件依叠霸桨赖于主应用程序提供的这些服务,通常不能独立运行。相反地,主应凳遥汽用程序和插件是分离的,这就使得我们可以不改变主应用程序而动态增加或更新插件。

公开的应用程序接口(API)提供一个标准接口,允许第三方编写插件和主应用程序交互。一个稳定的API必须在主应用程序版本升级后第三方插件仍可以运行。插件同时也延长了过时的应用程序的生命。Adobe Photoshop 和 After Effects 提供给插件的API已经成为一种图像处理软件API的标准,被相类的图像处理软件所采纳。其它类似的API包括 Audio Units 和VST。

这种插件的机制很普遍,比如一个网络交换器,它有一个没被占用而且是非标准的端口,用它来接纳不同的任意的定担糠去物理层连接;再比如计算机硬件制造业旋蒸葛的行业标准架构(Industry Standard Architecture)和IBM著名的微通道架构(Micro Channel Architecture),都允许第三方设备。这些都是类似插件的一种机制。

插件稍不同于扩展(extension),插件通常依赖于主应用程序的接口,有一个它们可以运行的确定的界限。扩展则通常有更少的限制,也可以提供它们自己的接口。相同的是,它们通达影府耻常都用来减少主应用程序的大小、提供一些可选的功能。

这里不得不提到Mozilla Firefox 和相关软件。它们使用一个叫做Add-on的名词,Add-on又被细分为插件、主题、搜索引擎和扩展。在以后的文章中将会提到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 下包含有c++和jsp语法两种语言分类

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

<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>

相关词汇