Note on slow Graphics on Windows
If you experience a slow UI after upgrading to jGRASP 2.0.6_14 on Windows, try turning off "Settings" > "Startup Settings" > "Disable DirectDraw". This was off by default in the previous jGRASP release, but we found that it causes graphics glitches with some video cards/drivers, so it is now on by default.
If enabling DirectDraw causes graphics glitches, please let us know your video driver version and video card, which can be found on Device Manager under "Display adapters" on the "Driver" tab (for the card on which jGRASP is being displayed, if there is more than one). We will list problem drivers here, and report to the vendor if possible, or try to work around the problem if we have access to a known problem card.
About jGRASP and jGRASP Plugins
jGRASP is a lightweight development environment, created specifically to provide automatic generation of software visualizations to improve the comprehensibility of software. jGRASP is implemented in Java, and runs on all platforms with a Java Virtual Machine (Java version 11 or higher). jGRASP produces Control Structure Diagrams (CSDs) for Java, C, C++, Objective-C, Python, Ada, and VHDL; Complexity Profile Graphs (CPGs) for Java and Ada; UML class diagrams for Java; and has dynamic object viewers and a viewer canvas that work in conjunction with an integrated debugger and workbench for Java. The viewers include a data structure identifier mechanism which recognizes objects that represent traditional data structures such as stacks, queues, linked lists, binary trees, and hash tables, and then displays them in an intuitive textbook-like presentation view.
jGRASP plugins for IntelliJ (IDEA and Android Studio) and Eclipse add the viewer and canvas features to those IDEs. For IntelliJ, the viewers and canvas will also work with Kotlin (JVM) code.
jGRASP is developed by the Department of Computer Science and Software Engineering in the Samuel Ginn College of Engineering at Auburn University.
jGRASP version 2.0.6_14 introduces debugger support for Java virtual threads, which were introduced in Java 21.
jGRASP version 2.0.6_11 Beta 9 introduces CSD support for Java module descriptor files. This is enabled through a new "Java Module Descriptor" language choice.
jGRASP version 2.0.6_11 Beta 7 introduces CSD support for switch expressions in Java (previously, switch expressions were parsed but no CSD diagram segment was produced for them). The diagram segments for these are not attached to the main diagram and can have arbitrary indentation, similar to the CSD diagram segments for lambda expressions and anonymous inner class creation expressions.
jGRASP version 2.0.6_11 Beta 6 includes a 2D array image viewer (shows a 2D int array as RGB pixels) and a "musical" bar graph viewer. Videos showing the capabilities of these viewers are available: Musical Sorting, Conway's Game of Life, Mandelbrot Set Zoom.
jGRASP version 2.0.6_11 Beta 4 introduces compile and run support and integrated debugging for Kotlin/JVM. The data structure viewers and canvas will work with Kotlin, but they haven't yet been optimized for it. Interactions can be used to interface with a Kotlin program at a breakpoint, but Java syntax must be used.
jGRASP version 2.0.6_11 Beta 3 introduces syntax coloring support for Kotlin files.
jGRASP version 2.0.6_09 for MacOS has universal 64 bit Intel / ARM 64 binaries. A version bundled with OpenJDK for ARM 64 is also available.
The current development focus is on updating the IntelliJ and Eclipse plugins after merging two branches of jGRASP. After that, CSD support for Kotlin will be completed. Then, the partially implemented gdb/lldb debugger interface will be finished in order to provide debugger and visualization support for C and C++, and the potential for other languages in the future.
The development of jGRASP plugins for Eclipse and IntelliJ, and initial development of jGRASP C/C++ visualizations was supported by the Auburn Cyber Research Center.
Prior development of jGRASP was supported by a research grant from the National Science Foundation.
The development of GRASP, the predecessor of jGRASP, was supported by research grants from NASA Marshall Space Flight Center, the Department of Defense Advanced Research Projects Agency (ARPA), and the Defense Information Systems Agency (DISA).