JGRASP

Last updated
jGRASP
Developer(s) jGRASP Team
Stable release
2.0.6_12 / December 21, 2022
Platform Java SE
Type Java IDE
License License, freeware
Website http://www.jgrasp.org/

jGRASP is a development environment that includes the automatic creation of software visualizations. It produces static visualizations of source code structure and visualizations of data structures at runtime. [1]

Contents

The runtime data structure visualizations are also available as plugins for IntelliJ IDEA, Android Studio, and Eclipse.

jGRASP is implemented in Java, and runs on all platforms with a Java Virtual Machine (Java version 1.8 or higher). GRASP (Linux, UNIX) and pcGRASP (Windows) are written in C/C++, whereas jGRASP is written in Java (the "j" in jGRASP means it runs on the JVM). The jGRASP web site offers downloads for Windows, Mac OS, and as a generic ZIP file suitable for Linux and other systems.

For languages other than Java and Kotlin, jGRASP is a source code editor and basic IDE. It can be configured to work with most free and commercial compilers for any programming language.

Visualizations

The Control Structure Diagram [2] [3] (CSD) is a control flow diagram that fits into the space normally taken by indentation in source code. Its purpose is to improve the readability of source code. jGRASP produces CSDs for Java, C, C++, Objective-C, Ada, and VHDL. The editing window provides CSD-based folding and a "context hint" feature that displays the first line of a code structure that is off-screen when the mouse is hovered over its CSD structure.

The Java/Kotlin object viewers [4] [5] in jGRASP provide interface-based, structural, and other views of data structures and other objects and primitives during debugging and workbench operations. For example, a content-based view shows ArrayList and LinkedList in an identical way, as a list of elements. Structural views show the internal structure of trees, linked lists, hash tables, etc. Structural views of linked data structures display local variable nodes and their relation to the main structure. The result is animated when changes occur, as when a node is added to a linked list. Common data structures are automatically identified and displayed structurally. Other viewers show, for example, a color swatch for a Color, the image for an icon, and the binary details of a double. Multiple viewers can be combined on a single viewer canvas window and the contents can be saved to file.

The Complexity Profile Graph [6] (CPG) is a statement-level complexity diagram. Its purpose is to aid in identifying overly complex areas of source code. jGRASP generates CPGs for both Java and Ada. The metric includes common measures, such as reachability and content complexity, which can be displayed individually.

jGRASP also generates UML diagrams for Java, with interactive dependency information.

History

jGRASP was created by James Cross and Larry Barowski at the Department of Computer Science and Software Engineering in the Samuel Ginn College of Engineering at Auburn University. It is maintained and evaluated by the jGRASP Team. The development of jGRASP has been supported by a research grant from the National Science Foundation.

The development of previous versions of GRASP was supported by research grants from NASA Marshall Space Flight Center, the Department of Defense Advanced Research Projects Agency (DARPA), and the Defense Information Systems Agency (DISA).

See also

Related Research Articles

An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as IntelliJ IDEA, Eclipse and Lazarus contain the necessary compiler, interpreter or both; others, such as SharpDevelop, NetBeans do not.

Pascal is an imperative and procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named after French mathematician, philosopher and physicist Blaise Pascal.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

The GNU Compiler for Java (GCJ) is a discontinued free compiler for the Java programming language. It was part of the GNU Compiler Collection.

<span class="mw-page-title-main">Delphi (software)</span> General-purpose programming language and a software product

Delphi is a general-purpose programming language and a software product that uses the Delphi dialect of the Object Pascal programming language and provides an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software, currently developed and maintained by Embarcadero Technologies.

Object Pascal is an extension to the programming language Pascal that provides object-oriented programming (OOP) features such as classes and methods.

In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on top of" the resulting platform.

<span class="mw-page-title-main">Class browser</span> Feature of coding platforms

A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.

<span class="mw-page-title-main">Aptana</span> Text editor

Aptana, Inc. is a company that makes web application development tools for use with a variety of programming languages. Aptana's main products include Aptana Studio, Aptana Cloud and Aptana Jaxer.

The following tables list notable software packages that are nominal IDEs; standalone tools such as source-code editors and GUI builders are not included. These IDEs are listed in alphabetic order of the supported language.

TypeScript is a free and open-source high-level programming language developed by Microsoft that adds static typing with optional type annotations to JavaScript. It is designed for the development of large applications and transpiles to JavaScript. Because TypeScript is a superset of JavaScript, all JavaScript programs are syntactically valid TypeScript, but they can fail to type-check for safety reasons.

<span class="mw-page-title-main">Node.js</span> JavaScript runtime environment

Node.js is a cross-platform, open-source JavaScript runtime environment that can run on Windows, Linux, Unix, macOS, and more. Node.js runs on the V8 JavaScript engine, and executes JavaScript code outside a web browser.

Kotlin is a cross-platform, statically typed, general-purpose high-level programming language with type inference. Kotlin is designed to interoperate fully with Java, and the JVM version of Kotlin's standard library depends on the Java Class Library, but type inference allows its syntax to be more concise. Kotlin mainly targets the JVM, but also compiles to JavaScript or native code via LLVM. Language development costs are borne by JetBrains, while the Kotlin Foundation protects the Kotlin trademark.

<span class="mw-page-title-main">CudaText</span> Open source text editor

CudaText, from Bosnian-Croatian-Montenegrin-Serbian čuda, is a free open source cross-platform native GUI text and source code editor. CudaText supersedes its predecessor SynWrite, no longer under development.

<span class="mw-page-title-main">Mercury (crystallography)</span>

Mercury is a freeware developed by the Cambridge Crystallographic Data Centre, originally designed as a crystal structure visualization tool. Mercury helps three dimensional visualization of crystal structure and assists in drawing and analysis of crystal packing and intermolecular interactions. Current version Mercury can read "cif", ".mol", ".mol2", ".pdb", ".res", ".sd" and ".xyz" types of files. Mercury has its own file format with filename extension ".mryx".

References

  1. "jGRASP Home Page". www.jgrasp.org. Retrieved 2020-06-01.
  2. "Visual Support for Incremental Abstraction and Refinement in Ada 95"
  3. "GRASP/Ada 95: Visualization with Control Structure Diagrams"
  4. "Dynamic Object Viewers for Data Structures"
  5. "An Extensible Framework for Providing Dynamic Data Structure Visualizations in a Lightweight IDE"
  6. "Visualization and Measurement of Source Code"