NFJS Boston Day 3
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
Commercial
- Makewave Knopflerfish Pro
- ProSyst mBedded Server
- Samsung OSGi R4 Solution
- HitachiSoft SuperJ Engine Framework
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.
java.next
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
- YAGNI