h1. Installation
Before we can start working with Apache ServiceMix, we have to get it installed and running on our local machine first.

h2. System requirements
* Java Developer Kit (JDK) 1.6.x (Java 6), for both deployment and compiling. \\ (Note: Java 7 is currently not supported)
* About 100 MB of free disk space

h2. Downloading Apache ServiceMix

Apache ServiceMix ${servicemix.version} is available under the Apache License v2 and can be downloaded from [http://servicemix.apache.org/download.html].

Depending on your operation system, you should download either the tar.gz or the zip file:
* tar.gz for Linux/Unix/MacOS X
* zip for Windows

h2. Installing Apache ServiceMix

Installing Apache ServiceMix is as simple as uncompressing the downloaded archive on your hard disk.  For the rest of this guide, we'll refer to the this location as *{{<SERVICEMIX_HOME>}}*.

h2. Starting Apache ServiceMix

Depending on your platform, start Apache ServiceMix by following the instructions below.  After starting the container, you will have access to the console from which you can manage the container.

h3. On Windows
In a command prompt window, navigate to the directory where you extracted ServiceMix and run the {{bin\servicemix.bat}} file.

Example: if ServiceMix in installed in the {{c:\tools\apache-servicemix-${servicemix.version}}} directory
{pygmentize:lang=bat}
> cd c:\tools\apache-servicemix-${servicemix.version}
> .\bin\servicemix
{pygmentize}

!/quickstart/images/start-windows.png!

h3. On Linux/Unix/MacOS X
On a command shell, navigate to the directory where you extracted ServiceMix and the {{bin/servicemix}} shell script

Example: if ServiceMix is installed in the {{~/Applications/apache-servicemix-${servicemix.version}}} directory.
{pygmentize:lang=bash}
$ cd ~/Applications/apache-servicemix-${servicemix.version}
$ ./bin/servicemix
{pygmentize}

!/quickstart/images/start-linux.png|width=75%|height=75%!