I went to sleep really late last night so I had some troubles getting up today. And thus I missed the 15-minute opening session by Christian Frey. I arrived just in time for the James Gosling‘s keynote. James’s keynote was really packed with information. He talked about lots of stuff what Sun is doing in the software and mainly Java field, including GlassFish v3 and its profiles, latest release of NetBeans, project Kenai – Sun’s full-featured project and source repository that will soon reach its first final release. He also talked about Real-time Java, Java for cellphones, mentioned coming JavaSE 7 release and touched briefly JavaFX platform. Looking back, I really wonder how he was able to cram so many topics into a 60-minutes presentation. Actualy, if you want more details on the James’s keynote, please, take a look at my notes.
After the two keynotes a series of technical sessions have started. Obviously, I could not attend all of them (I am really very bad in being in two places at the same time by design), so the next lines give a short look at those that I attended.
The first technical session was done by Kirk Pepperdine from Kodewerk Ltd. on Concurrency and Performance in Java. The main premise an motivation for the presentation was – the Moore’s law. A common mistake people often do is they confuse speed with frequency and put this law into connection with a CPU frequency, but in fact it is number of transistors in the CPU that is supposed to double once every 18 months. Latest evolution in the CPU field confirms that. What may be less obvious, at present, Moore’s law basically suggests that currently we can expect new processors with doubling number of cores approximately every 18 months, which inherently poses questions on how to effectively leverage such parallelism and brings us eventually to concurrency issues. After a short intro into the problem area, Kirk introduced some of the new concurrency-efficient data structures he has been working on for some time. I have to say that I got little bit lost several times during the talk as I was missing some more context that would connect the slides and pieces of Kirk’s talk together. Nevertheless, I left the room with an impression that Kirk’s data structures may become pretty useful soon. And even though Java already provides a very useful library of concurrency-efficient classes developed by Doug Lea, it’s still a pitty that Kirk’s structures didn’t make it into JDK (yet). Hopefully we’ll see them in JDK in some later release.
Last morning session by Neal Ford of ThoughtWorks, Inc. on "Design Patterns" in Dynamic Languages was really refressing. I am not an active user of dynamic languages such as Groovy or Ruby yet, but after the initial denial phase I am getting more and more excited about them, especially Groovy. In his talk Neal touched several standard patterns know from the "Gang of Four" book (iterator, command, strategy, template, interpreter, decorator and adapter) as well as introduced two patterns specific to dynamic languages, namely "null object" and "arridifier" patterns. Probably the two main messages of the talk were that modern dynamic languages can significantly reduce the amount of the boiler-plate code a deveoper needs to write. That makes the code both faster to write and easier to read and understand. The second main thought is that it does not make sense to use standard design patterns in the GoF book as recipes that have to be followed precisely. This of course applies to statically typed languages as well, but is greatly emphasized when one starts using a dynamic language. Also, all aforementioned standard patterns can be adjusted to fit a dynamic language in a way that their implementation requires less code and feels more natural in the dynamic language environment.
In the first afternoon session Ognen Ivanovski from Netcetera presented his 1-year experiences with development of iPhone applications from a perspective of a Java developer. Overall nice introductory session. I had very similar feelings (a mix of frustration, confusion, joy and amazement) when I first put my hands on Objective C and Apple’s iPhone SDK. Ognen’s comparison of Eclipse (evidently his beloved IDE) to xCode (Apple’s IDE) and NetBeans (well, my preferred Java IDE) really startled me though. In the comparison, Eclipse came out to be far superior to both xCode and NetBeans. The problem is that Ognen’s arguments used in favor of Eclipse over NetBeans are not valid for several years now. I don’t want to go into argument which of these IDEs is really better. I guess the lesson to learn here is just that if you actually don’t know enough about something (or haven’t seen/used it in the last couple of years), don’t try to compare it… 🙂
The next session I attended was about build and collaboration tools, presented by Jason van Zyl. This talk evolved around Maven, OSGi repositories and tools folks in Sonatype develop around them. Interesting thing was that, among other things, they are developing also plugins for Hudson because they would like to see Hudson to become a standard open-source tool for build & release process and development collaboration.
One more interesting talk I saw today was from SAP guys on exposing devices and sensors in a RESTful way. As part of the presentation they were demonstrating SunSPOTs with an embedded web server that was capable of handling REST request and producing json responses. The SunSPOTs were accessible via something they called "Smart (or was it Intelligent?) gateway", which was essentially just an HTTP proxy. With this RESTful API it was possible to browse all registered SunSPOTs and retrieve all the data about each particular SunSPOT‘s status using HTTP GET. Also it was possible to control the devices and do things like lighting the LEDs, changing colors etc. Thinking about it, it would be a nice project to try to embed Jersey into a SunSPOT and do something similar.
Last two talks (1, 2) of the day were without a question the cherry on the top of the cake. Very, VERY interesting and entertaining at the same time. Because of their topics it does not have any sense to try to condense them into few sentences. But I am sure that everybody who stayed there to see them would agree that they were more than worth it. …btw. did you know that there are armed military robots deployed on the North-South Korean borders that are supposed to shoot people without a valid RFID on sight?