### System Overview

NeXtMidas is a highly portable Java-based class library for data acquisition, signal processing, and graphical display applications and a set of runtime objects that preserve context to enable a cohesive session of transitory command-oriented actions. A NeXtMidas session is launched as a conventional application from a terminal window. Provision is also made to execute single commands in a one-shot mode without the overhead of session startup and shutdown.

NeXtMidas is programmable by the user. New commands are created using either Java or the built-in NeXtMidas macro language. Commands written in Java generally execute faster but require more time to code and debug. Macro commands can be defined relatively quickly, but performance may suffer. Although there is no inherent limitation to the type of command that can be added to NeXtMidas, the system infrastructure is designed to aid in creating and executing commands that perform signal acquisition, processing, and display.

A key capability of the NeXtMidas macro facility is support for distributed applications running on different platforms. In this context, it is common to see the graphical components of the application implemented as one or more NeXtMidas macros that coordinate their activities with number-crunching commands executed by X-Midas.

The reason for this division of labor is simple. Signal processing applications often combine numerically intensive algorithms with complex graphics. Numerical code can be efficiently and portably coded in FORTRAN and C, which are the languages of choice in environments like X-Midas. The graphics code, on the other hand, may not be quite so demanding of computational efficiency but is notoriously difficult to write portably unless constructed in a language like Java, which is designed specifically to provide platform independence. Thus, the graphical front end of a signal processing application is most sensibly implemented in a system like NeXtMidas whose native tongue is Java.

This section introduces key NeXtMidas concepts and terminology for those unfamiliar with any of the previous Midas incarnations. It comprises the following subsections:

- Key Components
- Directory Structure