Devoxx – day 3

My last day at Devoxx was the first day of the actual Conference. The mood is still superb and I really have spent every minute either talking to people or listening to sessions. I must say that this day felt a lot like a NLJug day, I kept running into old acquaintances and lost friends. Also, as I started up conversations with people I’d never met before, I was greeted with the same enthusiasm.

From the sessions and the discussions I’ve managed to pick up quite a few points to take home, so let me go over them shortly as I wrap up my final Devoxx day.

Java 7 and 8
For those of you who’ve read the reports from JavaOne, skip this paragraph. Mark Reinholdt mentioned nothing new, except for one thing which caused me to laugh. I’ll get to that in the end.

The Java 7 release has been postponed, funny enough to my birthday next year, 28th of July. Also it has been downscaled significantly, some of the really big features that were announced earlier have been postponed until java 8. What they did put in, is really not that interesting to a Java Developer. Mark Reinholdt named it a minor release, but someone on Twitter said it right: it doesn’t deserve the title Java 7, it should be Java 6.1. For a full feature list, check out:

http://openjdk.java.net/projects/jdk7/features/

The Java 8 release holds a lot more promise. Major features will include Project Lambda, which adds closure type functionality to the Java language and Project Jigsaw, which is supposed to take away all of our classpath issues by providing a module system.

Let’s start with the last, the module system. Basically, the java VM will support functionality similar to Maven’s dependency management. It’s a good idea, integrate the good stuff from the community into the core. Nuff said.

The thing everybody is pining over and would really like to see realized is the addition of Closures to Java. There are many languages already supporting closures, such as Javascript and Scala, but it would be really cool to see it in Java as well. Interested by all this, I attended Brian Goetz’s presentation on Project Lambda. He had a very clear presentation where he explained how and why they will be implementing closures.

The main reason Oracle is pushing this is because of parallelization. Systems are getting more and more cores, but they’re not getting any faster. In order to speed up programs, we need to go parallel. Doing a loop that iterates over all elements in a collection is serial by design. If you tell the collection to run a function for each of it’s elements, the collection can decide to fork that off into different threads and do them in parallel.

I can’t give you all the details because that would take me an hour as well, but I can mention that it’s worth looking it up on parleys.com. You can also try googling for it since I’m sure it’s not the first time he gave the presentation. I’ll give a quick teaser.

This Java code:

Collections.sort(people, new Comparator<Person>() {
public int compare(Person a, Person b) {
return a.getLastName().compareTo(y.getLastName());
}
}

can be rewritten as:

people.sortBy(#Person.getLastName)

Finally, the slide that really made me laugh is the one where Mark Reinholdt announced the submission of several JSRs for Project Lambda, Project Jigsaw and the features in JDK7. Oracle says they’re taking the Java Community Process seriously, but really they’re only submitting JSRs after most of the work has already been done. A really good way to give the community a say in what goes on Oracle, thanks!

Java EE 6
As a JSF, Seam and general Java EE developer I of course had to attend some EE sessions to get an idea of what Java EE 6 will bring us. I’m not going to be attending the official keynote and the sessions about EE tomorrow unfortunately. I don’t want to go into speculation, so I’ll stick to what I found out.

CDI
The Java EE 6 container will support Dependency Injection, yay! It won’t be all over the board like in Spring, Seam or the likes, but it’s a good start. I saw some nice demos going on with @Inject variables and it looks like the need for Spring or Seam is diminishing. We’re not there yet by any means, so you’re stuck with your trusted helpers for quite a while more.

JAX-RS
The new Java EE 6 spec has integrated the JAX-RS standard. This means that you will be able to make your beans available through URLs. It also adds JAXB, which allows you to put an annotation on a domain class and have JAXB transform that into XML or JSON for you.

JSF 2.0
The JSF 2.0 is righting some of the wrongs that the JSF 1.0 standard introduced. I’m still not a fan, but there are some good improvements. Facelets and the use of EL will become the default way of writing your pages, I really wouldn’t know how to write a JSF app without it.

Some small take-aways
Git
The version control system Git seems mildly interesting. The killer feature for me was the ability to do a “git grep”, which allows you to search through all of the history of your repo for a specific string and where it was changed.

Performance tuning
Joshua Bloch had an interesting but short presentation on performance. His main point: performance is no longer predictable. As software and hardware systems advance and get more complex, you can’t say that something will take x seconds unless you actually measure that. His advice:

  • Measure your overall performance
  • Measure many times to make your measurements statistically significant
  • Trust your libraries to do optimizations for you
  • Learn to live with some unpredictability

Devoxx conclusion
I’ve had a few organizational annoyances, but have really enjoyed the atmosphere, the technical content and the discussions with people. Overall the experience has been quite positive, I would recommend it to others.

It’s been great Devoxx, see you next year!

Advertisements
This entry was posted in development, devoxx. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s