Oracle Blog

Wheels within Wheels

Monday May 14, 2007

A while back our team began to re-architect a somewhat painful part of the experience of Java Enterprise System: the integrated installer. The problems that Sun and our customers faced were becoming more and more apparent and costly. We are not finished yet, but a big piece of the solution has become reality: the openInstaller. This open-sourced project has recently been released under the GlassFish banner as a solution to the problem of integrating a large set of disparate products together into a unified install and ongoing software management experience. We have started the openInstaller community, and (as with most open source projects) hope to build it with members who can contribute to the project and make it even better (and fix its problems, of course).

Many of its features are obvious for software installers, but there are a number of innovative approaches that separate us from the crowd:

Fully declarative engine

Expressive and consistent configuration syntax

Interfacing with product configurators

GUI/CUI parity, for free

Multi-install aware

Simple, yet very powerful and intuitive dependency model

Excellent data/logic separation

Default "best effort" behavior

Completely modular, easily debugged in the field

There are many other features that are sort of "must-haves" (e.g. JDK detection, progress reporting, upgrade/uninstall, logging) which other team members are writing about. There is also tooling on top of this framework which makes the creation and maintenance of integrated installers a pleasure. See the tooling demo and download it and try it yourself! I'll try and expand upon some of the more interesting features in future writings.