DMCA
Transparent proxies for java futures (2004)
Cached
Download Links
Venue: | In Proceedings of the nineteenth annual |
Citations: | 43 - 3 self |
Citations
6816 |
Design Patterns: Elements of Reusable Object-Oriented
- Gamma, Helm, et al.
- 1995
(Show Context)
Citation Context ...der 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 =-=[19]-=-. 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 ... |
1369 | An overview of aspectj
- Kiczales, Hilesdale, et al.
- 2001
(Show Context)
Citation Context ... various method invocations to be or not be asynchronous. Therefore, the proper synchronization code could be generated from the specification as changes are made. Work in aspect-oriented programming =-=[33, 29, 8]-=- and language-level transactions [21] aim to realize this goal. By not making any assumptions about synchronization, we can readily incorporate good results from these projects. 5 Evaluation We evalua... |
650 | Featherweight Java: a minimal core calculus for Java and GJ
- Igarashi, Pierce, et al.
(Show Context)
Citation Context ...ng as one of qualifier inference, extending existing algorithms to support dynamic coercions and a form of flow-sensitivity. We have formalized our analysis as an extension of Featherweight Java (FJ) =-=[25]-=-, and proven it sound (Section 3). We are the first to consider qualifier inference in an object-oriented setting, and our approach enables new or improved applications of qualifier systems (Section 3... |
619 | Program Analysis and Specialization for the C Programming Language
- Andersen
- 1994
(Show Context)
Citation Context ...lows us to solve them in O(n) time [38]. The set-type constraints in S are subset constraints, as occur Andersenstyle points-to analysis. Given n such constraints, these can be solved in O(n 3 ) time =-=[2].-=- 13sNote that our rules are set up to favor a least solution to the qualifier constraints, which effectively delays a coercion until absolutely necessary. A solution σ to constraints in S is a mappin... |
479 | The implementation of the cilk-5 multithreaded language
- Frigo, Leiserson, et al.
- 1998
(Show Context)
Citation Context ... purely-functional) style, which means that added concurrency will not affect the program’s safety. We contemplated approaches to inserting synchronization automatically, as is done in some past wor=-=k [30, 7, 26, 18]-=-, but rejected this idea because of its potentially negative impact on performance. We discuss this issue more in Section 6. Instead, we feel a more promising approach is to have programmers specify s... |
477 | Language support for lightweight transactions
- Harris, Fraser
- 2003
(Show Context)
Citation Context ...asynchronous. Therefore, the proper synchronization code could be generated from the specification as changes are made. Work in aspect-oriented programming [33, 29, 8] and language-level transactions =-=[21]-=- aim to realize this goal. By not making any assumptions about synchronization, we can readily incorporate good results from these projects. 5 Evaluation We evaluate our framework in terms of (1) anal... |
412 | Context-sensitive interprocedural points-to analysis in the presence of function pointers
- Emami, Ghiya, et al.
- 1994
(Show Context)
Citation Context ...een used in a variety of applications [42, 4]. 6.2 Static Analysis Our analysis draws upon techniques developed in other static analyses, including constraintbased analysis [1] and points-to analysis =-=[10]-=-. A points-to analysis tracks how aliases to a particular allocated data object are propagated throughout the program via assignments, dereferences, method calls, and so on. Our analysis uses the same... |
409 | Flow-sensitive type qualifiers
- Foster, Terauchi, et al.
- 2002
(Show Context)
Citation Context ...ransparency, resulting in subtle bugs. To solve these problems, we have designed and implemented a simple framework for proxy programming, which employs a static analysis based on qualifier inference =-=[16]-=-, 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 pr... |
371 | Making the future safe for the past: Adding genericity to the Java programming language
- Bracha, Odersky, et al.
- 1998
(Show Context)
Citation Context ...erence system is monomorphic: it is field-insensitive and context-insensitive. Context- and field-sensitivity could be supported by adding class and method parameterization, as with Generic Java (GJ) =-=[6]. We are planning to do this as part of future -=-work. 3.4 Constraint Solving S ∪ {Q ϕ C ≤ Q ′ ϕ ′D } ⇒ S ∪ {Q ≤ Q ′ } ∪ {ϕ ⊆ ϕ ′ }∪ {ϕ ⊆ subtypes(C)} ∪ {ϕ ′ ⊆ subtypes(D)}∪ {C ≤ D} S ∪ {α ⊆ (subtypes(C... |
229 | Detecting format string vulnerabilities with type qualifiers
- Shankar, Talwar, et al.
- 2001
(Show Context)
Citation Context ...mming, these advances apply to qualifier systems in general. As described in Section 3.8, they enable a number of new or improved applications, including tracking security-sensitive data in a program =-=[35]-=-, and supporting stack allocation and non-null types [13]. 1.1 Contributions This paper describes the design, theory, implementation, and evaluation of a framework for proxy programming. We make the f... |
217 |
Soot - a Java optimization framework
- Vallee-Rai, Hendren, et al.
- 1999
(Show Context)
Citation Context ...cribed our proxy framework formally, we now describe our implementation of asynchronous method invocations in Java. 18s4.1 Framework Implementation Our analysis is implemented as an extension to Soot =-=[38]-=- (version 2.1.0), a framework for analyzing and transforming Java classfiles. Soot provides a framework for implementing flow-insensitive points-to analyses called SPARK [27]. We extended SPARK to tra... |
171 | Scaling Java Points-to Analysis Using Spark
- Lhoták, Hendren
- 2003
(Show Context)
Citation Context ...plement asynchronous method invocations in Java. 4.1 Framework Implementation Our analysis is implemented as a bytecode-to-bytecode transformation. The static analysis is based on the Spark framework =-=[31]-=- for implementing points-to analysis for Java, both for the task of tracking proxies and for generating the set types based on points-to information. Spark uses Soot [44] to transform class files into... |
159 | Active Object, an Object Behavioral Pattern for Concurrent Programming
- Lavender, Schmidt
- 1996
(Show Context)
Citation Context ...ch create new threads for each invocation, and a ThreadPerObjectExecutor, which keeps a map of objects to executors, delegating an invocation to its object’s personal executor, as with active object=-=s [30]-=-. We implement lazy method invocation by using a LazyExecutor that simply stores the captured invocation in the Wrapper, and then implements get (called when the wrapper is claimed), to perform the in... |
157 |
Promises: linguistic support for efficient asynchronous procedure calls in distributed systems
- Liskov, Shrira
- 1988
(Show Context)
Citation Context ...es in Java with the same kind of transparency afforded by MultiLisp. To add futures, we would provide asynchronous method calls to return a future for a non-void result. Existing proposals to do this =-=[28, 24, 33]-=- fall short of our goal because they make futures manifest to the programmer. For example, Java 1.5’s util.concurrent library [24] defines a future with the following Java interface: public interface ... |
153 |
analysis -- haven't we solved this problem yet
- Pointer
- 2001
(Show Context)
Citation Context ...t their approach allows heap locations, and not just variables, to be treated flow-sensitively. This adds expressive power but significant complication. Most work on points-to analysis has been for C =-=[23]. -=-For Java, most points-to analyses build on Andersen’s analysis for C [2], which is flow-insensitive and context-insensitive [39, 31]. Recent work in points-to analysis has explored efficient context... |
136 | Ultra-fast aliasing analysis using CLA: A million lines of C code in a second
- Heintze, Tardieu
- 2001
(Show Context)
Citation Context ...r borrowing the framework of Spark [31]), but instead tracks how proxies flow throughout the program. This is similar Foster et al.’s qualifier inference [16], and propagation of changed types in CL=-=A [22]-=-. Indeed, we frame our analysis as a qualifier inference problem, and extend qualifier inference with support for coercions that implement checks at runtime, e.g., to claim a future. These coercions a... |
130 | Declaring and checking non-null types in an object-oriented language
- Fähndrich, Leino
- 2003
(Show Context)
Citation Context ...al. As described in Section 3.8, they enable a number of new or improved applications, including tracking security-sensitive data in a program [35], and supporting stack allocation and non-null types =-=[13]-=-. 1.1 Contributions This paper describes the design, theory, implementation, and evaluation of a framework for proxy programming. We make the following contributions: • We formalize the problem of tra... |
95 | Scalable context-sensitive flow analysis using instantiation constraints
- Fähndrich, Rehof, et al.
- 2000
(Show Context)
Citation Context ...uild on Andersen’s analysis for C [2], which is flow-insensitive and context-insensitive [39, 31]. Recent work in points-to analysis has explored efficient context-sensitive versions of this analysi=-=s [14, 35]-=-, as well techniques for improving efficiency overall, such as by using on-demand constraint resolution rather than solving all the constraints in advance [22, 14, 20]. Allowing the analysis to be inc... |
89 | Introduction to Set Constraint-Based Program Analysis
- Aiken
- 1999
(Show Context)
Citation Context .../archives/000098.html. 28sbeen used in a variety of applications [42, 4]. 6.2 Static Analysis Our analysis draws upon techniques developed in other static analyses, including constraintbased analysis =-=[1]-=- and points-to analysis [10]. A points-to analysis tracks how aliases to a particular allocated data object are propagated throughout the program via assignments, dereferences, method calls, and so on... |
88 | Abstract models of memory management - Morrisett, Felleisen, et al. - 1995 |
84 | Partial behavioral reflection: Spatial and temporal selection of reification
- Tanter, Noyé, et al.
- 2003
(Show Context)
Citation Context ...8] mentioned in the introduction, is a type parameterized by the type of object it will ultimately compute. We found a number of applications of futures to statically-typed, object-oriented languages =-=[34, 28, 24, 37, 11]-=-. Halstead and others developed lazy task creation to dynamically adapt future-annotated programs to the runtime architecture and workload. Rather than create a new thread, each future expression is o... |
78 | Transactional monitors for concurrent objects
- Welc, Jagannathan, et al.
- 2004
(Show Context)
Citation Context ...asynchronous. Therefore, the proper synchronization code could be generated from the specification as changes are made. Work in aspect-oriented programming [29, 25, 8] and language-level transactions =-=[39, 19]-=- aim to realize this goal. By not making any assumptions about synchronization, we can readily incorporate good results from these projects. 5 Evaluation We evaluate our framework in terms of (1) prog... |
73 | MJ: An imperative core calculus for Java and Java with effects
- Bierman, Bierman, et al.
- 2003
(Show Context)
Citation Context ...vely. It is because we are flow-sensitive only for local variables that we opted not to model field and variable updates in the FJQ. While adding updates would be straightforward (it is modeled in MJ =-=[5]-=- and existing qualifier systems [16, 17], for example), it would not change the character of our approach, adding only unnecessary complication. 3.7 Other Applications While the formal presentation of... |
69 |
MultiLisp: A language for concurrent symbolic computation
- Jr
- 1985
(Show Context)
Citation Context ...esulted in a large performance gain. 1s1 Introduction A proxy object is a surrogate or placeholder that controls access to another object. One example of a proxy is a future, popularized in MultiLisp =-=[27]-=-. In MultiLisp, the syntax (future e) designates that expression e should be evaluated concurrently. Since the result is not immediately available, the current thread is given a placeholder for it, ca... |
61 | Tractable constraints in finite semilattices
- Rehof, Mogenson
- 1999
(Show Context)
Citation Context ...cular, the qualifier constraints in F form an atomic subtyping constraint system. Given n such constraints, the fact that proxy and nonproxy form a finite lattice allows us to solve them in O(n) time =-=[34]-=-. The set-type constraints in F are subset constraints, as occur in Andersen-style points-to analysis. Given n such constraints, these can be solved in at worst O(n 3 ) time [2], though in practice it... |
58 | The semantics of future and its use in program optimization
- Flanagan, Felleisen
- 1995
(Show Context)
Citation Context ...ansparent to the program. MultiLisp’s garbage collector safely replaced futures with their actual values once available; our flow-sensitive analysis approximates this behavior. Flanagan and Felleise=-=n [15]-=- developed a whole-program static analysis for reducing the number of touches required; our analysis conversely adds needed touches based on the possibly flow of futures. Liskov and Shrira developed a... |
56 | Client-driven pointer analysis
- Guyer, Lin
- 2003
(Show Context)
Citation Context ...-sensitive versions of this analysis [14, 35], as well techniques for improving efficiency overall, such as by using on-demand constraint resolution rather than solving all the constraints in advance =-=[22, 14, 20]-=-. Allowing the analysis to be incremental, so that only changed classes are considered (and any ones on which they depend), can also improve analysis times [22, 40]. We intend to explore how these tec... |
42 | Invariant-based Specification, Synthesis, and Verification of Synchronization
- Deng, Dwyer, et al.
- 2002
(Show Context)
Citation Context ... various method invocations to be or not be asynchronous. Therefore, the proper synchronization code could be generated from the specification as changes are made. Work in aspect-oriented programming =-=[33, 29, 8]-=- and language-level transactions [21] aim to realize this goal. By not making any assumptions about synchronization, we can readily incorporate good results from these projects. 5 Evaluation We evalua... |
41 | An asynchronous remote method invocation (ARMI) mechanism for Java
- Raje, William, et al.
- 1997
(Show Context)
Citation Context ...es in Java with the same kind of transparency afforded by MultiLisp. To add futures, we would provide asynchronous method calls to return a future for a non-void result. Existing proposals to do this =-=[28, 24, 33]-=- fall short of our goal because they make futures manifest to the programmer. For example, Java 1.5’s util.concurrent library [24] defines a future with the following Java interface: public interface ... |
40 | Abstracting process-to-function relations in concurrent object-oriented applications
- Lopes, Lieberherr
- 1994
(Show Context)
Citation Context ... various method invocations to be or not be asynchronous. Therefore, the proper synchronization code could be generated from the specification as changes are made. Work in aspect-oriented programming =-=[29, 25, 8]-=- and language-level transactions [39, 19] aim to realize this goal. By not making any assumptions about synchronization, we can readily incorporate good results from these projects. 5 Evaluation We ev... |
34 |
Cédric Fournet. Modern concurrency abstractions for C
- Benton, Cardelli
- 2003
(Show Context)
Citation Context ...out potentially unnatural program restructurings.In our approach, concurrency is handled per-method by arbitrary Executor objects, but synchronization must be handled by the programmer. Polyphonic C# =-=[3]-=- adds concurrency abstractions to C# based on the join calculus. Method declarations annotated as async are always invoked asynchronously. These methods must not return results, so there is no need fo... |
28 |
Design of an XML based interoperable RMI system : SoapRMI C++/Java 1.1
- Slominski, Govindaraju, et al.
- 2001
(Show Context)
Citation Context ...coercion implies a possible transparency violation, which is signaled by the analysis. We ran our checker on two examples: an XML-based implementation of SOAP over RMI that uses dynamic proxy classes =-=[36]-=-, and the Soot bytecode analysis framework [38] (version 2.0.1). 4 In the former case, the analysis tracks all proxies created with Proxy.newProxyInstance. In the latter, we selected three different m... |
25 | Workflow enactment with continuation and future objects
- Manolescu
- 2002
(Show Context)
Citation Context ...mise is a type parameterized by the type of object it will ultimately compute, like a Java 1.5 Future [24]. We found a number of applications of futures to statically-typed, object-oriented languages =-=[31, 24, 20, 33, 11]-=-. Mandala [30] is another framework that provides asynchronous method invocation and futures for Java. Asynchronous calls are implemented with reflection, using dynamic proxy classes, which is more mo... |
14 | SCOOP: An investigation of concurrency in Eiffel
- Compton
- 2000
(Show Context)
Citation Context ... purely-functional) style, which means that added concurrency will not affect the program’s safety. We contemplated approaches to inserting synchronization automatically, as is done in some past wor=-=k [30, 7, 26, 18]-=-, but rejected this idea because of its potentially negative impact on performance. We discuss this issue more in Section 6. Instead, we feel a more promising approach is to have programmers specify s... |
8 |
Optimizing remote method invocation in Java
- Sysala, Janecek
- 2002
(Show Context)
Citation Context ... the cost of a network round-trip time for each invocation. Indeed, asynchronous RPC was the initial motivation for Liskov and Shrira’s promises [28], and recent work has considered the idea for Java =-=[33, 37]-=-. 25sinterface NonBlockingService { public Future<Response> serve (Request req); } class NBSAdapter implements NonBlockingService { public NBSAdapter (BlockingService svc) { this.blockingService = svc... |
5 | A dynamic proxy based architecture to support distributed Java objects in a mobile environment
- Biegel, Cahill, et al.
- 2002
(Show Context)
Citation Context ...a’s dynamic proxy classes [9] permit the simple construction of interface proxies, and have 4 See, for example http://blog.monstuff.com/archives/000098.html. 28sbeen used in a variety of application=-=s [42, 4]-=-. 6.2 Static Analysis Our analysis draws upon techniques developed in other static analyses, including constraintbased analysis [1] and points-to analysis [10]. A points-to analysis tracks how aliases... |
3 |
Cdric Fournet. Modern concurrency abstractions for C
- Benton, Cardelli
- 2002
(Show Context)
Citation Context ...ing this restriction would be too onerous. Indeed, we allow programmers to indicate which thread manager they wish to use when executing a method asynchronously for exactly this reason. Polyphonic C# =-=[3]-=- adds concurrency abstractions to C# based on the join calculus. Method declarations annotated as async are always invoked asynchronously. These methods never return results, hence there is no need fo... |
3 |
Personal Communication. Describes the use of JSR 166 futures for an enterprise application
- Hussenet
(Show Context)
Citation Context ...8] mentioned in the introduction, is a type parameterized by the type of object it will ultimately compute. We found a number of applications of futures to statically-typed, object-oriented languages =-=[34, 28, 24, 37, 11]-=-. Halstead and others developed lazy task creation to dynamically adapt future-annotated programs to the runtime architecture and workload. Rather than create a new thread, each future expression is o... |
1 |
Declaring and checking non-null types in an object-oriented language
- F&228, hndrich, et al.
- 2003
(Show Context)
Citation Context ...fier systems in general. As described in Section 3.7, they enable a number of new or improved applications, including tracking security-sensitive data in a program [41], and supporting non-null types =-=[13]. -=-1.1 Contributions This paper describes the design, theory, implementation, and evaluation of a framework for proxy programming. We make the following contributions: • We formalize the problem of tra... |