Francisco Ortin , Oscar Rodriguez-Prieto , Miguel Garcia
{"title":"Introspector: A general-purpose tool for visualizing and comparing runtime object structures on the Java platform","authors":"Francisco Ortin , Oscar Rodriguez-Prieto , Miguel Garcia","doi":"10.1016/j.softx.2025.102250","DOIUrl":null,"url":null,"abstract":"<div><div>Understanding the runtime behavior of complex software systems requires dynamic analysis beyond traditional static inspection techniques. Modern applications rely on intricate hierarchies of interconnected objects, making runtime structure analysis crucial for debugging and software comprehension. Traditional approaches such as debuggers, logging, and memory profilers often require significant manual effort to visualize and compare complex object data structures. To address these limitations, we implemented Introspector, a general-purpose tool that provides interactive visualization of any runtime object data structure for applications written in any language compiled to the Java platform. Unlike existing tools, Introspector does not require source code access, supports real-time visualization, and enables automated structural comparisons of object graphs at different execution points. Additionally, it allows for report generation in both text and HTML formats. Introspector is designed to be lightweight, integrating seamlessly into any Java application via its JAR file, not requiring entering debug mode with the corresponding runtime performance overhead of other JDPA-based approaches. Introspector has been successfully applied in multiple domains, including software development, education, and scientific research. It has enabled developers to compare evolving data structures during program execution, educators to visually demonstrate complex programming concepts, and researchers to inspect object data structures such as deep neural networks and biological data structures.</div></div>","PeriodicalId":21905,"journal":{"name":"SoftwareX","volume":"31 ","pages":"Article 102250"},"PeriodicalIF":2.4000,"publicationDate":"2025-07-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"SoftwareX","FirstCategoryId":"94","ListUrlMain":"https://www.sciencedirect.com/science/article/pii/S2352711025002171","RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q2","JCRName":"COMPUTER SCIENCE, SOFTWARE ENGINEERING","Score":null,"Total":0}
引用次数: 0
Abstract
Understanding the runtime behavior of complex software systems requires dynamic analysis beyond traditional static inspection techniques. Modern applications rely on intricate hierarchies of interconnected objects, making runtime structure analysis crucial for debugging and software comprehension. Traditional approaches such as debuggers, logging, and memory profilers often require significant manual effort to visualize and compare complex object data structures. To address these limitations, we implemented Introspector, a general-purpose tool that provides interactive visualization of any runtime object data structure for applications written in any language compiled to the Java platform. Unlike existing tools, Introspector does not require source code access, supports real-time visualization, and enables automated structural comparisons of object graphs at different execution points. Additionally, it allows for report generation in both text and HTML formats. Introspector is designed to be lightweight, integrating seamlessly into any Java application via its JAR file, not requiring entering debug mode with the corresponding runtime performance overhead of other JDPA-based approaches. Introspector has been successfully applied in multiple domains, including software development, education, and scientific research. It has enabled developers to compare evolving data structures during program execution, educators to visually demonstrate complex programming concepts, and researchers to inspect object data structures such as deep neural networks and biological data structures.
期刊介绍:
SoftwareX aims to acknowledge the impact of software on today''s research practice, and on new scientific discoveries in almost all research domains. SoftwareX also aims to stress the importance of the software developers who are, in part, responsible for this impact. To this end, SoftwareX aims to support publication of research software in such a way that: The software is given a stamp of scientific relevance, and provided with a peer-reviewed recognition of scientific impact; The software developers are given the credits they deserve; The software is citable, allowing traditional metrics of scientific excellence to apply; The academic career paths of software developers are supported rather than hindered; The software is publicly available for inspection, validation, and re-use. Above all, SoftwareX aims to inform researchers about software applications, tools and libraries with a (proven) potential to impact the process of scientific discovery in various domains. The journal is multidisciplinary and accepts submissions from within and across subject domains such as those represented within the broad thematic areas below: Mathematical and Physical Sciences; Environmental Sciences; Medical and Biological Sciences; Humanities, Arts and Social Sciences. Originating from these broad thematic areas, the journal also welcomes submissions of software that works in cross cutting thematic areas, such as citizen science, cybersecurity, digital economy, energy, global resource stewardship, health and wellbeing, etcetera. SoftwareX specifically aims to accept submissions representing domain-independent software that may impact more than one research domain.