<!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 Artemis" 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"/>
    <title>ActiveMQ</title>
</head>
<body>
<div id="navigation">
    <div class="wrapper">
        <ul>
            <li><a href="index.html">ActiveMQ Artemis</a></li>
        </ul>        <div></div>
    </div>
</div>
<div id="overview">
    <div class="wrapper">
        <div class="logo">
            <img src="images/artemis-logo.png" alt="Artemis Logo"/>
        </div>
    </div>
</div>
<div id="welcome">
    <div class="wrapper">
        Welcome to ActiveMQ Artemis. To get started you can follow any of the links below to access the manual, examples
        and the main Artemis website.
    </div>
</div>
<div id="content">
    <div class="wrapper">
        <ul>
            <li><a target="_blank" href="api/index.html">API</a></li>
            <li><a target="_blank" href="user-manual/index.html">User Manual</a></li>
            <li><a target="_blank" href="hacking-guide/index.html">Hacking Guide</a></li>
            <li><a href="examples/index.html">Examples</a></li>
            <li><a href="http://activemq.apache.org/artemis/">Apache ActiveMQ Artemis Website</a></li>
        </ul>
        <div></div>
    </div>
</div>
</body>
</html>
