My schedule for the week:
Links to blogs & presentations from CSS 2008 (these are the ones that I’ve found, there may be more out there….):
After my gui packed day yesterday, I have moved onto the communication end of things today, starting with two presentations by Filip Hanik on Comet and Bayeux.
The Comet framework is a part of the Tomcat servlet engine. The aim of Comet is to provide the possibility of asynchronous communication between the client and server over an HTTP connection. The presentation began with a summary of HTTP fundamentals, and the standard short poll and long poll paradigms which are usually used to implement async client-server communications. Filip then described the streaming approach which Comet uses, taking advantage of the HTTP protocol to provide an event-driven mechanism by which the server can push data to the client.
Whilst this all looks pretty funky (and, yes, I do want to try it out myself), there are some disadvantages. The programming model is not simple, and it is hard to avoid multi-threading issues. Comet does not use a standard API, and is limited to the Tomcat engine, although Jetty and GlassFish also have provide similar mechanism (GlassFish is apparently more advanced). Some of the functionality of Comet is intended to be included in the Servlet 3.0 specification, however, and although this will not be as complete as the Comet implementation, it will at least provide a standard API across different server platforms.
After lunch, I attended Filip’s second presentation about Bayeux. Bayeux is a framework introduced by the Dojo foundation which provides a more advanced framework built on top of Comet. The advantage of using the Bayeux servlet is that it is far simpler than using Comet directly. Unlike Comet which does not specify a data protocol to be used by client and server, Bayeux is based on JSON, and therefore links very naturally to the Bayeux client developed by the Dojo foundation.
When discussing the future of the Bayeux framework, Filip’s concern is that the Dojo foundation do not appear to have a large developer community involved. It appears that other groups are also looking at solutions and that more initiative needs to be taken if Bayeux is to survive.
Hans and I can be found behind our computers in the mornings and evenings, catching up with email, blogging, and planning our schedules for the next day.
It’s not (quite) all about sitting behind computers. We went out before the start this morning, and again at lunchtime to take advantage of the good weather.
Following on nicely from last night’s BOF, my main focus today was frameworks for building RIAs .
Matt has already posted his presentation on the web, and I am impressed to see that some of the Appcelerator developers have already commented on his blog entry. I won’t therefore spend any more time on it, as you can read his views direct from the source. If you’re interested in what’s been going on at CSS, it’s well worth visiting his blog as he’s also posted on other presentations he’s attended. You can find his Spring 3.0 presentation there too.
OpenLaszlo is a language which can be compiled to either Flash or DHTML. Unlike Flex is it available for Flash versions prior to v9, although this is not generally a blocking point as most people seem to have Flash 9 installed. As it less performant than Flex, it is probably not a preferred option, unless targeting multiple platforms, or sticking with 100% open source, is a particular concern.
One thing that no-one was presenting on was JavaFX. Generally the feeling seems to be that no-one quite sees yet where JavaFX will fit it. I see that the JFall conference in November is featuring a number of presentations on JavaFX… it will be interesting to see if this provides a deeper view into JavaFX.
Although the main focus of my day was RIAs, I actually started out the day with an interesting presentation on Groovy by Eric Schreiner. One great advantage of having a wireless connection in the conference centre is that I was able to download and install the Groovy Eclipse plugin as the presentation started, and then follow along with the more basic examples on my own computer.
As well as explaining the most basic feature of Groovy, and how to integrate scripting within Java, Eric also described how to use the MetaData features of Groovy to alter the behaviour of existing code.
The last presentation I attended today was Dustin Marx‘s second presentation, “Java Management Extensions (JMX) Circa 2008”. After a short history of the JMX spec, Dustin gave a demo showing the improvements made to the JConsole tool in Java 6 – the most interesting features being the automatic detection of JMX managed applications and custom plug-in support.
Moving on to the MBeans themselves, he explained the differences between the various types of MBeans, and the advantages of defining MBeans using Spring.
If you try the m2Eclipse plugin, you can see the Nexus repository action as it is used to provide the index of archetypes when creating a new Maven project.
My opinion – looks like something worth investigating further.
One of the main themes for me today was Maven. I attended two presentations by Jason van Zyl, one of the founders of the Maven project. The presentations focused on the main reasons for choosing Maven and the m2Eclipse plugin. Having previously seen a much older version of the eclipse plugin, I was impressed by the functionality of the newest version, and how much more quickly you can get up and running. One aspect I was particularly interested in, but there wasn’t enough time to cover, was the possibility for “project materialization”, a mechanism for quickly getting new developers ready to work, with automated project check-out, customized Eclipse cheat sheets etc. Another point of attention, which deserves further thought is the handling of multi-module projects. Also of interest to me is that the CI server of choice on the Maven project is Hudson, which they are using both for CI and release builds. He did, however, point out some issues with the handling of dependencies in the multi-module builds, and recommended instead using the free style project type. I hope these issues will be fixed in the near future, as I see a multi-module project as a very useful concept.
Matthew Wakeling gave an interesting presentation on performance engineering. He billed his presentation as “everything you ought to have been taught in your computer science course, but may have forgotten”. Since my own CS course was pretty lacking in this area, and I usually take advantage of what is provided out of the box in Java (for example, sorting algorithms), I found it a useful discussion.
Anton Bar’s follow up presentation “Open Web File System” continued the discussion on the G.ho.st platform, focusing on OpenID (for authorization across multiple sites) and OAuth (for authorization). Both seem like promising APIs, though currently not widely adopted. The file system itself is based on WebDAV, and Anton gave a number of examples of working with WebDAV on different platforms.
My final presentation for today was given by Chris Richardson and was titled “Improving Tests with Object Mothers and Internal DSLs (EE)”. The presentation gave some patterns for reducing redundancy in unit tests, including the use of “object mothers” – basically classes with static getXXX methods for generating re-usable test data. The second half of the presentation focused on the use of Selenium for testing web applications, and the use of Chris’ project Umangite, designed to take away some of the effort in setting up Selenium tests.
Although the day at CSS is usually long enough (from 8.30 until 7), Hans and I stayed a little later this evening to attend a BOF (Birds of a Feather session) on the topic of web UI development.
The main reasons mentioned for choosing Flex were:
Of these, the point that user interfaces are built declaratively is interesting, as it has the side-effect that user interfaces can be prototyped or built very quickly, giving opportunity for a developer and a user interface designer to work together very closely and quickly build the user interface. This seems to me to have a lot of potential in an agile environment.
The only real concern about using Flex was that it was proprietary, but this did not seem to concern most people.
The message I came out of the BOF with was “if you want to build a rich web application, use Flex”. In the words of one participant “for me, Flex is first, I would only not use it if there was a veto on using Flash”.
Looking down the speaker list for this year, there are a number of contributors from LinkedIn. The first presentation I attended, “Building LinkedIn’s Next Generation Architecture with OSGI” given by Yan Pujante gave an overview of the reasons that the LinkedIn architects chose to use OSGi, and the hurdles they encountered along the way. I had hoped that OSGi would feature more heavily in the conference, but this was the only presentation on the topic.
The final presentation of the day, was given by another LinkedIn employee, Matt Raible on the topic of Spring 3.0. The presentation itself was interesting, though a little hampered by the lack of availability of a Spring 3.0 release (the first RC was expected in September but is not yet available). Matt gave an overview of the improvements that were already included in Spring 2.5, as well as what is expected in Spring 3.0, including support for Java 5+ and a new Spring Expression Language.
Development for the iPhone is a topic which is featuring quite heavily at this year’s conference. Despite not owning an iPhone, I attended the introductory session today to see what it was all about. It turns out there are quite a few constraints – 1. you have to have a Mac (no problem there, at least), 2. programs have to be developed in Objective C (some learning curve then), and 3. Apple put a lot of restrictions on the delivery of the software you create, and require developers to be screened before their contributions can be considered (this can apparently be a lengthy process). On the plus side, for anyone used to developing Mac applications, the same development environment applies so you’re already well on your way. Well, who knows, maybe some day I’ll give it a go, but I don’t think I will be rushing to try it.
The fourth presentation I attended was on the OpenWeb operating system, given by Anton Bar, the chief “Gheek” at G.ho.st. G.ho.st is a company based in Israel and Palestine, a fact which Anton gave a little time to at the beginning of the presentation. One particular issue they encounter is that Israeli citizens are not permitted to enter Palestine. Although the two offices are geographically close, organizing meetings between team members is a challenge.
All in all, an interesting first day. After attending the first few presentations, I’ve changed my schedule a couple times, and looking forward to the rest of the week.
After a year’s break, it’s again my turn to visit the Colorado Software Summit in Keystone, Colorado.
When my colleague Hans arrived on Sunday (after a number of flight delays) we took a drive over to Aspen to sort out the car rental. It turned out to be a 6 hour round trip, but certainly worth the drive to see the scenery, and cross the Continental Divide at 12095 ft).