What exactly is Apache Karaf?

Frizz picture Frizz · Jun 27, 2013 · Viewed 49.8k times · Source

I am a little bit confused about what Apache Karaf exactly is.

Can you say that Apache Karaf includes, amongst other things:

  • Apache Felix (which is an implementation of the OSGi 4.2 framework)
  • Apache Aries (which is an implementation of the Blueprint standard)

Answer

Sheena Artrip picture Sheena Artrip · Jun 28, 2013

TLDR: Apache Karaf is much more 'batteries-included'. It can also run on any OSGI runtime.

Apache Felix (which is an implementation of the OSGi 4.2 framework)

Sort of. Apache Karaf can use Apache Felix. Apache Karaf can also use Equinox or another OSGi runtime. By default, the Apache Karaf standard download does come with Apache Felix.

Apache Aries (which is an implementation of the Blueprint standard)

Again, sort of. The standard download of Apache Karaf does come with Apache Aries by default.

Now let's talk about what OSGI (Apache Felix, Equinox) is and what Apache Karaf is:

OSGI is very simple. You can start an OSGI runtime in your application and not even notice it. The shell, the ability to hot deploy from a folder, install from a maven repo, etc..These are all extras that OSGI doesn't have to do and are provided by additional projects like Karaf, GOGO, or Pax

Now on to Apache Karaf:

It is basically an OSGI environment that provides some additional goodies on top of a standard OSGI implementation. Because Apache Karaf is just built on standard OSGI, it can in theory run on any OSGI runtime. This gives you a uniform interface for working with OSGI runtimes.

Some goodies Apache Karaf provides that you won't see in a Apache Felix without some additional work:

  • Folder based hot deployment
  • A (IMHO) better default console than gogo. (org.apache.karaf.shell)
  • Remote SSH access to that console. (org.apache.karaf.shell.ssh)
  • Centralized Logging System. (org.apache.karaf.log)
  • It has it's own way of provisioning bundles and start levels. (org.apache.karaf.features)
  • Karaf has it's own maven plugins as well.

Pretty much anything here:

http://mvnrepository.com/search.html?query=org.apache.karaf*

I mentioned Karaf having it's own way of provisioning bundles and start levels. Apache Karaf also comes with a bunch of pre-defined ones to get started with. I know Apache Felix comes with some as well, through OBR, but Apache Karaf comes much more 'batteries-included'.