Efficient Implementation of Design Patterns in Java Programs
Alonso Márquez
Abstract
Open-access reader
Alonso Márquez
Abstract
Open-access reader
Designing and implementing generic software components using design patterns like proxy and facade [Gamma et al. 1994] is commonly advocated in most application areas. Design patterns and genericity are language design techniques created to provide better semantic abstractions boundaries. However, most programming language implementations have give very little support to techniques that remove these abstraction boundaries to the extent necessary to permit efficient execution. We present a general technique for optimization of Java programs that use any sort of data and/or behavior delegation. We define a group of basic program transformations that preserve the program semantics. They provide a foundation for more complex program transformations such as class inlining and class proxying with a broad range of applications in program optimization and semantic extension. We present several real applications including Orthogonal Persistence and automatic optimization of design patterns implemented using these techniques.
A significance statement is not available in the OpenAlex record.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
Designing and implementing generic software components using design patterns like proxy and facade [Gamma et al. 1994] is commonly advocated in most application areas. Design patterns and genericity are language design techniques created to provide better semantic abstractions boundaries. However, most programming language implementations have give very little support to techniques that remove these abstraction boundaries to the extent necessary to permit efficient execution. We present a general technique for optimization of Java programs that use any sort of data and/or behavior delegation. We define a group of basic program transformations that preserve the program semantics. They provide a foundation for more complex program transformations such as class inlining and class proxying with a broad range of applications in program optimization and semantic extension. We present several real applications including Orthogonal Persistence and automatic optimization of design patterns implemented using these techniques.
Key concepts: Computer science, Programming language, Software design pattern, Java, Semantics (computer science), Class (philosophy), Implementation, Theoretical computer science