
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.
  Architecture
-->
<html lang="en">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    <meta content="ActiveMQ's next generation of messaging" name="description"/>
    <meta content="messaging,stomp,jms,activemq" name="keywords"/>
    <meta content="ActiveMQ" name="author"/>
    <link type="text/css" rel="stylesheet" href="styles/impact/css/pygmentize.css"/>
    <link type="text/css" rel="stylesheet" href="styles/impact/css/site.css"/>

    <style type='text/css'>
        /* <![CDATA[ */
        .download {
            font-size: 80%;
        }
        table.download { width: 100%;}
        table.download tr td {
            border: 1px solid #ccc;
            padding: .5em;
        }
        /* ]]> */
    </style>

    <title>ActiveMQ Artemis</title>
</head>
<body>
<div id="navigation">
    <div class="wrapper">
        <ul>
            <li><a href="index.html">ActiveMQ Artemis</a></li>
            <li><a href="docs.html">Documentation</a></li>
            <li><a href="download.html">Download</a></li>
        </ul>
    </div>
</div>
<div id="overview">
    <div class="wrapper">
        <div class="logo">
            <img src="images/activemq-logo.png" alt="ActiveMQ logo"/>
        </div>
        <div class="message">
            <h1>ActiveMQ Artemis</h1>
        </div>
    </div>
</div>
<div id="content">
    <div class="wrapper">
        <p>The documentation is available in several formats, click on the relevant version to view or download.</p>
    </div>
    <div class="wrapper">
        <h2>Latest User Documentation:</h2>
        <ul>
            <li><a href="./docs/latest/index.html">HTML</a></li>
            <li><a href="./docs/latest/book.pdf">PDF</a></li>
            <li><a href="./docs/latest/book.epub">EPUB</a></li>
            <li><a href="./docs/latest/book.mobi">MOBI</a></li>
        </ul>

        <h2>Hacking Guide</h2>
        <ul>
            <li><a href="./docs/latest/hacking-guide/index.html">HTML</a></li>
            <li><a href="./docs/latest/hacking-guide/book.pdf">PDF</a></li>
        </ul>
        <h2>API</h2>
        <ul>
            <li><a href="./docs/javadocs/javadoc-latest/index.html">HTML</a></li>
        </ul>

        <h2><a href="previous-docs.html">Previous Versions</a></h2>
    </div>
</div>
</body>
</html>

