Transparent proxies for java futures

TitleTransparent proxies for java futures
Publication TypeConference Papers
Year of Publication2004
AuthorsPratikakis P, Spacco J, Hicks MW
Conference NameProceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Date Published2004///
PublisherACM
Conference LocationNew York, NY, USA
ISBN Number1-58113-831-8
Keywordsfuture, java, proxy, Type inference, type qualifier
Abstract

A proxy 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, wrapper proxies (like futures or suspensions> 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.

URLhttp://doi.acm.org/10.1145/1028976.1028994
DOI10.1145/1028976.1028994