emuStudio is a Java Swing application that implements an editor of virtual computer configuration, source code editor, and emulation “controller” (sometimes known as “debugger”). The emulation controller is used for controlling the emulation, and also supports the interaction in the application GUI. Under the hood, it operates with an instance of the so-called “virtual computer”. The virtual computer - or computer emulator - is loaded from the computer configuration, selected by the user in the beginning.
A virtual computer is composed of plugin instances, which can be interconnected, as the computer configuration defines. Each plugin is a single, almost self-contained, JAR file. It means that almost all dependencies the plugin uses should be present in the JAR file, except the following, which are bundled with emuStudio and will always be available on the class-path:
The application, besides, provides also:
- plugin configuration management - implementation of PluginSettings
- and runtime API for the communication between plugins and the application - implementation of ApplicationApi
Plugins get those objects in the constructor. Details are provided in further chapters, but here can be revealed just this: there are four types of plugins. A virtual computer can contain a compiler (which produces code loadable in the emulated computer), one CPU emulator, one operating memory, and none, one or more virtual devices. The core concept of a virtual computer is inspired by the von Neumann model.
Each plugin implements API from emuLib, following some predefined rules. Then a plugin is compiled to a JAR file and put into a proper subdirectory in emuStudio installation.