TY - CONF T1 - Transparent proxies for java futures T2 - Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications Y1 - 2004 A1 - Pratikakis,Polyvios A1 - Spacco,Jaime A1 - Hicks, Michael W. KW - future KW - java KW - proxy KW - Type inference KW - type qualifier AB - 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. JA - Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications T3 - OOPSLA '04 PB - ACM CY - New York, NY, USA SN - 1-58113-831-8 UR - http://doi.acm.org/10.1145/1028976.1028994 M3 - 10.1145/1028976.1028994 ER -