JIVE is an interactive execution environment for Eclipse that facilitates debugging Java programs with rich visualizations of object structure and method interactions. JIVE extends Eclipse's Java debugging features with interactive visualizations, query-based debugging, and reverse stepping. It can be used with the standard JDK or Android SDK.
JIVE is particularly helpful in learning object-oriented programming using Java. Its rich visualizations and the ability to step forwards as well as backwards makes it a powerful tool for enhancing program comprehension.
Programmers can take advantage of JIVE's query-based debugging, dynamic slicing, exclusion filters, and capabilities for dealing with large executions, by restricting visualizations to occur only over a designated interval (specified through break-points).
The recent additions to JIVE include compact representation of large sequence diagrams, and support for runtime verification of Java programs through the generation of state diagrams from program executions. JIVE also allows the generated state diagram to be checked for consistency against design-time specifications.
JIVE depicts both the runtime state and call history of a program in a visual manner. The runtime state is visualized as an enhanced object diagram, showing object structure as well as method activations in their proper object contexts. The call history is depicted as an extended sequence diagram, with each execution thread shown in a different color, clarifying the object interactions that occur at runtime. The diagrams are scalable and can be filtered to show only information pertinent to the task at hand. JIVE also supports a state diagram view, which is useful for programs that exhibit a repetitive behavior.
Traditional debugging is a procedural process in that a programmer must proceed step-by-step and object-by-object to find the casue of an error. In contrast, JIVE supports a declarative approach to debugging by providing an extensible set of queries over a entire program's execution history, not just over the stack of outstanding calls. Queries are formulated using the source code or the diagrams, and the results are shown in a tabular format and also as diagram annotations. JIVE also supports dynamic slicing in order to achieve reduced visualizations and focus on the root-cause of errors.
JIVE supports both forward and reverse stepping of Java programs. Often, a programmer may discover that an error has occurred only after the errant statement has been executed. Providing the ability to step backwards saves a programmer the time and effort of re-executing the program until the point of error. JIVE also provides the ability to jump directly back to any previous point in the execution history in order to observe the object diagram at that point. Reverse stepping and jumping work closely with query-based debugging to narrow down the cause of program errors.