JavaWiz: An Educational Visual / Graphical Debugger

Visualize and understand your Java code execution like never before

10
Visualization Views
VS Code
Integration
Free
Open Source
JavaWiz Interface Preview

How to Get

Latest Version: 2.1.2, released on 13.08.2026 (Changelog).

Demo Video

Features

JavaWiz provides ten synchronized visualization views: Flowchart, Memory, Tabular, Array, Linked List, Binary Tree, Sequence Diagram, Input, Java Stream, and History.

Flowchart View

Flowchart View

A dynamic flowchart representation of your program's control flow. It highlights the active statement, displays current variable values, and allows collapsing/expanding elements and method calls for better overview.

Memory View

Memory View

Visualizes the program's memory state including stack, static variables, and heap. Perfect for understanding reference semantics and object relationships in memory.

Tabular View

Tabular View

Displays program execution history in a table format, focusing on primitive value manipulations. Shows executed statements, stack variable values, and conditions of control structures.

List and Tree View

List and Tree View

Specialized views for list and tree data structures with smooth animations for operations such as insertions and deletions. Shows local node variables alongside referenced nodes, making traversal algorithms easier to understand.

Array View

Array View

Visualizes arrays as interactive tables with animated index expressions and assignments. Perfect for understanding array operations and data flow between array elements and variables.

Java Stream View

Java Stream View

Visualizes Stream pipelines as dynamic Marble Diagrams, showing execution order, intermediate results, and transformations. Links between elements reveal their lineage across filtering, mapping, and terminal operations.

Input View

Input View

Visualizes the input buffer's state using a special In.java class, showing consumed and unconsumed parts. Displays the latest operation's return value and success status, helping beginners understand input operations.

Sequence Diagram showing two heroes trading items

Sequence Diagram

Shows objects, method calls, returns, and lifetimes over the course of the execution. This makes object interactions and nested call sequences easier to follow.

History View showing calls and field changes during two item trades

History View

Presents calls, constructors, initializers, and assignments to variables, fields, and array elements across the complete execution trace. Filter or search the history and jump directly to any matching program state.

Research Papers

JavaWiz: A Trace-Based Graphical Debugger for Software Development Education

Weninger, Markus; Grünbacher, Simon; Prähofer, Herbert

Proceedings of the 33rd IEEE/ACM International Conference on Program Comprehension (ICPC 2025), April 27-28, 2025, Ottawa, Canada.

Abstract

Software development education faces challenges in teaching abstract and complex programming concepts. Since problems in comprehension can lead to decreased student engagement, we introduce JavaWiz: an educational graphical debugger that addresses these challenges by combining traditional debugging functionality with intuitive, dynamic visualizations of program state and run-time behavior.

JavaWiz's key features include real-time visualization of heap, stack, and static fields; automatically generated flow charts; interactive representations of data structures; and unique time-travel debugging capabilities. Its step-by-step visual exploration of code execution, including the ability to step backward, bridges the gap between abstract concepts and concrete program understanding.

We present the tool's visualization components in detail and discuss its applications in teaching. Lecturers report positive influence on their in-class demonstrations and initial student feedback reinforces the tool's usefulness for program comprehension.

Cite

Weninger, M., Grünbacher, S., & Prähofer, H. (2025). JavaWiz: A Trace-Based Graphical Debugger for Software Development Education.
In Proceedings of the 33rd IEEE/ACM International Conference on Program Comprehension (ICPC@ICSE 2025). Ottawa, Canada.

BibTex

@inproceedings{Weninger-JavaWiz-2025,
  author       = {Markus Weninger and
			    Simon Gr{\"{u}}nbacher and
			    Herbert Pr{\"{a}}hofer},
  title        = {{JavaWiz: {A} Trace-Based Graphical Debugger for Software Development Education}},
  booktitle    = {{33rd {IEEE/ACM} International Conference on Program Comprehension (ICPC@ICSE 2025), Ottawa, ON, Canada, April 27-28, 2025}},
  pages        = {1--12},
  publisher    = {{IEEE}},
  year         = {2025},
  url          = {https://doi.org/10.1109/ICPC66645.2025.00023},
  doi          = {10.1109/ICPC66645.2025.00023},
  biburl       = {https://dblp.org/rec/conf/iwpc/WeningerGP25.bib}
}

JavaWiz ThreadViz - A Visual Debugger for Multi-threaded Programs Based on the Espresso Java VM

Sen, Melissa; Weninger, Markus

Proceedings of the 40th European Conference on Object-Oriented Programming (ECOOP 2026), June 29-July 3, 2026, Brussels, Belgium.

Abstract

Programming novices often face difficulties understanding how multi-threading works. Visual debuggers such as JavaWiz can support beginners by providing dynamic visualizations of a program's behavior, however, they usually only work for single-threaded programs. This paper presents ThreadViz, an extension of JavaWiz to support visualizing multi-threaded Java programs.

In ThreadViz, thread information is collected for visualization by using the Truffle Debug API. Instead of real concurrency, threads are executed stepwise, allowing the user to determine the order of execution and preventing any unpredictable behavior. In the user interface, a unique color is associated with each thread to illustrate the effects of different synchronization mechanisms such as locking and indicate thread state changes. To conclude, application examples are presented to highlight the tool's capabilities.

Cite

Sen, M., & Weninger, M. (2026). JavaWiz ThreadViz - A Visual Debugger for Multi-threaded Programs Based on the Espresso Java VM.
In Proceedings of the 40th European Conference on Object-Oriented Programming (ECOOP 2026). Brussels, Belgium.

BibTex

@inproceedings{Sen-ThreadViz-2026,
  author       = {Melissa Sen and Markus Weninger},
  title        = {{JavaWiz ThreadViz - A Visual Debugger for Multi-threaded Programs Based on the Espresso Java VM}},
  booktitle    = {{Proceedings of the 40th European Conference on Object-Oriented Programming (ECOOP 2026)}},
  pages        = {1--6},
  year         = {2026},
  address      = {Brussels, Belgium},
  url          = {https://javawiz.net/paper/ECOOP_26_Preprint.pdf}
}

Towards Guided Omniscient Debugging in Education Using Pedagogical Execution Traces (PETs)

Weninger, Markus

Proceedings of the Fourth Workshop on Future Debugging Techniques (DEBT 2026), June 29, 2026, Brussels, Belgium.

Abstract

Educators frequently use trace-based debuggers for live classroom demonstrations. Yet, if a student's attention drops during class, they have to fall back to watching recordings (providing a passive, non-interactive experience) or replaying the debugging session at home (lacking the instructor's pedagogical context and verbal explanations). We introduce Pedagogical Execution Traces (PETs), a concept that enriches execution traces with explanations, highlights and interactive questions.

In this work-in-progress idea paper, we present the conceptual foundation of PETs as interactive learning artifacts, showing their applicability within JavaWiz, an educational trace-based graphical debugger. We explore PET authoring design goals and outline ongoing work regarding collaborative debugging scenarios and leveraging Large Language Models (LLMs) for trace annotation.

Cite

Weninger, M. (2026). Towards Guided Omniscient Debugging in Education Using Pedagogical Execution Traces (PETs).
In Proceedings of the Fourth Workshop on Future Debugging Techniques (DEBT 2026). Brussels, Belgium.

BibTex

@inproceedings{Weninger-PETs-2026,
  author       = {Markus Weninger},
  title        = {{Towards Guided Omniscient Debugging in Education Using Pedagogical Execution Traces (PETs)}},
  booktitle    = {{Proceedings of the Fourth Workshop on Future Debugging Techniques (DEBT 2026)}},
  pages        = {1--4},
  year         = {2026},
  address      = {Brussels, Belgium},
  url          = {https://javawiz.net/paper/DEBT_26_Preprint.pdf}
}

Dynamic Visualization of Java Stream Operations for Education Using Marble Diagrams

Stiegler, Sebastian; Weninger, Markus

Proceedings of the 14th IEEE Working Conference on Software Visualization (VISSOFT 2026), September 14-15, 2026, Benevento, Italy.

Abstract

Java Streams provide a declarative abstraction for data processing, but their lazy evaluation semantics make runtime behavior difficult to observe. Traditional debuggers are poorly suited for reasoning about element-level data flow, execution order, and transformation effects in Stream pipelines, particularly for novice programmers.

We present a trace-driven, execution-centric visualization approach that makes Java Stream execution explicit using dynamic Marble Diagrams. We describe Marble Diagrams as a visual notation, introduce a reading strategy, and show how they can be reconstructed automatically from runtime traces. We realize this approach as an extension of the educational debugger JavaWiz and demonstrate its applicability through representative usage scenarios.

Cite

Stiegler, S., & Weninger, M. (2026). Dynamic Visualization of Java Stream Operations for Education Using Marble Diagrams.
In Proceedings of the 14th IEEE Working Conference on Software Visualization (VISSOFT 2026). Benevento, Italy.

BibTex

@inproceedings{Stiegler-JavaStreams-2026,
  author       = {Sebastian Stiegler and Markus Weninger},
  title        = {{Dynamic Visualization of Java Stream Operations for Education Using Marble Diagrams}},
  booktitle    = {{Proceedings of the 14th IEEE Working Conference on Software Visualization (VISSOFT 2026)}},
  pages        = {1--12},
  publisher    = {IEEE},
  year         = {2026},
  address      = {Benevento, Italy},
  url          = {https://javawiz.net/paper/VISSOFT_26_Preprint.pdf}
}