HiveMind, one of the newer Jakarta subprojects at The Apache Software Foundation. According to apache, HiveMind is a services and configuration microkernel. Its features are also referred to as Inversion of Control (IoC) Container or Lightweight Container. The adoption of HiveMind in an application ensures the use of certain design principles which improve encapsulation, modularization, testability and reusability. HiveMind services are POJOs (Plain Old Java Objects) that can be easily accessed and combined. Each service ideally defines a Java interface it implements (this is not mandatory).
HiveMind takes care of the life cycle of services. It instantiates and finalizes services and configures each service just as necessary. HiveMind lets services collaborate with each other via dependency injection, so that the service code itself is released from the task of looking up dependencies. 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 seamlessly with the service architecture. According to the developer, HiveMind is drawn from the workings of a bee hive or ant colony. Each individual member has a very limited job to do, and does its work without concern with what any other member is doing. And yet, a bee hive or ant colony will expand physically, collect food, produce new generations of workers, fight against intruders etc. Likewise, in HiveMind, one can set to task a good number of simple services, and by letting them collaborate and share information, they can produce the desired application behavior. HiveMind is about designing systems as small, testable services which interact with one another to make up an application.
A HiveMind registry contains zero or more modules. All of the modules in the registry are described by classpath resources named “/META-INF/hivemodule.xml” (the default location for a HiveMind module descriptor). With this one line of code, HiveMind has automatically discovered and parsed every module descriptor on the classpath and loaded the corresponding modules into the registry. So, if this were a web application having one hundred jar files in the “/WEB-INF/lib” directory, containing module descriptors, there would be one hundred modules in the resulting registry. This makes assembling HiveMind-based applications very easy. If need be, a RegistryBuilder instance can be used to create custom registries.
HiveMind boasts a thriving community of interested users and developers alike. What is needed is for many projects to adopt HiveMind and create reusable modules and frameworks that others can plug in to their applications. That is the vision of HiveMind, assembling large applications from small, testable, reusable components.
Java Development India offers HiveMind development, HiveMind consulting and HiveMind related solutions from our offshore software development outsourcing centre at Kochi, Kerala in India.
|