20 november 2009

Devoxx 2009 - Day 4: CometD

Yesterday i attended a talk on CometD. The talk started with a littl soccer using SunSPOT's to show the capabilites of CometD on the server side.

Apart from that, there's not much to tell about the talk. It was short. It was not really new. But there was 1 thing to mention: the guy who did the talk gave a very clear but rather disgusting demo to show the difference between polling (AJAX) and long polling (Comet) by swallowing lots and lots of M&M's! He wasn't the most skinny person on this planet and so breathing was already audible during his talking. But after the M&M stunt he was almost breathless.

Yes, polling definitely was really resource consuming... for him!

09:41 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09, cometd |  Facebook |

19 november 2009

Devoxx 2009 - Day 4: keynotes

Today's keynotes were not the technical kind of eye candy stuff, but nevertheless really interesting and absolutely necessary.

Ivar Jacobson

The first talk was by Ivar Jacobson, co-founding father of UML (1 of the 3 amigoes). He started with the influence of fashions in IT. About 10 years ago everyone started doing UML. 5 to 7 years ago CMMI was the way to go (especially for managers). And then, 3 years ago, there was eXtreme Programming. And now hardly anyone talks about XP, but Scrum instead. He didn't mention this, but also Scrum is getting out of fashion: now there is Kanban...

Then there is the gap between methodologists, industry and academics. Especially industry and academics don't really like eachother: academics in the eyes of the industry have never delivered something useful and the other way round, the industry doesn't understand what the academics are doing.

As far is methodologies are concerned: there are some many methodologies in the world. Every company has its own methodology. And they all steal from each other. They pick parts from each other, which results in a soup of methodologies... Methodology nowadays is very much a religious discussion: you either believe in and follow the entire methodology (e.g. Scrum, XP, RUP or whatever). But what they basically do, is pick some ideas here and there, add some stuff of yourself and then write a book...

Knowing all these problems, there is a big need for 1 theory of methodologies, away from fashion. We need to refound software engineering based on solid theory, proven principles and best practices. In other words: no more processes, but practices instead. So not RUP, but the practices of RUP. It should deal with both technology and people. And finally it should support extension in face of changing requirements and technology.

This resulted in the creation of SEMAT: Software Engineering Method And Theory. This organization is joined by a number of people of all involved sectors: industry, methodologists, academics.

These are the names of people involved in SEMAT:

Pekka Abrahamsson, Scott Ambler, Jean Bézivin, Dines Bjorner, Barry Boehm, Alistair Coburn, Larry Constantine, Erich Gamma, Tom Gilb, Ellen Gottesdiener, Brian Henderson-Sellers, Watts Humphrey, Martin Griss, Ivar Jacobson, Philippe Kruchten, Stephen Mellor, Bertrand Meyer, James Odell, Meilir Page-Jones, Ken Schwaber, Alec Sharp, Richard Soley.

Note the presence of the following people

  • Ken Schwaber, the man behind Scrum
  • Alistair Cockburn, the author of the book Writing effective use cases
  • Scott Ambler, the man behind Agile UP, Agile modeling and stuff
  • Erich Gamma, one of the Gang of Four (design patterns), developer of JUnit, Eclipse and Jazz
  • Ivar Jacobson (off course)

All these people know what the problem is, but... they all have a solution to it. Their solution. But this group is not only about finding a solution, a consensus, but also about community, Get everybody's best practices work together, not new practices or "best" practices.

The basic idea of SEMAT is based on a kernel. This kernel is sort of a language to define practices:

  • things to to
  • things to produce
  • patterns to apply
  • competences to apply

The kernel should be used to harvest the best practices, see how people use them and for what. Then some practices may be replaced with other practices that may fit better.

Imagine how organizations adopted methodologies like Scrum: many threw away the good practices along with the bad. That's not smart... It is better to gradually introduce practices that work.

On the academic side, people are rewarded for the volume of paper they produce: the more papers they write the more important they are... And students don't really learn what is really useful for the industry. Therefore they should study the kernel and a set of good practices.

Finally, methodologists write book. People buy them, but don't read them... Authors travel around the world to tell what's in the books ;-) Instead of writing books on new methods, they should stand on top of the kernel and its core practices and add their own.

More information: www.semat.org

Robert C. Martin (Uncle Bob)

The keynote of uncle Bob was very animated. His basic idea was that developers still face the same problems as 40 or so years ago, no matter how technology has evolved. Developers and developers still hate eachother: developers still deliver their software too late and management keeps promising unrealistic things.

We should ask ourselves: what is software development? Do we consider ourselves as professionals? Software development should be about craftsmanship. We should be proud what we do and on how we do it. We should deliver good work. But the biggest issue to face is that we should find out what being professional means. And that means in the first place learning to say "No"! Not "I'll try". Professionals, like doctors and lawyers, stand up for their principles. They don't cross that line, they don't compromise. Developers see themselves too much as blue colar workers, being paid per hour.

Another problem is the tendency to promote good developers to management functions. That seems to be the only way to have a carreer. Many companies don't offer a technical specialist carreer path.

As a reaction on this, as a call for action, the manifesto for software craftsmanship was defined. It looks a lot like the agile manifesto and it builds on the fundamentals of the agile manifesto but goes one step further. The aim: have a productive partnership with the management (in order to get rid of the mutual hate).

The manifesto defines a number of ethics and practices, of which a few are mentioned here:

  • do no harm!
    • not to your customer
    • not to your company
    • not to your colleagues
  • clean code
  • to go fast, go well (if you do something good from the first time, you win time)
  • test driven development
  • 100% test coverage
    OK, really 100% code coverage in unit tests is impossible, but if your unit tests guarantee 80% code coverage, this means that there is 20% of your code of which you're not sure if it is working or not!
  • KNOW it works (by code coverage)
  • Green bar = shippable
    QA should find NOTHING! If they do, the developers should ask themselves what happened and act upon it!
  • QA = specification, not verification.
    This is the definition of "Done", not a huge document that should be tested manually after the development is done.

Uncle Bob's talk was sometimes confronting, but the message was clear: become professional, learn to say "No", don't compromise on your principles and deliver quality!

More information: manifesto.softwarecraftsmanship.org

17:03 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09, keynote |  Facebook |

Devoxx 2009 - Day 4: Spring 3.0

They reserved the largest room for the Spring talk. They always do... Spring has been a successful topic on Devoxx since its first version. This year Arjen Poutsma cane to give us an update on what was implemented in Spring 3.0; an update because last year he was here to announce what would be in it. Apparently Arjen went through a little makeover since last year :) Check for photo's of last year if you weren't there. The development is done, now they're distributing beta versions. The final version should be available "really soon now".

Spring 3.0 should be concidered as a drop-in replacement for Spring 2.5. That means that it should be fully backwards compatible with Spring 2.5n with some additional features. Spring now makes full usage of the Java 5+ features, like generics, annotations and var-args.

in the past Spring got the complaint to be "XML only'. Now that has changed: you can still use XML (for your legacy applications) and you can use annotations. Now the usage of Spring-specific annotations in POJO's might not be the best choice: this way you make your POJO's directly dependent of Spring annotations. Alternatively, you can use Java config instead: keep your POJO's clean, but isolate the config of the bean instantiations in separate classes.

Expression Language has been in Spring Webflow for a while now. But the new Spring release will exploit the EL capabilities in all the framework components since they moved EL to the core.

The biggest change is in the web, with the introduction of REST and URI templates. You can use templates (in {placeholders}) in the URI's and these can be mapped to variables in your controller code.

REST enforces a clear hierarchy in you data structure. By applying this instead of request parameters you can also fully exploit the http protocol (make full usage of caching features of proxies and servers).

REST supports http-methods GET, PUT, POST and DELETE. Browsers however - for the time being (this may change with HTML 5) - only support GET and POST. Spring can use a hidden http method. This means that your browser does a POST, but that you specify a hidden DELETE. The framework will interprete the hidden method.

ETags are used in combination with caching: the ETag marks the changed status of a resource. This is better that the LastModified value, because ETags can deal with multiple changes per second (lastModified cannot).

Spring 3.0 now supports the Portlet 2.0 spec. Apparently hardly anyone seemed to bother... Maybe our business does? This means that Spring now supports inter portlet communication.

JSR-303, bean validation (as part of the JEE6 spec) also sees an implementation in Spring 3.0. Speaking of JEE6: Spring 3.0 already supports the following JEE6 specs in their current state:

  • JSF 2.0
  • JPA 2.0
  • JSR-303 (bean validation)
  • JSR-330 (dependency injection), to which they contributed strongly

Spring is not competing with JEE 6. The add value to the JEE 6 spec where relevant. And as of Spring 3.1 they will fully support JEE 6 (to be expected 2Q 2010).

The following features got pruned:

  • pre-Java 5 "annotations" using xDoclets
  • Native TopLink support (contributed by Oracle), replaced by JPA


And the following specs are deprecated:

  • MVC controller hierarchy
  • JUnit 3.8
  • Struts 1.x


Release date of Spring 3.0 is not defined yet, but it will definitely by after the finalization of the Java EE 6 spec.

16:53 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09, spring 3 0 |  Facebook |

Devoxx 2009 - Day 3: 1 thing to remember from Roberto Chinnici

There is only 1 thing really new AND to remember about the keynote of Roberto Chinnici:

December 10th, 2009

That's the day that the spec of Java EE 6 is final. Everything else was already said...

08:18 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09, java ee 6 |  Facebook |

Proven with numbers: Agile development IS better!

I still have to write my summary of Scott Ambler's talk at Devoxx yesterday on Agile Myth Busters, but I really wanted to have this picture of 1 slide already posted on my blog. This proves with numbers that agile software development really is better than traditional (waterfall) approach.

The picture is not entirely clear, since it is made with a (simple) mobile phone in a room with not very much light.


Look at the bar charts on the left: both iterative and agile projects are more successful (> 70%) than traditional projects (approx. 60%) and hacking.

The bar charts on the right make a distinction between quality, functionality, money and time.

  • the green bar represents iterative projects
  • the yellow is for agile projects
  • the light blue bars are for traditional projects
  • the pink/purple bar stand for hacking

Iterative and agile projects score much better on quality and functionality compared to traditional projects. Even hacking delivers more functionality than traditional projects. But the most remarkable is that traditional project score really bad on money and time.

The full summary will also talk about the fact that agile development is not only about small projects by co-located teams...

Thanks, Scott!

08:12 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (2) | Tags: devoxx09, scott ambler, agile development |  Facebook |

Devoxx 2009 - Day 4: my choices for today

My day definitely starts with today's keynote. I really want to see Ivar Jacobson. I've seen him speak last year at Devoxx and I was really impressed. I've read to synopsis of his talk and it really looks interesting.

I'll have to see what the other keynote is about. Worst case I start consuming my battery power again :-)

After the short break it will probably be Spring 3. I saw Arjen Poutsma do a talk about what Spring 3 was going to be (incl. RESTful web services). And this is a great opportunity to compare both talk... Alternatively I could go for Using XML in Java: Spoilt for Choice? But then Arjen should really be boring (which I don't expect). Or... there will be no more free space left in the (biggest) room that I have to look for an alternative.

After the lunch break, by elimination, I choose for Scaling CometD for the Masses. This is an alternative for the Atmosphere talk I attended yesterday. I always have to be careful with choosing a session by elimination, because on Tuesday I chose for SOA in practice by elimination, but I really wasn't happy with this choice...

Afterwards I have an hour free time: nothing really interesting here. So I have some extra time to update my blog.

After the last short break (of the conference) I can choose between Detecting and preventing bugs with pluggable type-checking and Deep dive on the Java EE 6 platform with Glassfish 3. The latter is a talk by Roberto Chinnici (not really fond of him). And this might be a summary of the JEE6 university session I attended on Tuesday... So it will probably the type-checking talk.

And finally I wonder what Project Jigsaw has to offer (the modularity appoach in Standard Java 7).

07:28 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09 |  Facebook |

18 november 2009

Devoxx 2009 - Day 3: disappointing Gosling

The fact that "God" came to talk at Devoxx, was a really exciting moment to look forward to. His talk was only announced as "James Gosling". No topic specified. But usually this is enough to get excited... But I guess if he had specified a subject, they wouldn't have reserved the biggest room for his talk and the room wouldn't be as full as it was today.

To be honest, I really thought he had something more interesting to talk about, than an app store... Apparently the introduction of Java FX was the trigger to start an app store like Apple for the iPhone and Google for the Android. And they don't only concentrate on the desktop market. There are 2.5 billion Java capable embedded systems. Those are not only cell phones (and definitely not only smart phones either) but also set top boxes for TV. And the main aim? Play games on it...

Apparently Java's ambitions go back to the early days... Remember applets? And Java Web Start? Some of you may not... Java applets failed where Flash succeeded. And now Java wants revenge with Java FX. To quote Stephan Janssen after the keynote of Adobe: "this is going to be a tough job". And that's really an understatement.

It is not because of James Gosling himself, but if I had known in advance, I would have definitely gone to Ceki Gülcü for his talk on logging (SLF4J and LogBack). Now I have to wait for the talk to be published (free of charge) on Parleys.com. And view it using the Flash player...

21:21 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09, james gosling, java fx, app store |  Facebook |