Technical Report PHD-2013-03

Title: Internal and External Mechanisms for Extending Programming Languages
Authors: Keren Lenz
Supervisors: Yossi Gil
Abstract: Most object oriented applications that involve persistent data interact with a relational database. There is an inherent gap between object-oriented languages and database access languages, known as “Object-Relational impedance mismatch”. This work strives to bridge this gap in two mainstream object-oriented languages, C++ and JAVA. We begin by presenting ARARAT, a C++ extension with an augmented relational algebra calculus for the purpose of generating safe SQL queries. All SQL statements constructed by ARARAT are guaranteed to be syntactically correct and type safe, with respect to the database schema. ARARAT allows direct representation of relational algebra expressions as C++ expressions, yet it is implemented without modifications to the host C++ compiler, relying on template meta-programming and operator overloading. We then describe three studies, conducted in the course of extending JAVA with safe query facilities. First, we present an empirical study on the use and abuse of overloading in JAVA. One interesting contribution of this study is the employment of research techniques traditionally used in social sciences. Second, we extend JAVA method invocation mechanism with named parameters and default values. This feature is realized by modifying the host compiler. Finally, we unveil some of the potential pitfalls encountered while benchmarking small JAVA programs (microbechmarking).
CopyrightThe above paper is copyright by the Technion, Author(s), or others. Please contact the author(s) for more information

Remark: Any link to this technical report should be to this page (, rather than to the URL of the PDF files directly. The latter URLs may change without notice.

To the list of the PHD technical reports of 2013
To the main CS technical reports page

Computer science department, Technion