Department of Computer and Information Science
Linköpings universitet

The Future of Java

Dr. Gilad Bracha, Sun Microsystems

Linköping, January 23, 2002, 13.30

13.30-14.30 Session 1: Adding Generics to the Java(tm) Programming Language Generic types allow users to write programs that work uniformly over a family of types. Generic types make programs more robust and type-safe, and more readable, by eliminating the clutter of unnecessary casts. Typical uses are container classes such as collections, lists and stacks. We are developing a proposal for adding generic types to the Java programming language through the Java community process. We'll highlight key features of the proposal, and contrast it with seemingly similar features such as C++ templates. The emphasis in this design is on compatibility and a seamless transition to the upgraded language. An experimental compiler supporting these features is publicly available. We anticipate shipping this in the 1.5 product release.

14.30-15.00 Coffee break

15.00-16.00 Session 2: Verification in the Java(tm) Virtual Machine : Past, Present and Future Byte code verification is one of the key innovations in the Java(tm) virtual machine (JVM). Classic byte code verification performs type inference on incoming byte codes prior to their execution, ensuring the type safety of the system. Obviously, verification is crucial to the security guarantees provided by the JVM. Today, we are moving toward verification based on typechecking rather than type inference, improving efficiency and robustness of the verification process. In this talk, we explain the basis for verification, relate some of its history and discuss the reasons for the planned transition.

16.00-16.30 Coffee break

16.30 - 17.30 Session 3: Mixins in Animorphic Smalltalk We describe the use and implementation of mixins in the Animorphic Smalltalk system, a high performance Smalltalk virtual machine and programming environment. Mixins are the basic unit of implementation, and are directly supported by the VM. At the language level, code can be defined either in mixins or in classes, but classes are merely sugar for mixin definition and application. The Strongtalk type system supports the optional static typechecking of mixins in an encapsulated manner. Mixins are used at key points in the library. The system is the fastest Smalltalk implementation to date, typically three times faster than others.