Open Source Configuration Deployment Frameworks Written in Java
A list of java frameworks that help manage an application's configuration.
|
|
Managing an application's configuration and deployment is much harder than one would naively think.
Stuart Halloway wrote a very insightful set of articles covering configuration of Java applications. He introduces a concept of Component Configuration Interface, and goes on to define essential elements:
Structure. Producers and consumers of configuration information must agree on some structure for passing that information, and possibly a type system that allows structures to be validated for particular uses. Lookup. There must be some way to locate the configuration information when it is needed. Scope. Configuration information must bind to some specific slice of code and data. This slice could be some combination of server farm(s), machine(s), process(es), thread(s), object(s), or something more esoteric. Metadata. Configuration information should expose metadata in a standard format. Tools can then process this metadata and tell users how the configuration information can be used.
I'm unsure of the list of frameworks here took Halloway's ideas to heart. Nevertheless, I'm sure you can find a lot of novel ideas on how best to implement configuration on your next app.
- SmartFrog - SmartFrog consists of a language for describing component collections and component configuration parameters, and a runtime environment which activates and manages the components to deliver and maintain running systems. It was developed at HP Labs.
- HiveMind - HiveMind is a services and configuration microkernel. HiveMind allows you to provide complex configuration data to your services in a format you define. HiveMind will integrate the contributions of such data from multiple modules and convert it all into data objects for you. HiveMind configurations allow for powerful, data-driven solutions which combine seemlessly with the service architecture.
- JFig - JFig provides a hierarchical approach to configuration files. The ninety percent of configuration values that do not change can be maintained in a base file. JFig allows for a combination of a hierarchy of configuration files, substitution variables and property variables.
- Obix - The Obix Framework simplifies software configuration by providing a standard means, of encoding configuration data in XML, and of loading such data into an application so that the data can be accessed using basic Java objects. Obix features include: the ability to represent complex configuration data (file) trees, linking between configuration documents; modularization of configuration data; automatic change detection and auto-reload of configuration data; simple integration into Java applications using little or no custom code; support for enterprise scale (J2EE) applications; configuration event listeners; and extensibility.
- Nuts - Nuts stands for Naming convention based User defineable Tags. Nuts provides an extensible XML based configuration framework.
- Commons Digester - Digester package lets you configure an XML to Java object mapping module, which triggers certain actions called rules whenever a particular pattern of nested XML elements is recognized. A rich set of predefined rules is available for your use, or you can also create your own.
- Confix - Confix stands for "configuration" and "xml". The Confix API intends to spare developers from the tedious task of "manually" parsing XML configuration files, replacing this approach with a direct translation of XML configurations into object format.
- Controltier - ControlTier is a provisioning automation library and command dispatching framework. ControlTier provides components include a security model, consistent package lifecycle, distributed application runstate control and coordination, configuration data registry, standardized yet customizable metadata model, and repository services.
- Spring Java Configuration Project - The Spring Java Configuration project is a Java-based alternative to configuring Spring Application Contexts. In addition to Java based configuration, properties files and Groovy builder support is provided.
- CMDBuild - CMDBuild is web based configuration and management database. CMDBuild provides support for tracking of computer assets by storing its composition, location, functinal relationships, upgrade cycles and support processes. It provides help desk support and automatic inventory. It draws on best ITIL practices.
If you know of any other framework that you think fits in this category, do let me know!

