Reflection Componentized

David H. Lorenz, Northeastern University
John Vlissides, IBM T.J. Watson Research Center

Reflection remains a second-class citizen in current programming models, where it's assumed to be impera-tive, and tightly bound to its implementation. Most object-oriented APIs, in contrast, have evolved to allow interfaces to vary independently of their implementations. Object programming models have also given rise to components, which institutionalize late composition and make programming practical through third-party component assembly. This paper describes how reflection can benefit from an analogous evolutionary path. Componentized reflection allows users of programs that use reflection the flexibility of choosing the meta-information source and compare results. Developers of reflective programs, too, benefit from being able to test their programs against different meta-information formats. Componentized reflection can also provide an extensible adaptable bridge to core reflection. Emerging techniques constantly introduce new abstrac-tions, which break the tightly coupling between the actual code structure and structural reflection anyhow, but do so in a way that renders conventional reflection programming unpractical. It is therefore a necessity even more than a luxury for reflection to take this evolutionary path, in order to maintain its traditional pur-pose in programming.

Technical Report NU-CCS-02-09, College of Computer Science, Northeastern University, November 2002.


(Submitted to OOPSLA '02)

@TechReport{Lorenz:2002:RC,
  Title = "Reflection Componentized",
  Author = "David~H. Lorenz and John Vlissides",
  Institution = "College of Computer and Information Science, Northeastern University",
  Address     = "Boston, MA 02115",
  Month       = nov,
  Number      = "{NU-CCS-02-09}",
  Year = 2002,
}

Other reports