Itay Maman, Ph.D. Thesis Seminar
Wednesday, 17.3.2010, 14:30
This research explores the identification of recurring constructs, Code Structures, which
serve as the building blocks of object oriented programs and the exploitation of these in various areas
including software research, development tools, and language design.
Any in-depth research of these structures, be it an empirical study of existing programs or an analytical
reasoning about software modules, must be based on some formal means for describing the elements of a
program. To this end we present the Java Tools Language, JTL, which a relational query language that is
specifically designed for querying the domain of Java elements. Using JTL we investigate existing Java
programs, and present a comprehensive catalog of Micro Patterns capturing purposeful programming idioms.
An empirical study allows us to make precise claims regarding the prevalence of the patterns and the ability
of these to characterize the software containing them.
We also show how Code Structures can be used to enhance Java's type system with the ability to express types
whose conformance semantics is that of structural equivalence. This is realized by Whiteoak: A Java extension
in which structural types are defined via a strict subset of JTL's syntax. Thanks to these types Whiteoak can
express a wider range of programs than Java programs without compromising Java's static type safety. We also
show how structural conformance can be used to support constructs such as virtual constructors or anonymous
Our last result is that of extending JTL such that it can produce output thereby allowing the JTL user to easily
transform or translate existing programs. This extension maintains JTL's purely logical nature. In particular
production of output did not require the introduction of side effects into the language core.