<!DOCTYPE html>
<!--
 -
 - 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.
 -
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Qpid Proton - Apache Qpid&#8482;</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
    <script type="text/javascript">var _deferredFunctions = [];</script>
    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
    <!--[if lte IE 8]>
      <link rel="stylesheet" href="/ie.css" type="text/css"/>
      <script type="text/javascript" src="/html5shiv.js"></script>
    <![endif]-->

    <!-- Redirects for `go get` and godoc.org -->
    <meta name="go-import"
          content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
    <meta name="go-source"
          content="qpid.apache.org
https://github.com/apache/qpid-proton/blob/go1/README.md
https://github.com/apache/qpid-proton/tree/go1{/dir}
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
  </head>
  <body>
    <div id="-content">
      <div id="-top" class="panel">
        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>

        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>

        <ul id="-global-navigation">
          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
          <li><a href="/documentation.html">Documentation</a></li>
          <li><a href="/download.html">Download</a></li>
          <li><a href="/discussion.html">Discussion</a></li>
        </ul>
      </div>

      <div id="-menu" class="panel" style="display: none;">
        <div class="flex">
          <section>
            <h3>Project</h3>

            <ul>
              <li><a href="/overview.html">Overview</a></li>
              <li><a href="/components/index.html">Components</a></li>
              <li><a href="/releases/index.html">Releases</a></li>
            </ul>
          </section>

          <section>
            <h3>Messaging APIs</h3>

            <ul>
              <li><a href="/proton/index.html">Qpid Proton</a></li>
              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
            </ul>
          </section>

          <section>
            <h3>Servers and tools</h3>

            <ul>
              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
            </ul>
          </section>

          <section>
            <h3>Resources</h3>

            <ul>
              <li><a href="/dashboard.html">Dashboard</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
              <li><a href="/resources.html">More resources</a></li>
            </ul>
          </section>
        </div>
      </div>

      <div id="-search" class="panel" style="display: none;">
        <form action="http://www.google.com/search" method="get">
          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
          <button type="submit">Search</button>
          <a href="/search.html">More ways to search</a>
        </form>
      </div>

      <div id="-middle" class="panel">
        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li>Qpid Proton</li></ul>

        <div id="-middle-content">
          <div id="-left-column">

<h1 id="qpid-proton">Qpid Proton</h1>

<div class="feature">

<h2 id="the-amqp-messaging-toolkit">The AMQP messaging toolkit</h2>

<p>Qpid Proton is a high-performance, lightweight messaging library. It
can be used in the widest range of messaging applications, including
brokers, client libraries, routers, bridges, proxies, and more. Proton
makes it trivial to integrate with the AMQP 1.0 ecosystem from any
platform, environment, or language. More about
<a href="/proton/overview.html">Qpid Proton</a>.</p>

</div>

<h2 id="features">Features</h2>

<ul>
<li>A flexible and capable reactive messaging API</li>
<li>Full control of AMQP 1.0 protocol semantics</li>
<li>Portable C implementation with bindings to popular languages</li>
<li>Pure-Java implementation</li>
<li>Peer-to-peer and brokered messaging</li>
<li>Secure communication via SSL and SASL</li>
</ul>

<h2 id="documentation">Documentation</h2>

<div class="two-column">

<ul>
<li><a href="/releases/qpid-proton-0.32.0/proton/c/api/files.html">C API reference</a></li>
<li><a href="/releases/qpid-proton-0.32.0/proton/cpp/api/index.html">C++ introduction</a></li>
<li><a href="/releases/qpid-proton-0.32.0/proton/cpp/api/tutorial_page.html">C++ tutorial</a></li>
<li><a href="/releases/qpid-proton-0.32.0/proton/cpp/examples/index.html">C++ examples</a></li>
<li><a href="/releases/qpid-proton-0.32.0/proton/cpp/api/annotated.html">C++ API reference</a></li>
<li><a href="/releases/qpid-proton-j-0.33.8/api/index.html">Java API reference</a></li>
<li><a href="/releases/qpid-proton-0.32.0/proton/python/docs/overview.html">Python overview</a></li>
<li><a href="/releases/qpid-proton-0.32.0/proton/python/docs/tutorial.html">Python tutorial</a></li>
<li><a href="/releases/qpid-proton-0.32.0/proton/python/examples/index.html">Python examples</a></li>
<li><a href="/releases/qpid-proton-0.32.0/proton/python/docs/index.html">Python API reference</a></li>
<li><a href="https://gitbox.apache.org/repos/asf?p=qpid-proton.git;a=blob_plain;f=INSTALL.md;hb=0.32.0">Installing Qpid Proton</a></li>
</ul>

</div>

</div>

<div id="-right-column">

<h2 id="releases">Releases</h2>

<ul>
<li><a href="/releases/qpid-proton-0.32.0">Qpid Proton 0.32.0</a></li>
<li><a href="/releases/qpid-proton-j-0.33.8">Qpid Proton-J 0.33.8</a></li>
<li><a href="/releases/index.html#past-releases">Past releases</a></li>
<li><a href="/releases/qpid-proton-master/index.html">Work in progress</a> </li>
</ul>

<h2 id="issues">Issues</h2>

<ul>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12313720&amp;issuetype=1&amp;priority=3">Report a bug</a></li>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12313720&amp;issuetype=4&amp;priority=3">Request an improvement</a></li>
<li><form id="-jira-goto-form">Go to issue <input name="jira" value="PROTON-"/></form></li>
<li><a href="https://issues.apache.org/jira/browse/PROTON">JIRA project page</a></li>
</ul>

<h2 id="source-code">Source code</h2>

<ul>
<li>Proton
<ul>
<li><a href="https://github.com/apache/qpid-proton">Browse via GitHub</a></li>
<li><a href="https://gitbox.apache.org/repos/asf/qpid-proton.git">Git clone URL</a></li>
</ul></li>
<li>Proton-J
<ul>
<li><a href="https://github.com/apache/qpid-proton-j">Browse via GitHub</a></li>
<li><a href="https://gitbox.apache.org/repos/asf/qpid-proton-j.git">Git clone URL</a></li>
</ul></li>
</ul>

<h2 id="resources">Resources</h2>

<ul>
<li><a href="security.html">Security</a></li>
<li><a href="security-j.html">Security - Proton-J</a></li>
<li><a href="submitting-patches.html">Contributing to Proton</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/qpid/proton">Proton wiki pages</a></li>
</ul>

</div>


          <hr/>

          <ul id="-apache-navigation">
            <li><a href="http://www.apache.org/">Apache</a></li>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
            <li><a href="/security.html">Security</a></li>
            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
          </ul>

          <p id="-legal">
            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
            The Apache Software Foundation; Licensed under
            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
            Proton, Apache, the Apache feather logo, and the Apache Qpid
            project logo are trademarks of The Apache Software
            Foundation; All other marks mentioned may be trademarks or
            registered trademarks of their respective owners
          </p>
        </div>
      </div>
    </div>
  </body>
</html>
