Download Documentation Support
What is The Obix Framework?

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. It provides a host of powerful, yet simple, features that simplify the representation, and use of configuration information. These features, to name but a few, include: the ability to represent complex configuration data (file) trees, by providing links 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; a flat learning curve; and extensibility.

The importance of software configuration cannot be overstated. It enables us to quickly change the behaviour of software without resorting to code changes. Such behavioural changes are not limited to the mundane, such as database connection strings, but incorporate more complex switching parameters that can be used to alter the behaviour/logic/flow of code without resulting to compile-dependent changes.

So what does this framework offer above the traditional means of specifying software configuration parameters? Whilst the Java™ J2SE SDK provides standard mechanisms, such as properties files and resource bundles, to enable the configuration of software, these lack a number of features which are required for today's dynamic and complex business environments. The advantages of the framework over traditional configuration mechanisms can be summarized as follows:

  • Obix enables the condensation of sparse, complex and rich data in structured XML, thus ensuring the portability of the data.
  • It enables modularization of configuration data, thus enabling the definition of relationships (via links/import) between configuration documents.
  • It provides simple API, and a host of extensions covering JMX and J2EE, which simplify the integration of the framework into your application. These extensions and API, in essence, provide multiple deployment models catering for different application environments.
  • Support for, and easy integration into the Java™ Naming API.
  • In recognition of the dynamism of today's IT environments and the ever changing nature of requirements, it also supports the real-time auto-detection of changes to configuration data, and the real-time auto-reloading and re-synchronization of changed/modified configuration files.
  • It provides a simple plug-in mechanism, which enables application developers to tap into the framework. This plug-in mechanism is used to develop utilities to simplify the use of a host of other open source frameworks, e.g. initialization utilities for Log4j and Hibernate.

The framework is intended to serve as one-stop-shop for software configuration functionality.

What the Framework is Not!

One of the most frequent questions that is asked is, "how does obix compare to Spring?". It is important to state that obix is not an IoC framework, and has no intention to masquerade as one. It is simply a system configuration and initialization framework, and it is intended purely as a lightweight mechanism for achieving just these objectives. Granted, we can see where the confusion lies, and perhaps you can use obix to implement your own take on "IoC", but why go through the pain when there are other frameworks that already do an excellent job of it?

Additionally, the obix team continue to develop plug-ins which simplify the use of the framework in conjunction with other open source frameworks, including IoC frameworks.