The event dispatch components are the core of Σοφία; these are the tools that actually provide for the processing and capture of events observed in running Java programs. Σοφία provides various classes that use the event dispatch framework to record trace files of the events observed during program runs. These classes can serve both as a basis for a variety of interesting trace-based analyses and as basic examples of how to use the framework programmatically. The user manual will focus on how to use the classes for trace file collection that are provided by Σοφία.
Σοφία's event dispatch framework is logically composed of two major sub-packages to dispatch different types of event streams. The first type of event stream is a semantic event stream. Informally, Σοφία semantic events are considered to be those events that communicate information that is sensitive to the meaning of the program as it impacts data state or control dependence. Examples of such events are field reads and writes, and lock operations. The second type of event stream is a structural event stream. This is an event stream that communicates information about the execution of program code entities, such as basic blocks and branch decisions. A familiar application of such event streams is to measure program coverage. We provide a detailed discussion of the usage of Σοφία provided instrumentation and trace collection classes for each of these types of event streams.
Further information on the event dispatch framework of Σοφία and the event dispatcher language (EDL) can be found in the technical report.