This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Static Analysis of Object References in RMI-Based Java Software
September 2006 (vol. 32 no. 9)
pp. 664-681
Mariana Sharp, IEEE Computer Society
Atanas Rountev, IEEE Computer Society
Distributed applications provide numerous advantages related to software performance, reliability, interoperability, and extensibility. This paper focuses on distributed Java programs built with the help of the Remote Method Invocation (RMI) mechanism. We consider points-to analysis for such applications. Points-to analysis determines the objects pointed to by a reference variable or a reference object field. Such information plays a fundamental role as a prerequisite for many other static analyses. We present the first theoretical definition of points-to analysis for RMI-based Java applications, and we present an algorithm for implementing a flow- and context-insensitive points-to analysis for such applications. We also discuss the use of points-to information for computing call graph information, for understanding data dependencies due to remote memory locations, and for identifying opportunities for improving the performance of object serialization at remote calls. The work described in this paper solves one key problem for static analysis of RMI programs and provides a starting point for future work on improving the understanding, testing, verification, and performance of RMI-based software.

[1] A. Ahern and N. Yoshida, “Formalising Java RMI with Explicit Code Mobility,” Proc. Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 403-422, 2005.
[2] L.O. Andersen, “Program Analysis and Specialization for the C Programming Language,” PhD thesis, Dept. of Computer Science, Univ. of Copenhagen, 1994.
[3] M. Berndl, O. Lhoták, F. Qian, L. Hendren, and N. Umanee, “Points-to Analysis Using BDDs,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 103-114, 2003.
[4] R. Binder, Testing Object-Oriented Systems: Models, Patterns, and Tools. Addison-Wesley, 1999.
[5] R. Chatterjee, B.G. Ryder, and W. Landi, “Relevant Context Inference,” Proc. ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp. 133-146, 1999.
[6] B. Cheng and W. Hwu, “Modular Interprocedural Pointer Analysis Using Access Paths,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 57-69, 2000.
[7] M. Das, “Unification-Based Pointer Analysis with Directional Assignments,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 35-46, 2000.
[8] M. Emami, R. Ghiya, and L. Hendren, “Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 242-257, 1994.
[9] M. Fähndrich, J. Foster, Z. Su, and A. Aiken, “Partial Online Cycle Elimination in Inclusion Constraint Graphs,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 85-96, 1998.
[10] R. Fiutem, P. Tonella, G. Antoniol, and E. Merlo, “Points-To Analysis for Program Understanding,” J. Systems and Software, vol. 44, no. 3, pp. 213-227, Jan. 1999.
[11] S. Ghosh, N. Bawa, S. Goel, and Y.R. Reddy, “Validating Run-Time Interactions in Distributed Java Applications,” Proc. IEEE Int'l Conf. Eng. Complex Computer Systems, pp. 7-16, 2002.
[12] J. Gosling, B. Joy, G. Steele, and G. Bracha, The Java Language Specification, third ed. Addison-Wesley, 2005.
[13] W. Grosso, Java RMI. O'Reilly, 2002.
[14] D. Grove and C. Chambers, “A Framework for Call Graph Construction Algorithms,” ACM Trans. Programming Languages and Systems, vol. 23, no. 6, pp. 685-746, Nov. 2001.
[15] D. Grove, G. DeFouw, J. Dean, and C. Chambers, “Call Graph Construction in Object-Oriented Languages,” Proc. Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 108-124, 1997.
[16] B. Haumacher and M. Philippsen, “Exploiting Object Locality in JavaParty, a Distributed Computing Environment for Workstation Clusters,” Proc. Workshop Compilers for Parallel Computers, pp. 83-94, June 2001.
[17] N. Heintze and O. Tardieu, “Ultra-Fast Aliasing Analysis Using CLA: A Million Lines of C Code in a Second,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 254-263, 2001.
[18] M. Hind, “Pointer Analysis: Haven't We Solved This Problem Yet?” Proc. ACM SIGPLAN-SIGSOFT Workshop Program Analysis for Software Tools and Eng., pp. 54-61, 2001.
[19] W. Landi and B.G. Ryder, “A Safe Approximation Algorithm for Interprocedural Pointer Aliasing,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 235-248, 1992.
[20] O. Lhoták, “Spark: A Scalable Points-to Analysis Framework for Java,” master's thesis, McGill Univ., Dec. 2002.
[21] O. Lhoták, L. Hendren, “Scaling Java Points-To Analysis Using Spark,” Proc. Int'l Conf. Compiler Construction, pp. 153-169, 2003.
[22] O. Lhoták and L. Hendren, “Context-Sensitive Points-to Analysis: Is It Worth It?” Proc. Int'l Conf. Compiler Construction, 2006.
[23] D. Liang, M. Pennings, and M.J. Harrold, “Extending and Evaluating Flow-Insensitive and Context-Insensitive Points-to Analyses for Java,” Proc. Workshop Program Analysis for Software Tools and Eng., pp. 73-79, June 2001.
[24] D. Liang, M. Pennings, and M.J. Harrold, “Evaluating the Impact of Context-Sensitivity on Andersen's Algorithm for Java Programs,” Proc. ACM SIGPLAN-SIGSOFT Workshop Program Analysis for Software Tools and Eng., 2005.
[25] J. Maassen, R. van Nieuwpoort, R. Veldema, H. Bal, T. Kielmann, C. Jacobs, and R. Hofman, “Efficient Java RMI for Parallel Programming,” ACM Trans. Programming Languages and Systems, vol. 23, no. 6, pp. 747-775, Nov. 2001.
[26] RMI Specification, Sun Microsystems, 2002.
[27] Serialization Specification, Sun Microsystems, 2003.
[28] A. Milanova, A. Rountev, and B.G. Ryder, “Parameterized Object Sensitivity for Points-To and Side-Effect Analyses for Java,” Proc. Int'l Symp. Software Testing and Analysis, pp. 1-11, 2002.
[29] A. Milanova, A. Rountev, and B.G. Ryder, “Parameterized Object Sensitivity for Points-To Analysis for Java,” ACM Trans. Software Eng. and Methodology, vol. 14, no. 1, pp. 1-41, Jan. 2005.
[30] M. Philippsen and B. Haumacher, “Locality Optimization in JavaParty by Means of Static Type Analysis,” Concurrency: Practice and Experience, vol. 12, no. 8, pp. 613-628, July 2000.
[31] M. Philippsen, B. Haumacher, and C. Nester, “More Efficient Serialization and RMI for Java,” Concurrency: Practice and Experience, vol. 12, no. 7, pp. 495-518, May 2000.
[32] B. Quig, J. Rosenberg, and M. Kölling, “Supporting Interactive Invocation of Remote Services,” Proc. Int'l Conf. Principles and Practice of Programming in Java, pp. 195-200, 2003.
[33] C. Razafimahefa, “A Study of Side-Effect Analyses for Java,” master's thesis, McGill Univ., Dec. 1999.
[34] A. Rountev, “Component-Level Dataflow Analysis,” Proc. Int'l SIGSOFT Symp. Component-Based Software Eng., pp. 82-89, 2005.
[35] A. Rountev and S. Chandra, “Off-Line Variable Substitution for Scaling Points-To Analysis,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 47-56, 2000.
[36] A. Rountev, S. Kagan, and T. Marlowe, “Interprocedural Dataflow Analysis in the Presence of Large Libraries,” Proc. Int'l Conf. Compiler Construction, pp. 2-16, 2006.
[37] A. Rountev, A. Milanova, and B.G. Ryder, “Points-To Analysis for Java Based on Annotated Constraints,” Proc. Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 43-55, Oct. 2001.
[38] A. Rountev and B.G. Ryder, “Points-To and Side-Effect Analyses for Programs Built with Precompiled Libraries,” Proc. Int'l Conf. Compiler Construction, pp. 20-36, 2001.
[39] E. Ruf, “Effective Synchronization Removal for Java,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 208-218, 2000.
[40] B.G. Ryder, “Dimensions of Precision in Reference Analysis of Object-Oriented Programming Languages,” Proc. Int'l Conf. Compiler Construction, pp. 126-137, 2003.
[41] B.G. Ryder, W. Landi, P. Stocks, S. Zhang, and R. Altucher, “A Schema for Interprocedural Modification Side-Effect Analysis with Pointer Aliasing,” ACM Trans. Programming Languages and Systems, vol. 23, no. 2, pp. 105-186, Mar. 2001.
[42] M. Shapiro and S. Horwitz, “Fast and Accurate Flow-Insensitive Points-to Analysis,” Proc. ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp. 1-14, 1997.
[43] M. Sharp and A. Rountev, “Static Analysis of Object References in RMI-Based Java Software,” Proc. IEEE Int'l Conf. Software Maintenance, pp. 101-110, 2005.
[44] B. Steensgaard, “Points-to Analysis in Almost Linear Time,” Proc. ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp. 32-41, 1996.
[45] M. Streckenbach and G. Snelting, “Points-To for Java: A General Framework and an Empirical Comparison,” technical report, Univ. of Passau, Sept. 2000.
[46] Z. Su, M. Fähndrich, and A. Aiken, “Projection Merging: Reducing Redundancies in Inclusion Constraint Graphs,” Proc. ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp.81-95, 2000.
[47] P. Tonella, G. Antoniol, R. Fiutem, and E. Merlo, “Flow Insensitive C++ Pointers and Polymorphism Analysis and Its Application to Slicing,” Proc. Int'l Conf. Software Eng., pp. 433-443, 1997.
[48] P. Tonella, G. Antoniol, R. Fiutem, and E. Merlo, “Variable-Precision Reaching Definitions Analysis,” J. Software Maintenance: Research and Practice, vol. 11, no. 2, pp. 117-142, Mar. 1999.
[49] R. Vallée-Rai, E. Gagnon, L. Hendren, P. Lam, P. Pominville, and V. Sundaresan, “Optimizing Java Bytecode Using the Soot Framework: Is It Feasible?,” Proc. Int'l Conf. Compiler Construction, pp.18-34, 2000.
[50] R. Veldema and M. Philippsen, “Compiler Optimized Remote Method Invocation,” Proc. IEEE Int'l Conf. Cluster Computing, pp.127-137, 2003.
[51] J. Whaley and M. Lam, “Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary Decision Diagrams,” ACM SIGPLAN Conf. Programming Language Design and Implementation, 2004.
[52] S. Yong, S. Horwitz, and T. Reps, “Pointer Analysis for Programs with Structures and Casting,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 91-103, 1999.
[53] S. Zhang, B.G. Ryder, and W. Landi, “Program Decomposition for Pointer Aliasing: A Step towards Practical Analyses,” Proc. ACM SIGSOFT Symp. Foundations of Software Eng., pp. 81-92, 1996.

Index Terms:
RMI, object-oriented software, distributed software, program analysis, points-to analysis, reference analysis, class analysis, call graph construction, side-effect analysis.
Citation:
Mariana Sharp, Atanas Rountev, "Static Analysis of Object References in RMI-Based Java Software," IEEE Transactions on Software Engineering, vol. 32, no. 9, pp. 664-681, Sept. 2006, doi:10.1109/TSE.2006.93
Usage of this product signifies your acceptance of the Terms of Use.