EclipseCon 2007 March 5-8, Santa Clara California

Java 5: A Developer's Experience

Marcelo Paternostro (IBM), Ed Merks (IBM)

· Long Talk

Thursday, 10:10, 50 minutes | Room 203-204


Ed Merks

Java 5.0, released in September, 2004, was undoubtedly the most dramatic update since Java's inception almost ten years ago. It introduced a large number of new and highly anticipated features such as generics, annotations, type safe enumerations, and autoboxing. Since then, many avid coders have tried out these new features, often in their personal time and using basic examples from tutorials and presentations. Based on public commentary, initial impressions are typically quite positive.

Fortunately or unfortunately, the business world doesn't move nearly as quickly as enthusiastic developers would like. Even today, more than two years after its release, we still see few projects and products exploiting Java 5.0. At for example, with the exception of a few rogue plug-ins, all major components have chosen only to add support for Java 5.0, instead of actually adopting and exploiting it in their implementations. In October 2006, that changed with the availability of the first EMF 2.3 build that requires Java 5.0. It was clear to the EMF team that the new features of Java 5.0 could be exploited to improve and modernize the APIs that EMF generates. But, as we began the work in earnest, we realized that the rabbit hole was far deeper than we had anticipated. The gamut of design possibilities opened by annotations and the subtle, intricate complexity of generics became daunting. Changing a heavily used API to exploit generics, while trying to maintain binary and source compatibility, proved to be a decidedly non-trivial task, and certainly not one for the weak of heart.

This long talk is a discussion about the experience of adopting Java 5.0 in EMF. We will discuss the surprises, the issues that made us curse Java, the arduous aspects of "generifying" our List implementations, and the rationale behind some of the decisions we've made. We will also convey some of the insights we developed to help retrain our coding intuition, such as the subtle differences between List<?>, List<Object>, and List<? extends Object>. The switch to Java 5.0 requires a mental shift, as many old assumptions are no longer valid. The eyes should catch even this innocent looking line of code as a potential problem:

if (x != null) System.out.println(x.hashCode());

As we will discuss, depending on how x has been declared, this can now throw a ClassCastException!

While preparing this proposal, we've questioned, as you well might, whether the JDT developers would not be better equipped to present the details of Java 5.0. It's quite possible they would, but our hope is to convey the concepts from our own pragmatic perspective and based on extensive use of the new language features. That said, the discussion will be deep, reaching the details of the byte code generated by the compiler, when necessary. On more than a few occasions, we've had to go there ourselves to understand what was going on.

This talk is aimed at anyone who uses Java on a daily basis and will be particularly interesting for those who are looking to exploit Java 5.0. This is not a Java 5.0 introduction course though; we expect a rudimentary understanding of Java 5.0. No experience with EMF is necessary; it is merely the context for our discussion and examples.

Marcelo is a software engineer for IBM Rational Software at the Toronto Lab. He has worked with Eclipse technologies since joining the company in 2000. In the last 3 years, he has been a committer on the EMF project, being responsible for numerous changes and new features. Prior to that, he was a committer for the Hyades project which is now known as TPTP. Over the last 6 years, he has presented workshops and tutorials in conferences such as OOPSLA and EclipseCon. Before joining IBM, Marcelo worked for a Rational partner, managing several projects using Rational's tools and processes. As a certified instructor, he taught various courses on object oriented analysis and design; requirement management; and functional testing.

Ed Merks is the project lead of the Eclipse Modeling Framework project and a co-lead of the top-level Modeling project. He has many years of in-depth experience in the design and implementation of languages, frameworks, and application development environments. He holds a Ph.D. in computing science and is a co-author of the authoritative "Eclipse Modeling Framework, A Developer's Guide" (Addison-Wesley 2003). He works for IBM Rational Software at the Toronto Lab.

Floor Plan

Gold sponsors

Ingres logo

BEA logo

IBM logo

Business Objects logo

Klocwork logo

Windriver logo

Red Hat logo

Actuate logo

Silver sponsors

Compuware logo

Sybase logo

Google logo






Code Gear




Innoopract logo

Lynux Works

Media sponsors

Eclipse Magazine logo logo

Methods and Tools logo

Eclipsezone logo

Addison-Wesley logo

Eclipse Magazin logo

Embedded Computing logo

SD Times logo

Enterprise Open Source logo

ACM Queue logo

TheServerSide Java Symposium

Eclipse Review logo

Software Test & Performance logo

Eclipse Developers Journal logo

Eclipse Source logo