ACM Home Page
Please provide us with feedback. Feedback
Transparent proxies for java futures
Full text PdfPdf (352 KB)
Source Conference on Object Oriented Programming Systems Languages and Applications archive
Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications table of contents
Vancouver, BC, Canada
SESSION: Java technologies table of contents
Pages: 206 - 223  
Year of Publication: 2004
ISBN:1-58113-831-9
Also published in ...
Authors
Polyvios Pratikakis  University of Maryland, College Park, MD
Jaime Spacco  University of Maryland, College Park, MD
Michael Hicks  University of Maryland, College Park, MD
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 6,   Downloads (12 Months): 57,   Citation Count: 7
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1028976.1028994
What is a DOI?

ABSTRACT

A <i>proxy</i> object is a surrogate or placeholder that controls access to another target object. Proxies can be used to support distributed programming, lazy or parallel evaluation, access control, and other simple forms of behavioral reflection. However, <i>wrapper proxies</i> (like <i>futures</i> or <i>suspensions</i> for yet-to-be-computed results) can require significant code changes to be used in statically-typed languages, while proxies more generally can inadvertently violate assumptions of transparency, resulting in subtle bugs.

To solve these problems, we have designed and implemented a simple framework for proxy programming that employs a static analysis based on qualifier inference, but with additional novelties. Code for using wrapper proxies is automatically introduced via a classfile-to-classfile transformation, and potential violations of transparency are signaled to the programmer. We have formalized our analysis and proven it sound. Our framework has a variety of applications, including support for asynchronous method calls returning futures. Experimental results demonstrate the benefits of our framework: programmers are relieved of managing and/or checking proxy usage, analysis times are reasonably fast, overheads introduced by added dynamic checks are negligible, and performance improvements can be significant. For example, changing two lines in a simple RMI-based peer-to-peer application and then using our framework resulted in a large performance gain.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen, May 1994. (DIKU report 94/19).
3
 
4
 
5
Gavin M. Bierman, Matthew J. Parkinson, and Andrew M. Pitts. An imperative core calculus for Java and Java with effects. Technical Report 563, University of Cambridge Computer Laboratory, April 2003.
6
 
7
Michael James Compton. SCOOP: An investigation of concurrency in Eiffel. Master's thesis, Department of Computer Science, The Australian National University, December 2000.
8
 
9
Dynamic proxy classes. http://java.sun.com/j2se/1.5.0/docs/guide/reflection/proxy.html. JDK 1.5 documentation.
10
11
 
12
Executor examples. http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/etc/notes/tim-execu%tor-examples.html?rev=1.5.
13
14
15
16
17
 
18
19
 
20
Claude Hussenet. Personal Communication. Describes the use of JSR 166 futures for an enterprise application.
21
 
22
Io: A small programming language. http://www.iolanguage.com/.
23
 
24
JSR 166: Concurrency utilities. http://www.jcp.org/en/jsr/detail?id=166.
 
25
 
26
 
27
Ondrej Lhoták and Laurie Hendren. Scaling Java points-to analysis using SPARK. In Proceedings of the International Conference on Compiler Construction (CC), volume 2622 of Lecture Notes in Computer Science, pages 153--169, Warsaw, Poland, 2003.
28
 
29
 
30
Mandala. http://sourceforge.net/projects/mandala/.
31
 
32
33
 
34
Polyvios Pratikakis, Jaime Spacco, and Michael Hicks. Transparent proxies for Java futures. Technical Report CS-TR-4574, Department of Computer Science, University of Maryland, College Park, March 2004.
 
35
Rajeev R. Raje, Joseph I. William, and Michael Boyles. An asynchronous remote method invocation (ARMI ) mechanism for Java. In Proceedings of the ACM Workshop on Java for Science and Engineering Computation, Las Vegas, Nevada, 1997.
 
36
 
37
Umesh Shankar, Kunal Talwar, Jeffrey S. Foster, and David Wagner. Detecting format string vulnerabilities with type qualifiers. In Proceedings of the 10th Usenix Security Symposium, Washington, D.C., August 2001.
 
38
Aleksander Slominski, Madhusudhan Govindaraju, Dennis Gannon, and Randall Bramley. Design of an XML based interoperable RMI system: SoapRMI C++/Java 1.1. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications, pages 1661--1667, Las Vegas, Nevada, June 2001.
 
39
 
40
Raja Vallée-Rai, Laurie Hendren, Vijay Sundaresan, Patrick Lam, Etienne Gagnon, and Phong Co. Soot--a Java optimization framework. In Proceedings of the IBM Centers for Advanced Studies Conference (CASCON), pages 125--135, 1999.
 
41
Adam Welc, Suresh Jagannathan, and Antony L. Hosking. Transactional monitors for concurrent objects. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP), Oslo, Norway, 2004.


Collaborative Colleagues:
Polyvios Pratikakis: colleagues
Jaime Spacco: colleagues
Michael Hicks: colleagues