ABSTRACT
The indirection of object accesses is a common theme for target domains as diverse as transparent distribution, persistence, and program instrumentation. Virtualizing accesses to fields and methods (by redirecting calls through accessor and indirection methods) allows interposition of arbitrary code, extending the functionality of an application beyond that intended by the original developer.
We present class modifications performed by our RuggedJ transparent distribution platform for standard Java virtual machines. RuggedJ abstracts over the location of objects by implementing a single object model for local and remote objects. However the implementation of this model is complicated by the presence of native and system code; classes loaded by Java's bootstrap class loader can be rewritten only in a limited manner, and so cannot be modified to conform to RuggedJ's complex object model. We observe that system code comprises the majority of a given Java application: an average of 76% in the applications we study. We consider the constraints imposed upon pervasive class transformation within Java, and present a framework for systematically rewriting arbitrary applications. Our system accommodates all system classes, allowing both user and system classes alike to be referenced using a single object model.
- S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovic, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA '06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-Oriented Programing, Systems, Languages, and Applications, pages 169--190, New York, NY, USA, October 2006. ACM Press. doi: http://doi.acm.org/10.1145/1167473.1167488. Google Scholar
Digital Library
- Michael Factor, Assaf Schuster, and Konstantin Shagin. Instrumentation of standard libraries in object-oriented languages: the Twin Class Hierarchy approach. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 288--300, 2004. Google Scholar
Digital Library
- Sheng Liang and Gilad Bracha. Dynamic class loading in the Java virtual machine. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 36--44, 1998. doi: 10.1145/286936.286945. Google Scholar
Digital Library
- Phil McGachey, Antony L. Hosking, and J. Eliot B. Moss. Pervasive load-time transformation for transparently distributed Java. In Proceedings of the International Workshop on Bytecode Semantics, Verification, Analysis, and Transformation, 2009.Google Scholar
Digital Library
- David Saff, Shay Artzi, Jeff H. Perkins, and Michael D. Ernst. Automatic test factoring for Java. In Proceedings of the International Conference on Automated Software Engineering, pages 114--123, 2005. Google Scholar
Digital Library
- Standard Performance Evaluation Corporation. SPEC JBB2005 Benchmark. http://www.spec.org/jbb2005,.Google Scholar
- Standard Performance Evaluation Corporation. SPEC JVM2008 Benchmark. http://www.spec.org/jvm2008/,Google Scholar
- Sun Microsystems, Inc. The JVM Tool Interface. http://java.sun.com/j2se/1.5.0/docs/guide/jvmti.Google Scholar
- E. Tilevich and Y. Smaragdakis. J-Orchestra: Enhancing Java programs with distribution capabilities. ACM Transactions on Software Engineering and Methodology, 2009. To appear. Google Scholar
Digital Library
- Eli Tilevich and Yannis Smaragdakis. J-Orchestra: Automatic Java application partitioning. In Boris Magnusson, editor, Proceedings of the European Conference on Object-Oriented Programming, volume 2374 of Lecture Notes in Computer Science, pages 178--204. Springer-Verlag, 2002. Google Scholar
Digital Library
- Eli Tilevich and Yannis Smaragdakis. Transparent program transformations in the presence of opaque code. In Proceedings of the International Conference on Generative Programming and Component Engineering, Lecture Notes in Computer Science, pages 89--94, 2006. Google Scholar
Digital Library
- Eli Tilevich, Yannis Smaragdakis, and Marcus Handte. Appletizing: Running legacy Java code remotely from a Web browser. In Proceedings of the IEEE International Conference on Software Maintanance, pages 91--100, 2005. Google Scholar
Digital Library
- YourKit, LLC. The yourkit java profiler. URL http://www.yourkit.com/.Google Scholar
Recommendations
Classifying Java class transformations for pervasive virtualized access
GPCE '09The indirection of object accesses is a common theme for target domains as diverse as transparent distribution, persistence, and program instrumentation. Virtualizing accesses to fields and methods (by redirecting calls through accessor and indirection ...
Evaluating the Java Native Interface JNI: Leveraging Existing Native Code, Libraries and Threads to a Running Java Virtual Machine
This article aims to explore JNI features and to discover fundamental operations of the Java programming language, such as arrays, objects, classes, threads and exception handling, and to illustrate these by using various algorithms and code samples. ...
Pervasive Load-Time Transformation for Transparently Distributed Java
The transformation of large, off-the-shelf Java applications to support complex new functionality essentially requires generation of an entirely new application that retains the execution semantics of the original. We describe such a whole-program ...







Comments