## Scripting and Plugins

### Overview

BinNavi allows you to write scripts and plugins in several different programming languages. BinNavi scripts are preferably written in Python or Ruby (using the Jython and JRuby extensions respectively) while BinNavi plugins are preferably written in Java, Python (Jython), or Ruby (JRuby).

In theory it is also possible to write BinNavi scripts and plugins in more exotic languages ranging from Groovy to Haskell or Scheme and all other languages mentioned on the Java Scripting website. However, these languages were never tested with BinNavi and are therefore not officially supported.

### Scripting

All BinNavi windows have a menu that opens a scripting dialog. This section explains how to use this dialog to execute scripts that can access BinNavi internals.

### Plugins

Plugins are BinNavi extensions that are larger in scope and size than script files. You can write plugins to extend BinNavi according to your own needs. While Java is the preferred programming language for BinNavi plugins, plugins can be written in all scripting languages supported by BinNavi too.