Evaluating Java runtime reflection for implementing cross-language method invocations

Cross-language method invocations are commonly used for integrating objects residing in different programming language environments. In this experience report, we evaluate the performance and the design impact of alternative implementations of cross-language method invocations for the object-oriented scripting language Frag, implemented and embedded in Java. In particular, we compare reflective integration and generative integration techniques. For that, we present a performance evaluation based on a large set of test cases. In addition, we propose a new method for quantifying and comparing the implementation efforts needed for cross-language method invocations based on cross-language refactorings. We report on the lessons learnt and discuss the consequences of the implementation variants under review.

[1]  Peter Sommerlad,et al.  Cross language refactoring for Eclipse plug-ins , 2008, WRT '08.

[2]  Stéphane Ducasse,et al.  Evaluating Message Passing Control Techniques in Smalltalk , 1999 .

[3]  John R. Rose Bytecodes meet combinators: invokedynamic on the JVM , 2009, VMIL '09.

[4]  Stéphane Ducasse,et al.  Inter-language reflection: A conceptual model and its implementation , 2006, Comput. Lang. Syst. Struct..

[5]  Andrew Lumsdaine,et al.  Runtime synthesis of high-performance code from scripting languages , 2006, OOPSLA '06.

[6]  Oscar Nierstrasz,et al.  Meta-level Language Bridging , 1995 .

[7]  Ian Watson,et al.  Approaches to Reflective Method Invocation , 2008 .

[8]  Martin Bichler,et al.  Design science in information systems research , 2006, Wirtschaftsinf..

[9]  Uwe Zdun A DSL toolkit for deferring architectural decisions in DSL-based software design , 2010, Inf. Softw. Technol..

[10]  Wolfgang De Meuter AGORA: The Story of the Simplest MOP in the World , 1998 .

[11]  R. L. Drechsler,et al.  The Yoix® scripting language: a different way of writing Java™ applications , 2007 .

[12]  Alan R. Hevner,et al.  Design Science in Information Systems Research , 2004, MIS Q..

[13]  Ralph E. Johnson,et al.  Wrappers to the Rescue , 1998, ECOOP.

[14]  Davide Ancona,et al.  RPython: a step towards reconciling dynamically and statically typed OO languages , 2007, DLS '07.

[15]  Torbjörn Ekman,et al.  Flexible Language Interoperability , 2007, J. Object Technol..

[16]  Steve Vinoski A Time for Reflection , 2005, IEEE Internet Comput..

[17]  Walter Cazzola SmartReflection: Efficient Introspection in Java , 2004, J. Object Technol..

[18]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[19]  Amer Diwan,et al.  The DaCapo benchmarks: java benchmarking development and analysis , 2006, OOPSLA '06.

[20]  Uwe Zdun,et al.  Using split objects for maintenance and reengineering tasks , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

[21]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[22]  Thomas M. Breuel,et al.  Implementing dynamic language features in Java using dynamic code generation , 2001, Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.