On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Strongtalk: typechecking Smalltalk in a production environment
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Featherweight Java: a minimal core calculus for Java and GJ
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Design pattern implementation in Java and aspectJ
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
JAsCo: an aspect-oriented approach tailored for component based software development
Proceedings of the 2nd international conference on Aspect-oriented software development
Proceedings of the 2nd international conference on Aspect-oriented software development
Conquering aspects with Caesar
Proceedings of the 2nd international conference on Aspect-oriented software development
Aspects and polymorphism in AspectJ
Proceedings of the 2nd international conference on Aspect-oriented software development
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Adding wildcards to the Java programming language
Proceedings of the 2004 ACM symposium on Applied computing
AspectJ in Action: Practical Aspect-Oriented Programming
AspectJ in Action: Practical Aspect-Oriented Programming
A semantics for advice and dynamic join points in aspect-oriented programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
A classification system and analysis for aspect-oriented programs
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
abc: an extensible AspectJ compiler
Proceedings of the 4th international conference on Aspect-oriented software development
Aspectual Caml: an aspect-oriented functional language
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Java Generics and Collections
A type-theoretic interpretation of pointcuts and advice
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
Typed parametric polymorphism for aspects
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
MiniMAO1: an imperative core language for studying aspect-oriented reasonings
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
Cross-profiling for Java processors
Software—Practice & Experience
@J: towards rapid development of dynamic analysis tools for the Java Virtual Machine
Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
A theory of distributed aspects
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Mostly modular compilation of crosscutting concerns by contextual predicate dispatch
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Compositional type-checking for delta-oriented programming
Proceedings of the tenth international conference on Aspect-oriented software development
Closure joinpoints: block joinpoints without surprises
Proceedings of the tenth international conference on Aspect-oriented software development
Towards a domain-specific aspect language for dynamic program analysis: position paper
Proceedings of the sixth annual workshop on Domain-specific aspect languages
Supporting covariant return types and generics in type relaxed weaving
Proceedings of the 10th international workshop on Foundations of aspect-oriented languages
Proceedings of the 3rd International Workshop on Context-Oriented Programming
Proceedings of the 13th Workshop on Formal Techniques for Java-Like Programs
A per-type instantiation mechanism for generic aspects
Proceedings of the 3rd international workshop on Variability & Composition
ACM Transactions on Programming Languages and Systems (TOPLAS)
A typed monadic embedding of aspects
Proceedings of the 12th annual international conference on Aspect-oriented software development
A brief tour of join point interfaces
Proceedings of the 12th annual international conference companion on Aspect-oriented software development
Inference rules for generic code migration of aspect-oriented programs
Science of Computer Programming
Join point interfaces for safe and flexible decoupling of aspects
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.01 |
AspectJ was designed as a seamless aspect-oriented extension of the Java programming language. However, unlike Java, AspectJ does not have a safe type system: an accepted binding between a pointcut and an advice can give rise to type errors at runtime. In addition, AspectJ's typing rules severely restrict the definition of certain generic advice behavior. In this paper, we analyze the roots of these type errors, and describe measures to recover type safety for both generic and non-generic pointcut/advice declarations. Pointcuts quantify over heterogeneous sets of join points and are hence typed using type ranges in our approach, while type variables and a dual advice signature allow to express the generic and invasive nature of advices. Using these mechanisms, we can express advice that augments, narrows or replaces base functionality in possibly generic contexts. As a language engineering contribution, we integrate our proposal with the AspectJ language, and we provide a prototype implementation as a plugin for the AspectBench Compiler (abc). On a theoretical level, we present a formal definition of the proposed constructs and typing rules, and develop proofs for their type safety properties.