<!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">
      <h2 id="release-notes---apache-activemq-artemis-1.4.0">Release Notes - Apache ActiveMQ Artemis 1.4.0</h2>
    </div>
    <div class="wrapper">
      <p>A complete list of JIRAs for the 1.4.0 release can be found at the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12336052">Apache ActiveMQ Artemis project JIRA</a></p>
      <p>Apache ActiveMQ Artemis 1.4.0 has introduced several new additions, such as:</p>
         <ul>
           <li><a href="https://issues.apache.org/jira/browse/ARTEMIS-607">Interceptors on the MQTT Protocol</a></li>
           <li><a href="https://issues.apache.org/jira/browse/ARTEMIS-601">Reload configuration support</a></li>
           <li><a href="https://issues.apache.org/jira/browse/ARTEMIS-581">Global size Paging and Producer's flow control when disk full</a></li>
           <li>Improved support on AMQP and STOMP</li>
        </ul>
        <p>There has also been a number of improvements around stability, performance and HA.</p>
    </div>
</div>
</body>
</html>
