//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

== Overview

Apache Karaf is a OSGi-based runtime which provides a lightweight container onto which various components and applications can be deployed.

Apache Karaf uses either Apache Felix Framework or Eclipse Equinox OSGi frameworks, and provide additional features on top of the framework.

Apache Karaf can be scaled from a very lightweight container to a fully features enterprise service: it's a very flexible and extensible container, covering all the major needs.

Here is a short list of provided features:

* *Hot deployment*: simply drop a file in the `deploy` directory, Apache Karaf will detect the type of the file and
 try to deploy it.
* *Complete Console*: Apache Karaf provides a complete Unix-like console where you can completely manage the container.
* *Dynamic Configuration*: Apache Karaf provides a set of command dedicated for the management of the configuration files.
 All configuration files are centralized in the `etc` folder. Any change in a configuration file is taken on the fly.
* *Advanced Logging System*: Apache Karaf supports a large set of Logging framework (slf4j, log4j, etc). Whatever the
 logging framework you use, Apache Karaf centralizes the configuration in one file.
* *Provisioning*: Apache Karaf supports a large set of URL where you can install your application (Maven repository, HTTP,
 file, etc). It also provides the concept of "Karaf Feature" which is a way to describe your application.
* *Management*: Apache Karaf is an enterprise-ready container, providing a lot of management indicators and operations
 via JMX.
* *Remote*: Apache Karaf embeds an SSHd server allowing you to use the console remotely. The management layer is also
 accessible remotely.
* *Security*: Apache Karaf provides a complete security framework (based on JAAS), and providing RBAC (Role-Based Access
 Control) mechanism for console and JMX.
* *Instances*: multiple instances of Apache Karaf can be managed directly from a main instance (root).
* *OSGi frameworks*: Apache Karaf is not tight to one OSGi framework. By default, Apache Karaf runs with Apache Felix
 Framework, but you can easily switch to Equinox (just change on property in a configuration file).

image::karaf.png[]


