Johannes Thönes

Software-Developer, ThoughtWorker, Permanent Journeyman, Ruby Enthusiast, Java and Devils Advocate.

Devoxx 2011 - I've Been in Paradise

Devoxx 2011 is over - we have left the paradise.

I had - again - the luck to attend and it was an awesome experience. I’m really thankful that Stephan and his team is doing this works. We love you guys!

So - let me try to give you a very brief overview on what I found most interesting at Devoxx 2011.

Java 7

As you might know, Java 7 has shipped this summer. I don’t describe the features in depth - but here are the most important ones:

  • Project Coin  (JSR-334) which does some small changes to the language to make developers life easier (I wrote about this here and here already).
  • The DaVinci Virtual Machine project aims to introduce some features for dynamic languages to the JVM. In Java 7 they introduced invokedynamic (JSR-292), which allows more performant dynamic method invocation.
  • The Fork-Join framework (JSR-166) allows a command-and-conquer style execution of big tasks on multiple CPU cores.

Java 8

Java 8 will be a revolutional release. On contrary, Java 7 was considered evolutional.

The are two revolutional features in Java 8:

  • Project Lambda (JSR-335)
  • Project Jigsaw (Marc Reinhold (@mreinhold) want to file a JSR soon)

Lambda will allow lambda expressions on the JVM. You can think of a lambda as a function, which stands on its own. A method without an explicit class context. These lambdas can be mapped to SAM-Types (Single-Abstract-Method) types and therefore be very useful for a lot of purposes.

Here is a syntax grap, which is subject to change (as always):

1
2
3
4
5
List<Students> students = // ...
students.paralell()
  .filter(s -> s.getEntryYear() == 2011)
  .map(s -> s.getGrade())
  .reduce(Math#max);

The feature will be coupled with virtual extension methods. A virtual extension method is a default implementations of interface methods. This default implementation will be used, if the implementing class does not provide one.

Project Jigsaw will introduce a modularity system for the core Java platform. I haven’t been to a Jigsaw talk this year, so I have no new knowlegde. Nevertheless, Jigsaw will allow you to group your classes into modules and make those modules depend on each other - just like the dependencies section in a maven POM. However, it will be checked by the compiler.

There will be a new file format jmod as well to replace jar files. This will allow you to use modules already installed on your systems, instead of having to package them everywhere.

Other features of Java 8 will be:

  • Convergance of the Hotspot VM (former Sun’s VM) and the JRockit VM (Oracle’s own one)
  • Type Annotation (JSR-308) to allow annotations in more places.
  • A new Date/Time API (JSR-310) base on the joda-time efforts.

Java 8 will be release summer 2013. I bet it will at least have some release at 2013/08/08 ;-) . Oracle wants to stay with the two years release cycle. We’ll have to find out, if they can.

Java 9

The features planned for Java SE are numerous - and still more in a planning phase. Nevertheless, they give you an idea what might come:

  • Convergance of the Java SE and the Java ME platform
  • Supporting to handle Big Data
  • Reification of Generics to make generics more accesible via the reflection APIs
  • Unification of primitives and objects in Java
  • Having a common Meta-Data Object Protocol for all languages on the JVM.
  • Tails Calls & Continuations
  • Support for Multi-Tenancy
  • Self-tuning VM which is able to inspect and improve its own parameters.

Courage in Software Development & The Diabolic Developer

There have been two talks which I shamelessly will handle together, because in my opinion they had the same overall statement. The first one was “Courage in Software Development” by Dick Wall (@dickwall). The other one was “The Diablic Developer” by Martijn Verburg (@karianna). The latter one was acutally over-exagerated and ironic, so  beware I might have misinterpreted it.

Both were actually making the point, that you should not over-estimate the power of best practices. You should always strive for better coding - but this does not mean reading best practices from a book. Most important, you need to try out the things yourself. Try out new things, improve your practice.

Dick was talking a lot about taking risk in software development (and mountain biking). He thinks, that risks as well as failure are part of life, part of learning and part of getting better. So we should do it. Well, I agree on this.

Both stessed the need, to think yourself. “Don’t trust the giant” - said Martijn. This means, don’t unreflectively repeat the heros of our industry. Think about what they say. Think about why they say it. Think about what is there agenda.

Actually I think both talks were pretty good.

Rules of Good UI Design

This was a Talk from Joe Nuxoll (@joeracer) - trying to teach engineers like us how designers thinks. According to him, the most important thing is to communicate. And for this communcation, designs and engineers have to understand each others language. So …

One common misunderstanding is, that design is about “make things pretty”. But this is acutally the last step. Design is a process. It starts with the idea of a product and it continues through several stages very closely analysing what the different user types (personas) need. The bullet points for this are:

  1. Concept
  2. Information Architecture & Interaction Design
  3. Visual Desing / Interaction Polish
  4. Production Plan

You have to understand, that this process is highly iterative and comparative. Designer iterate a lot and make a lot of different drafts and prototypes for there design work. They are also highly interested to critique each others work.

One of the most importants skills of a designer is to listen to the potential users - especially listen between the lines.

After this introduction Joe gave a few golden eggs for UI design. Maybe I’ll blog about them some time later (if asked ;-)).

Devoxx France

It was announced in the wednesday keynote, that the Devoxx will be branching out. April, 18th till 20th 2012 a second Devoxx will take place in France, Paris (see http://devoxx.fr/display/FR12/Accueil). The talks will be 25 percent in English, the rest will be in French.

The original Devoxx will of course stay as it is: In Antwerp Belgium and in November.

Notes

Other things shortly noted

  • The whole Devoxx talks as well as some talks from JavaOne this year will be on Parleys http://www.parleys.com/
  • Oracle stopped funding the work in Swing. So Swing is effectively dead.
  • There we loads of talk about HTML5 - and they were very well attended. Feels like it is on top of the Hype now.
  • There is a “Adopt a JSR” Programm from the London Java User Group to envolve the community in the Java Community Process: http://java.net/projects/ljc-london-jug/pages/AdoptAJSRProgram
  • The Technial Discussion Panel with Emmanuel Bernard, Brian H. Prince, Mark Reinhold, Brian Goetz, Joshua Bloch and Ben Evans has been great. You should watch it on parleys.