plugin

生活百科 2023-01-26 10:45生活百科www.aizhengw.cn

plugin

Plugin(Plug-in,addin,add-in,addon或add-on)是一种计算机应用程式,它和主应用程式(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 Channel Architecture),都允许第三方设备。这些都是类似外挂程式的一种机制。

外挂程式和扩展

外挂程式稍不同于扩展(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

JSP 语法

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

Copyright@2015-2025 www.aizhengw.cn 癌症网版板所有