With the introduction of Java 5 the type system has been extended by parameterized types, type variables, type terms, and wildcards. As a result very complex types can arise. The term Vector<? super Vector<? extends List<Integer>>> is for example a correct type in Java.
Considering all that, it is often rather inconvienent to give types like this, explictly. Furthermore it is often difficult for a programmer to recognize whether such a complex type is the correct one for a given method or not.
Furthermore there are methods whose principal types would be intersection types. But intersection types are not implemented in Java. This means that Java methods often do not have the principal type which is contradictive to the OOP-Principle of writing re-usable code.
This has caused us to develop a Java type inference system which assists the programmer by calculating types automatically. This type inference system allows us, to declare method parameters and local variables without type annotations. The type inference algorithm calculates the appropriate and principal types.
In Java 7 the language will be expanded by closures (lambda-expressions) and function types. We give a formal definition for an abstract syntax of a reduced language Java_lambda, define the type system, and formalize the subtyping relation. Finally, we give type inference rules, which describe the
typings of Java_lambda expressions and statements and sketch a type inference algorithm.
Martin Plümicke is a professor at the Baden-Wuerttemberg Cooperative State University. His research interests focus on type inference. Inhis PHD thesis he developed a type inference system for OBJ and gave atype inference algorithm. Now he works on an extension of Java. He develops aJava type inference system, such that a programmer does not need to give types explictly and the system determines the types automatically.
Before joining the Baden-Wuerttemberg Cooperative State University he did his PHD thesis at the University of Tuebingen.
Tee: 14:30 Uhr in der Bibliothek E185.1, Argentinierstr. 8, 4. Stock (Mitte).