A small Lunatech delegation (Peter Hilton and I) attended Jfokus in Stockholm on 13-14-15 February 2012.
The technical level was very high. There were presentation on Domain Driven Design, but also lower level topics like implementation of annotations to do AST transformations in Groovy, and the internals of the [.caps]#JVM #(HotSpot is going to be merged with JRockit! no more permgen!). Peter presented a session on Play 2.0. I will be content with sharing notes on some of the trends I have noticed at the conference.
Most developers attending the conference seem to work habitually with the JEE/patterns paradigms. Dependency injection, repositories, DAOs are almost universally understood. The most popular frontend technologies are those that, like Java Server Faces and Google Web Toolkit, shield developers from HTML and CSS and allow them to write mostly Java instead. Servlet API is also more familiar than HTTP.
Every presentation namedrops ‘command objects’ and separating methods that modify state from those that do not (a tribute to the popularity of discussing Command Query Responsibility Segregation, which has been the object of an excellent workshop by Greg Young). Anything from the Domain Driven Design camp seemed also to enjoy good buzzword status, as well as toting the benefits of ‘immutability’, which goes to show how some of the concepts reiterated by the functional programming on the JVM community have taken some root at least in developers’ imagination, if not in their code yet.
Functions are In
Functional programming is clearly trendying. There were multiple presentations on either Scala or Clojure. It helped that many participants seemed to possess academic credentials. A participant confirmed that in Sweden there seems to be a culture of ‘serious engineering’. This is probably due to the big engineering companies like Ericsson or Scania. Now, probably everybody with an advanced degree in computer science pride themselves in not being intimidated by what they studied at university, and a bit of functional concepts are in most curricula.
Whether that or other reasons, I did not witness anyone running away when I announced that the core of Play 2.0 is written in Scala. I think this is a good, because many of the functional programming concepts are just a slightly more rigorous generalization of object oriented practices.
Flash starts to feel outdated (because it is not supported by Apple?), and WebSocket is being considered as a replacement; some industries like finance and entertainment especially feel the need for push content. But there are also other applications, like pushing horse race results in real time.
I suspect that as more and more of the public will have played video games or sat in front of a self-updating Facebook stream at some point in their lives, a faster feedback loop is going to feel increasingly acceptable. We can suppose that faster reaction to user input and faster information update add up to tasks being performed in less time, which is interesting in any business.
My experience of Jfokus 2012 indicates that Java development culture is still grounded in the ‘software engineering with objects’ approach that has been developed to deal with enterprise applications. At the same time, Java developers are increasingly interested in less familiar topics like functional programming and they also confront the fact that users are becoming increasingly sophisticated and demanding, which raises the all sorts of questions around interactivity and user interface design which cannot be solved only using the traditional Java server side stack.