A Shelf is a place to put Jars. I doubt I'm the first to think this up. Anyway the idea is that the all important classpath is a bit arcane for mere mortals. In gui shells, the shelf could be represented by ... a shelf, which holds the jars (represented by ... jars) for the programs that user has added. In a cli shell, it's just a nifty implementation of a classpath in object form.
draft by BenKnowles, which will be cleaned up after the required period of haggling