Compile-time reflection and metaprogramming for Java

  • Authors:
  • Weiyu Miao;Jeremy Siek

  • Affiliations:
  • University of Colorado at Boulder, Boulder, CO, USA;University of Colorado at Boulder, Boulder, CO, USA

  • Venue:
  • Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
  • Year:
  • 2014

Quantified Score

Hi-index 0.00

Visualization

Abstract

Java reflection enables us to write reusable programs that are independent of certain classes. However, when runtime performance is a big concern, we propose to use compile-time reflection for writing metaprograms that generate non-reflective class/type specific code, which has lower runtime cost. We proposed both compile-time reflection and metaprogramming for Java, and extended our previous work on pattern-based traits. Pattern-based traits integrate pattern-based reflection with flexible composition of traits. They are capable of pattern-matching over class members and generating expressive code. We add and formalize pattern-based reflection at the statement-level, which enables a meta program to generate statements. We add reified generics for pattern-based traits, which enables a pattern to iterate over any class when traits are instantiated. We implemented an ORM tool (called PtjORM) using pattern-based traits. PtjORM uses compile-time reflection and our benchmark tests show that it has competitive runtime performance compared to the mainstream Java ORM tools.