Apache karaf is OSGi based runtime.
It is where our bundles (OSGi components) run. Fuse uses apache karaf as its OSGi container to make run bundles which collaborate to provide business functionality. So in order to understand fuse we have to understand karaf.
Apache karaf is very small and lightweight OSGi container which runs OSGi bundles ( components which make up our application).
It is built on Felix and equinox which are OSGi framework.
ESB in its simplest form is a software architecture model which allows multiple application to communicate.
Nothing great about it?
What if those application were developed in different ages using different technologies? Like some in C, C++, Java etc. and nightmare is not over yet what if everyone needs their input data in their own format and produces output in their own format?What if every application resides on different hosts?