Static analyses for java in the presence of distributed components and large libraries

  • Authors:
  • Atanas Rountev;Mariana L. Sharp

  • Affiliations:
  • The Ohio State University;The Ohio State University

  • Venue:
  • Static analyses for java in the presence of distributed components and large libraries
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

Abstract

Modern Java applications present significant challenges for existing algorithms for static compile-time analysis. Two such challenges are large code size, and applications that are distributed across multiple machines. Existing analysis algorithms are not suitable to deal with these challenges. One reason is that analyses are typically designed to operate on whole homogeneous programs. For applications built with libraries, the library code is analyzed together with the application code. This leads to scalability problems when the analysis algorithms are used on large-scale Java software built with reusable library components. Moreover, Java applications using component models such as RMI (Remote Method Invocation) have complex semantics which are not modeled by existing analyses. In this work we propose several analysis techniques for modern Java software. First, we define a theoretical model for points-to analysis of distributed RMI-based Java applications. We propose an algorithm for computing points-to information for such applications. This algorithm is implemented and evaluated experimentally on a set of distributed Java programs. Second, we define an incremental approach for type analysis and dependence analysis of large-scale Java software built with reusable library components. Our approach employs precomputed library summary information. The library code is analyzed independently of any client code, using a summary-generation analysis. The resulting summary is reusable for subsequent analysis of any client component. The solution for the client code, computed using the summary, is the same as the solution what would have been computed by a whole-program analysis. Our experimental studies indicate that the cost of whole-program type analysis and dependence analysis can be reduced dramatically by the proposed approach. This work presents novel advances towards solving two important analysis problems for Java software: analysis in the presence of large libraries and analysis in the presence of RMI calls. We also provide theoretical foundations and experimental insights for future work on static analyses for Java software built with large reusable components and with RMI-based middleware platforms such as Enterprise JavaBeans. As a result, our work brings static analysis techniques a step closer to practical use in real-world software tools for industrial Java applications.