[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2577080.2577081acmotherconferencesArticle/Chapter ViewAbstractPublication PagesmodularityConference Proceedingsconference-collections
research-article

Delegation proxies: the power of propagation

Published: 22 April 2014 Publication History

Abstract

Scoping behavioral variations to dynamic extents is useful to support non-functional requirements that otherwise result in cross-cutting code. Unfortunately, such variations are difficult to achieve with traditional reflection or aspects. We show that with a modification of dynamic proxies, called delegation proxies, it becomes possible to reflectively implement variations that propagate to all objects accessed in the dynamic extent of a message send. We demonstrate our approach with examples of variations scoped to dynamic extents that help simplify code related to safety, reliability, and monitoring.

References

[1]
S. Apel, T. Leich, and G. Saake. Aspectual feature modules. IEEE Trans. Softw. Eng., 34(2):162--180, Mar. 2008.
[2]
I. Aracic, V. Gasiunas, M. Mezini, and K. Ostermann. An overview of CaesarJ. Transactions on Aspect-Oriented Software Development, 3880:135 -- 173, 2006.
[3]
J.-B. Arnaud. Towards First Class References as a Security Infrastructure in Dynamically-Typed Languages. PhD thesis, Université des Sciences et Technologies de Lille, 2013.
[4]
J.-B. Arnaud, M. Denker, S. Ducasse, D. Pollet, A. Bergel, and M. Suen. Read-only execution for dynamic languages. In Proceedings of the 48th International Conference on Objects, Models, Components, Patterns (TOOLS EUROPE'10). LNCS Springer Verlag, July 2010.
[5]
T. H. Austin, T. Disney, and C. Flanagan. Virtual values for language extension. In Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, volume 46 of OOPSLA '11, pages 921--938, New York, NY, USA, Oct. 2011. ACM.
[6]
A. Bergel, S. Ducasse, O. Nierstrasz, and R. Wuyts. Stateful traits and their formalization. Journal of Computer Languages, Systems and Structures, 34(2--3):83--108, 2008.
[7]
L. Bettini, S. Capecchi, and F. Damiani. On flexible dynamic trait replacement for java-like languages. Science of Computer Programming, 2011.
[8]
L. Bettini, S. Capecchi, and E. Giachino. Featherweight wrap java. In Proc. of SAC (The 22nd Annual ACM Symposium on Applied Computing), Special Track on Object-Oriented Programming Languages and Systems (OOPS), pages 1094--1100. ACM Press, 2007.
[9]
G. Bracha and D. Ungar. Mirrors: design principles for meta-level facilities of object-oriented programming languages. In Proceedings of the International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'04), ACM SIGPLAN Notices, pages 331--344, New York, NY, USA, 2004. ACM Press.
[10]
M. Büchi and W. Weck. Generic wrappers. In E. Bertino, editor, ECOOP 2000 - Object-Oriented Programming, 14th European Conference, Sophia Antipolis and Cannes, France, June 12--16, 2000, Proceedings, volume 1850 of Lecture Notes in Computer Science, pages 201--225. Springer, 2000.
[11]
S. Chiba, G. Kiczales, and J. Lamping. Avoiding confusion in metacircularity: The meta-helix. In K. Futatsugi and S. Matsuoka, editors, Proceedings of ISOTAS '96, volume 1049 of Lecture Notes in Computer Science, pages 157--172. Springer, 1996.
[12]
T. V. Cutsem and M. S. Miller. On the design of the ECMAScript reflection api. Technical report, Vrije Universiteit Brussel, 2012.
[13]
T. V. Cutsem and M. S. Miller. Trustworthy proxies: Virtualizing objects with invariants. In ECOOP 2013, 2013.
[14]
L. G. DeMichiel and R. P. Gabriel. The Common Lisp object system: An overview. In J. Bézivin, J.-M. Hullot, P. Cointe, and H. Lieberman, editors, Proceedings ECOOP '87, volume 276 of LNCS, pages 151--170, Paris, France, June 1987. Springer-Verlag.
[15]
M. Denker, M. Suen, and S. Ducasse. The meta in meta-object architectures. In Proceedings of TOOLS EUROPE 2008, volume 11 of LNBIP, pages 218--237. Springer-Verlag, 2008.
[16]
P. Deutsch. Building control structures in smalltalk-80. Byte, 6(8):322--346, aug 1981.
[17]
S. Ducasse. Evaluating message passing control techniques in Smalltalk. Journal of Object-Oriented Programming (JOOP), 12(6):39--44, June 1999.
[18]
P. Eugster. Uniform proxies for java. In Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, OOPSLA '06, pages 139--152, New York, NY, USA, 2006. ACM.
[19]
M. Flatt, S. Krishnamurthi, and M. Felleisen. Classes and mixins. In Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 171--183, New York, NY, USA, 1998. ACM Press.
[20]
Y. Futamura. Partial evaluation of computation process: An approach to a compiler-compiler. Higher Order Symbol. Comput., 12(4):381--391, 1999.
[21]
W. Harrison and H. Ossher. Subject-oriented programming (a critique of pure objects). In Proceedings OOPSLA '93, ACM SIGPLAN Notices, volume 28, pages 411--428, Oct. 1993.
[22]
R. Hirschfeld, P. Costanza, and O. Nierstrasz. Context-oriented programming. Journal of Object Technology, 7(3), Mar. 2008.
[23]
G. Kiczales, J. des Rivières, and D. G. Bobrow. The Art of the Metaobject Protocol. MIT Press, 1991.
[24]
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In M. Aksit and S. Matsuoka, editors, ECOOP'97: Proceedings of the 11th European Conference on Object-Oriented Programming, volume 1241 of LNCS, pages 220--242, Jyvaskyla, Finland, June 1997. Springer-Verlag.
[25]
G. Kniesel. Type-safe delegation for run-time component adaptation. In R. Guerraoui, editor, Proceedings ECOOP '99, volume 1628 of LNCS, pages 351--366, Lisbon, Portugal, June 1999. Springer-Verlag.
[26]
B. B. Kristensen. Object-oriented modeling with roles. In J. Murphy and B. Stone, editors, Proceedings of the 2nd International Conference on Object-Oriented Information Systems, pages 57--71, London, UK, 1995. Springer-Verlag.
[27]
H. Lieberman. Using prototypical objects to implement shared behavior in object oriented systems. In Proceedings OOPSLA '86, ACM SIGPLAN Notices, volume 21, pages 214--223, Nov. 1986.
[28]
M. Martinez Peck, N. Bouraqadi, M. Denker, S. Ducasse, and L. Fabresse. Efficient proxies in smalltalk. In Proceedings of the International Workshop on Smalltalk Technologies, IWST '11, pages 8:1--8:16, New York, NY, USA, 2011. ACM.
[29]
H. Masuhara, G. Kiczales, and C. Dutchyn. A compilation and optimization model for aspect-oriented programs. In Proceedings of the 12th international conference on Compiler construction, CC'03, pages 46--60, Berlin, Heidelberg, 2003. Springer-Verlag.
[30]
Microsoft. Microsoft .net dynamic language runtime.
[31]
Oracle. Jsr 292: Supporting dynamically typed languages on the java platform.
[32]
K. Ostermann. Dynamically composable collaborations with delegation layers. In Proceedings of the 16th European Conference on Object-Oriented Programming, ECOOP '02, pages 89--110, London, UK, 2002. Springer-Verlag.
[33]
F. Pluquet, S. Langerman, and R. Wuyts. Executing code in the past: efficient in-memory object graph versioning. In Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications, OOPSLA '09, pages 391--408, New York, NY, USA, 2009. ACM.
[34]
J. Ressia, T. Gîrba, O. Nierstrasz, F. Perin, and L. Renggli. Talents: an environment for dynamically composing units of reuse. Software: Practice and Experience, 2012.
[35]
N. Schärli, S. Ducasse, O. Nierstrasz, and A. P. Black. Traits: Composable units of behavior. In Proceedings of European Conference on Object-Oriented Programming (ECOOP'03), volume 2743 of LNCS, pages 248--274, Berlin Heidelberg, July 2003. Springer Verlag.
[36]
R. B. Smith and D. Ungar. A simple and unifying approach to subjective objects. TAPOS special issue on Subjectivity in Object-Oriented Systems, 2(3):161--178, Dec. 1996.
[37]
T. S. Strickland, S. Tobin-Hochstadt, R. B. Findler, and M. Flatt. Chaperones and impersonators: Run-time support for reasonable interposition. In OOPSLA '12: Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, Oct. 2012. To appear.
[38]
É. Tanter. Expressive scoping of dynamically-deployed aspects. In Proceedings of the 7th ACM International Conference on Aspect-Oriented Software Development (AOSD 2008), pages 168--179, Brussels, Belgium, Apr. 2008. ACM Press.
[39]
É. Tanter. Beyond static and dynamic scope. In Proceedings of the 5th symposium on Dynamic languages, DLS '09, pages 3--14, New York, NY, USA, 2009. ACM.
[40]
É. Tanter. Execution levels for aspect-oriented programming. In Proceedings of AOSD'10), pages 37--48, Rennes and Saint Malo, France, Mar. 2010. ACM Press. Best Paper Award.
[41]
É. Tanter, J. Noyé, D. Caromel, and P. Cointe. Partial behavioral reflection: Spatial and temporal selection of reification. In Proceedings of OOPSLA '03, ACM SIGPLAN Notices, pages 27--46, nov 2003.
[42]
T. Van Cutsem and M. S. Miller. Proxies: design principles for robust object-oriented intercession apis. In Proceedings of the 6th symposium on Dynamic languages, DLS '10, pages 59--72, New York, NY, USA, 2010. ACM.
[43]
J. Viega, B. Tutt, and R. Behrends. Automated delegation is a viable alternative to multiple inheritance in class based languages. Technical report, University of Virginia, Charlottesville, VA, USA, 1998.
[44]
M. von Löwis, M. Denker, and O. Nierstrasz. Context-oriented programming: Beyond layers. In Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007), pages 143--156. ACM Digital Library, 2007.

Cited By

View all
  • (2021)Lazy Clone - A Pattern to Improve Performance and Maintainability of Object CloningProceedings of the 28th Conference on Pattern Languages of Programs10.5555/3712039.3712049(1-9)Online publication date: 5-Oct-2021
  • (2019)Fully Reflective Execution Environments: Virtual Machines for More Flexible SoftwareIEEE Transactions on Software Engineering10.1109/TSE.2018.281271545:9(858-876)Online publication date: 1-Sep-2019
  • (2016)Building efficient and highly run-time adaptable virtual machinesACM SIGPLAN Notices10.1145/3093334.298923452:2(60-71)Online publication date: 1-Nov-2016
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Other conferences
MODULARITY '14: Proceedings of the 13th international conference on Modularity
April 2014
264 pages
ISBN:9781450327725
DOI:10.1145/2577080
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

  • AOSA: Aspect-Oriented Software Association

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 22 April 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. constructs and features
  2. dynamic extent
  3. programming languages
  4. proxy
  5. reflection

Qualifiers

  • Research-article

Funding Sources

Conference

MODULARITY '14
Sponsor:
  • AOSA

Acceptance Rates

MODULARITY '14 Paper Acceptance Rate 21 of 60 submissions, 35%;
Overall Acceptance Rate 41 of 139 submissions, 29%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)1
Reflects downloads up to 15 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2021)Lazy Clone - A Pattern to Improve Performance and Maintainability of Object CloningProceedings of the 28th Conference on Pattern Languages of Programs10.5555/3712039.3712049(1-9)Online publication date: 5-Oct-2021
  • (2019)Fully Reflective Execution Environments: Virtual Machines for More Flexible SoftwareIEEE Transactions on Software Engineering10.1109/TSE.2018.281271545:9(858-876)Online publication date: 1-Sep-2019
  • (2016)Building efficient and highly run-time adaptable virtual machinesACM SIGPLAN Notices10.1145/3093334.298923452:2(60-71)Online publication date: 1-Nov-2016
  • (2016)Building efficient and highly run-time adaptable virtual machinesProceedings of the 12th Symposium on Dynamic Languages10.1145/2989225.2989234(60-71)Online publication date: 1-Nov-2016
  • (2015)Towards fully reflective environments2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!)10.1145/2814228.2814241(240-253)Online publication date: 21-Oct-2015
  • (2015)Improving Performance and Maintainability of Object Cloning with Lazy Clones: An Empirical Evaluation2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1109/ESEM.2015.7321202(1-8)Online publication date: Oct-2015
  • (2015)HandlesScience of Computer Programming10.1016/j.scico.2014.07.01198:P3(318-338)Online publication date: 1-Feb-2015
  • (2014)Object versioning to support recovery needsACM SIGPLAN Notices10.1145/2775052.266109350:2(113-124)Online publication date: 14-Oct-2014
  • (2014)Object versioning to support recovery needsProceedings of the 10th ACM Symposium on Dynamic languages10.1145/2661088.2661093(113-124)Online publication date: 20-Oct-2014

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media