Reusing non-functional concerns across languages

Emerging languages are often source-to-source compiled to mainstream ones, which offer standardized, fine-tuned implementations of non-functional concerns (NFCs)-including persistence, security, transactions, and testing. Because these NFCs are specified through metadata such as XML configuration files, compiling an emerging language to a mainstream one does not include NFC implementations. Unable to access the mainstream language's NFC implementations, emerging language programmers waste development effort reimplementing NFCs. In this paper, we present a novel approach to reusing NFC implementations across languages by automatically translating metadata. To add an NFC to an emerging language program, the programmer declares metadata, which is then translated to reuse the specified NFC implementation in the source-to-source compiled mainstream target language program. By automatically translating metadata, our approach eliminates the need to reimplement NFCs in the emerging language. As a validation, we add unit testing and transparent persistence to X10 by reusing implementations of these NFCs in Java and C++, the X10 backend compilation targets. The reused persistence NFC is efficient and scalable, making it possible to checkpoint and migrate processes, as demonstrated through experiments with third-party X10 programs. These results indicate that our approach can effectively reuse NFC implementations across languages, thus saving development effort.

[1]  Koushik Sen,et al.  DART: directed automated random testing , 2005, PLDI '05.

[2]  Katharina Morik,et al.  The MiningMart Approach to Knowledge Discovery in Databases , 2004 .

[3]  Eric Childress,et al.  Two paths to interoperable metadata , 2003 .

[4]  Eero Hyvönen,et al.  An Event-Based Approach for Semantic Metadata Interoperability , 2007, ISWC/ASWC.

[5]  Paul Hamill Unit Test Frameworks , 2004 .

[6]  Mike Keith,et al.  Object-Relational Mapping , 2013 .

[7]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[8]  M S Waterman,et al.  Identification of common molecular subsequences. , 1981, Journal of molecular biology.

[9]  Paolo Papotti,et al.  Data exchange with data-metadata translations , 2008, Proc. VLDB Endow..

[10]  Jörg Kienzle,et al.  AOP: Does It Make Sense? The Case of Concurrency and Failures , 2002, ECOOP.

[11]  Eero Hyvönen,et al.  Proceedings of the 6th International Semantic Web Conference (ISWC 2007), Busan, Korea, Springer-Verlag, November 11-15, 2007 , 2007 .

[12]  Yannis Smaragdakis,et al.  JCrasher: an automatic robustness tester for Java , 2004, Softw. Pract. Exp..

[13]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[14]  Lexing Ying,et al.  A massively parallel adaptive fast-multipole method on heterogeneous architectures , 2009, SC.

[15]  Zora Konjovic,et al.  Automatic code generation for database-oriented web applications , 2002, PPPJ/IRE.

[16]  David Grove,et al.  X10 as a Parallel Language for Scientific Computation: Practice and Experience , 2011, 2011 IEEE International Parallel & Distributed Processing Symposium.

[17]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[18]  Eli Tilevich,et al.  Reusable enterprise metadata with pattern-based structural expressions , 2010, AOSD.

[19]  Martin Head-Gordon,et al.  Derivation and efficient implementation of the fast multipole method , 1994 .

[20]  Josh Juneau,et al.  The Definitive Guide to Jython: Python for the Java Platform , 2010 .

[21]  Ronald Fagin,et al.  Translating Web Data , 2002, VLDB.

[22]  Wei Lu,et al.  C++ reflection for high performance problem solving environments , 2007, SpringSim '07.