I went down specifically on an Ajax fact hunting expedition for a project I'm currently working on, and wasn't disappointed with the Ajax track. I attended 3 Ajax sessions, and learned quite a bit from each of them.
The first was "Ajax and Design Patterns: Do we need a client tier?" presented by Dave Crane.
My session notes:
- Model maintained in client (possibly XML or JSON data sctructure)
- Multiple views registered as model listeners with controller
- Views access model state
- Controller invokes view callback functions to update views on model change events
- Since functions can be referenced as variables and passed around, strategy implementations can be implemented as functions with a closure.
- Example use of a closure to pre-register lunch activities (devour sandwich, clean ear with pencil, ...) when person comes into office in the morning, with objects to interact with (e.g. sandwich).
Next came "Google Web Toolkit: What, Why and How" by Bruce Johnston.
Whilst GWT has been on my radar for a while, I haven't had a chance to look at it at all. From what I saw GWT looks pretty cool.
My session notes:
- Hosted mode customer browser allows Java debugging of UI without opening IE / firefox
- Widgets are styled with CSS
- History support looked well implemented
- RPC support allowed for Java refactoring of client and server code together
- Read the "Making GWT Better" document
- No support for reflection / class loading. The tradeoff was for aggressive performance optimisations in the compiler.
- GWT can be integrated into existing apps
- Several options for automated test support using hosted browser.
After lunch I ended up at the "Rich Internet Apps with Flex & Apollo" presentation. I had thought of going over to the agile track but am glad I didn't. Flash applications can definitely score in the "wow" factor stakes, the demo'ed applications built with Flex looked pretty slick. The presentation was mostly demos focusing mostly on a table data grid, and various ways that data can be fed into it including xml over http, web service, and a remoted pojo collection. Nice to see spring integration catered for out of the box. Other interesting things include
- Live in table data editing
- Real time collaboration demos showing 2 client sessions being kept in synch via the server, i.e. updates in one session, were shown in 2nd session.
The final presentation I went to was "Synaesthesia - Listening to test smells" by Nat Pryce and Steve Freeman. Another good session highlighting how smells in test code often highlight design issues in code. Particularly liked the description of how the objects that an object collaborates with can be classified into:
It was interesting to see how some of the audience thought that "logging is an interface" was really contentious. An example was shown of a class with a static Logger, with Nat and Steve highlighting how static stuff is hard to test, yet there was some incredulity that maybe a logging object could be passed / injected as a constructor argument instead.
Got an unofficial update on JMock 2 which Nat reckons will be released before the SPA conference next week.
I ended up in an open space session about People Stuff which has been blogged about here. Had intended to go to another session but it was nice to talk to others for a change.