Skip to content (access key 's')
Logo of Technion
Logo of CS Department
Logo of CS4People
Events

The Taub Faculty of Computer Science Events and Talks

Code Structures in Java
event speaker icon
Itay Maman (Ph.D. Thesis Seminar)
event date icon
Wednesday, 17.03.2010, 14:30
event location icon
Taub 601
event speaker icon
Advisor: Prof. Yossi Gil
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 types. 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.