The JMRI project is building tools for model railroad computer control. We want it to be usable to as many people as possible, so we're building it in Java to run anywhere, and we're trying to make it independent of specific hardware systems.
JMRI is intended as a jumping-off point for hobbyists who want to control their layouts with a computer without having to create an entire system from scratch.
You can manage your locomotive rosters and easily program your decoders using DecoderPro®. You can build control panels, set up signaling, configure operations and control your layout using PanelPro. Going beyond the basics, you can use Logix to automate your layout's behavior, interface with X10 and Insteon systems to control your layout room's lights and write scripts to extend the capabilities of the system. JMRI Operations lets you create manifests that route cars across your railroad from shipper to receiver, and provide train crews with operating instructions.
The NCE / JMRI Hardware guide