Error

Eclipsecon has an error. This has been reported to the EclipseCon developers. [close]
EclipseCon 2007 March 5-8, Santa Clara California





Atom feed

Java 5: A Developer's Experience

Marcelo Paternostro (IBM), Ed Merks (IBM)

Java Development · Long Talk
Presentation File
Thursday, 10:10, 50 minutes | Room 203-204

7
·
8
·
9
·
10
·
11
·
12
·
13
·
14
·
15
·
16
·
17
·
18
·
19

Marcelo Paternostro

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 Eclipse.org 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
(go to eclipsezilla submission)

Gold sponsors

BEA logo

Klocwork logo

Windriver logo

IBM logo

Business Objects logo

Actuate logo

Ingres logo

Red Hat logo

Silver sponsors

Activegrid

Innoopract logo

Sybase logo

Google logo

Nexaweb

Telelogic

Oracle

Code Gear

ACCESS

Cloudsmith

Compuware logo

Genuitec

Lynux Works

Instantiations

Media sponsors

Eclipse Magazin logo

Eclipse Source logo

Embedded Computing logo

Eclipse Review logo

GoingtoMeet.com logo

ACM Queue logo

Enterprise Open Source logo

SD Times logo

Addison-Wesley logo

Software Test & Performance logo

Eclipse Magazine logo

TheServerSide Java Symposium

Eclipsezone logo

Eclipse Developers Journal logo

Methods and Tools logo