# Interface: com.pnfsoftware.jeb.core.IPlugin

Base interface for JEB back\-end plugins. 

 Plugins should not implement this interface directly, but instead implement one of the children interfaces that are made available by the API: 
 
- [IEnginesPlugin](IEnginesPlugin) for generic engines plugins
-  
- [IUnitIdentifier](IUnitIdentifier) for parsers/disassemblers/decompilers/debuggers/etc.
-  
- [IUnitContribution](IUnitContribution) for contributions \(ie, extensions\) to parsers
-  
- [IUnitInterpreter](IUnitInterpreter) for interpreters \(ie, command\-line extensions\) to parsers
-  
- [IOptimizer](IOptimizer) for native IR and AST optimizers for `gendec`, JEB's generic decompiler
-  
- [IDOptimizer](IDOptimizer) for IR optimizers used by `dexdec`, JEB's dex decompiler.
-  
- [IJOptimizer](com.pnfsoftware.jeb.core.units.code.java.IJOptimizer) for AST optimizers used by `dexdec`, JEB's dex decompiler.
-  

 

 Implementation note: JEB plugins can be written in Java \(and optionally contained in JAR files\). Contributions may also be written in Python.

## Method: dispose

Description: Dispose of resources used by this plugin. The engines context calls this method upon plugin unloading.

## Method: getData
- parameter: `key`, type: `java.lang.Object`
- return type: `java.lang.Object`

Description: Retrieve a piece of transient plugin data.
parameter: key: data key
return: stored value, or null if absent

## Method: getPluginInformation
- return type: `com.pnfsoftware.jeb.core.IPluginInformation`

Description: Retrieve basic information about the plugin, such as name, version, author, and organization.
return: the plugin information

## Method: setData
- parameter: `key`, type: `java.lang.Object`
- parameter: `value`, type: `java.lang.Object`

Description: Store a piece of transient plugin data.
parameter: key: data key
parameter: value: data value

