# JMRI: Applications

JMRI provides several applications that are optimized for specific purposes. You can of course also write your own.

DecoderPro®
  A better tool for programming decoders. DecoderPro simplifies the job of configuring complicated DCC decoders by providing screens on which you can select the various options and values you want.
  Open DecoderPro by double-clicking its icon in the JMRI installation folder.
PanelPro™
  Operating CRT based CTC control panels that reflect the real-time state of your railroad and let you control it - almost like a Prototype dispatcher!
  Open PanelPro by double-clicking its icon in the JMRI installation folder.
SoundPro™
  A set of tools for using Audio with JMRI.
LccPro™
  A set of tools for configuring LCC nodes with JMRI.
OperationsPro™
  Create Train Manifests that detail the work your train crews will perform during an Operations session. The Manifest lists of car pick up and set outs, shows where the cars are located, and provides the cars' destinations.
DispatcherPro™
  A system for Dispatching a model railroad. The ability to automatically run trains is a popular feature.

## Additional Applications with JMRI Connections...

Hobbyists have created applications that work with JMRI to provide extra capabilities. In addition, some commercial vendors have created applications that work with, add data to, or take data from JMRI

See the community/connections directory for a list and links. New applications can be added at any time!

## Jython Applications for JMRI...

Some JMRI users have implemented sophisticated capabilities using the JMRI jython scripting facilities. These are listed here.

## JMRI Features and Tools

JMRI software consists of a large library of functions divided into

- a system-specific part, with many subparts, each of which communicates with one supported hardware system, like C/MRI, in a system specific way, and
- a system-independent part where most of the features of JMRI are implemented.

So, for example, if the user does something (perhaps setting a route) to cause JMRI to throw a Turnout (track switch), that user action will occur in the system-independent part of the software, and then JMRI will send out the actual command via the system-dependent part appropriate to the hardware system controlling the particular Turnout thrown. JMRI is designed so that features are implemented in the system-independent part as much as possible, with JMRI using system-dependent subparts only when really necessary. Access to system-independent features is via the main JMRI menus, such as the Tools menu.

- You can find additional information about each of the JMRI "common" tools by clicking through the links in the sidebar or the tools index page.
- There are many system-specific tools that are available within the JMRI applications. You can find additional information about each by clicking through the links in the system-specific tools index page. The tools themselves are invoked from their own menu pulldowns within the JMRI applications when you have JMRI configured for each specific System Connection.