Babel: A Version Management System for the Java Programming Language

For the deployment of large software systems powerful mechanisms for module and version management are essential. For both areas, the popular Java programming language, however, provides only limited support. Module management is supported by means of Java's package and jar file mechanisms which is mostly a packaging mechanism that just allows to amend packages in a jar file with some meta information via an included manifest file. The only version management functionality supported is to allow developers to query a package for its version number, after it has been loaded. Based on that, an application can try to make assumptions whether that version might be compatible or not. However, if the currently running Java application uses a module that depends on a different and incompatible version of a component that is already loaded, Java users are out of luck since Java does not allow to load two different versions of the same class. In this paper, we present the Babel Version Management System that tackles all of these issues.

By: Thomas Gschwind; Michael Moser

Published in: Vienna, Austria in 2006


This Research Report is available. This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g., payment of royalties). I have read and understand this notice and am a member of the scientific community outside or inside of IBM seeking a single copy only.


Questions about this service can be mailed to .