HiveMind 2

Wiki
Project Page

Documentation

User Guide
Contributors Guide

Introduction to HiveMind

HiveMind is a services and configuration microkernel. That means it is a framework for creating applications, not an application, or even an application server, itself.
HiveMind is all about designing systems as small, testable services which interact with one another to make up an application.
The 'core' of HiveMind is a startup logic that instantiates and initializes all the services and configurations of the complete system.

Services

HiveMind services are POJOs (Plain Old Java Objects) that can be easily accessed and combined. Each service ideally defines a Java interface it implements (but this is not mandatory). HiveMind takes care of instantiating and configuring each service just as necessary. HiveMind lets services collaborate with each other via dependency injection.

Configuration

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.

Modules

HiveMind is organized around modules: individual building blocks, each providing a particular set of services and configurations. Each module is deployed as its own JAR file, containing its own descriptor. At runtime, HiveMind combines all the modules and their descriptors together ... seemlessly combining the services specific to your application with the services provided by HiveMind and by other third-party libraries.

Descriptors

The purpose of the module descriptors is to provide a runtime and compile-time description of each HiveMind module in terms of service and configuration extension points and contributions to those extension points.
You can use Java-Annotations or XML-Files as Module Descriptors

Dependency Injection