插件

插件（，又譯外-{}-挂、擴充功能）是一種电脑程序，透過和应用程序（例如网页浏览器，電子郵件用戶端）的互动，用来替应用程式增加一些所需要的特定的功能。最常见的有遊戲、网页浏览器的插件和媒体播放器的插件。

应用程序之所以支持插件的使用原因很多，主要包括：使得第三方的开发者可以对应用程序进行扩充、精简，或者将源代码从应用程序中分离出来，去除因软件使用权限而产生的不兼容。

 例子 
许多专业软件都提供给开发者撰写插件所需要的API，目的是为了扩展软件的功能。以下是应用程序及其插件的例子：
 電子郵件用戶端使用插件来进行加密和解密（良好隱私密碼法）
 绘图软件使用插件来支持不同文件格式，处理图片（Adobe Photoshop）
 媒體播放器使用插件来支持不同文件格式，并且提供过滤器。
 数据包监测器用插件来对数据包进行解码（）
 用插件来处理不同类型的感应器发送的数据（）
 整合開發環境用插件来支持编程语言（Eclipse，jEdit，MonoDevelop）
 网络浏览器使用插件来播放视频及其它格式（Flash，QuickTime）

 机制和原理 
应用软件提供使插件能够应用的各项服务，其中包括提供加载方式，使插件可以加载到应用程序和网络传输协议中，从而和插件进行数据交换。插件必须依赖于应用程序才能发挥自身功能，仅靠插件是无法正常运行的。相反地，应用程序并不需要依赖插件就可以运行，这样一来，插件就可以加载到应用程序上并且动态更新而不会对应用程序造成任何改变。

公开应用程序接口提供一个标准的界面，允许其他人编写插件和应用程序互动。一个稳定的应用程序接口会允许
其他插件正常运行即使其最初的版本有所变动，也会支持插件延长老旧的应用程序的使用寿命。Adobe Photoshop  和After Effects的插件应用程序接口逐渐成为标准，并且被一些和它们竞争的应用程序部分采纳。另外一些象这样的应用程序接口包括Audio Units和VST。

就好比一个网络转换器也许会运载一个未被佔用但不标准的端口来容纳各种任选的物理层连接器。而游戏和某些应用程序经常使用插件的体系结构来允许最初的发行者和第三方发行者增加功能性。

生产厂家可以用插件来产生卖方锁定，就是透過选择限制更新这个选项使得厂商签署的买方才可以更新使用其产品。IBM的Micro Channel Architecture，从技术上来会说，比Industry Standard Architecture更为先进，可以给IBM的个人电脑添加组成，但是因为很难给第三方的装置设备取得证明而未能大面积推广。微软的Flight Simulator系列比较著名就是因为它可以下载aircraft附件。

 插件和擴充套件 

插件和擴充套件都是在现有的功能上进行修改或者增加，但它们还是有细微区别的。主要的区别就是插件通常依赖于应用程序的用户界面，它的一切行为都不能超出已经严格定义好的界限。而擴充套件通常没有多少限制，也许还会拥有独立的用户界面。它通常是用来减小应用程序的尺寸，并提供一些可选的功能。Mozilla Firefox及其相关的软件使用附加元件作为所有添加的模块这一类别的名称，这个类别下又分为插件、主题、搜索引擎和开发成熟的擴充套件系统等子类。这样就减少了Mozilla Application Suite不会因为特徵蔓延而对主程序造成影响。

 发展历史 
插件的出现可以追溯到1970年代中期，当文本编辑器在大型電腦上运行Unisys 操作系统的时候，其提供了一项功能就是编辑器可以运行一个程序，并允许这个程序进入编辑器的缓冲，允许外部程序染指内存中，正在编辑的任务EDT Text Editor Reference Manual, Cinnaminson, New Jersey: Unisys Corporation, 1975。插件程序使得编辑器在缓冲区上进行文本编辑，而这个缓冲是编辑器和插件所共同享用的。Waterloo Fortran编译器使用这些特性使得Fortran程序的内部编译可以用EDT编辑。

 参考資料 

 参见 

 Applet
 函式庫

Category:应用程序接口
Category:软件附加组件
Category:技術新詞