Thoughts on software development and other stuff

NFJS Boston Day 3

without comments

Coverage of the last day of No Fluff Just Stuff (albeit a few days late):

Spring DM and OSGi

Craig Walls provided an extensive overview (and defense) of OSGi. OSGi is a framework for managing library dependencies. It enables the installation, configuration, and updating of modules in a live program without JVM restarts. Multiple versions of a class and/or libraries can coexist in a container. Each module has a defined lifecycle and dependencies between modules can be defined.

Here is a list of OSGi implementations:

Open Source


Craig provided a live demonstration of the OPS4J Pax shell running under Eclipse Equinox and Apache Felix. Unfortunately we ran out of time and we didn’t get to see much of the Spring DM server in action.


Stuart Halloway gave an overview of the latest and greatest languages available for the JVM. Like some of the other NFJS speakers he has very strong opinions, especially when it comes to the use of Java. I believe the quote was something along the lines of “every time you start a greenfield project with Java, God kills a kitten.” (Incidentally, Ted Neward believes that using Java arrays instead of collections will lead to the same fate for said kitten.)

Straight from Stuart’s slides: pros and cons for your consideration:

Clojure Pros

  • Functional
  • Multimethods
  • Concurrency
  • Lisp
  • A la carte

Clojure Cons

  • Youngest java.next language

Groovy Pros

  • Easiest to learn
  • Easiest bi-di interop
  • More committed to reusing Java libs

Groovy Cons

  • Worst Java baggage
  • No concurrency/multicore story

JRuby Pros

  • Biggest community
  • Commercial support: EngineYard
  • Rails
  • multiple platforms

JRuby Cons

  • No concurrency/multicore story

Scala Pros

  • Functional
  • High performance
  • Pattern matching
  • Actor model
  • Hybrid object/functional (could also be a con)

Scala Cons

  • Hardest to learn

The general theme on these new generation languages is:

  • Dynamic typing (Scala is not as dynamic as the others, but offers more flexibility than Java)
  • No checked exceptions
  • Reasonable defaults
  • Convention over configuration

Written by Patrick Peralta

September 16th, 2009 at 7:03 pm

Posted in Development