<!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>2.2. Prerequisites - 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><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.2.0/index.html">Qpid Broker-J 9.2.0</a></li><li><a href="/releases/qpid-broker-j-9.2.0/book/index.html">Apache Qpid Broker-J</a></li><li>2.2. Prerequisites</li></ul>

        <div id="-middle-content">
          <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.2. Prerequisites</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Installation.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Installation</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Installation-Download.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Java-Broker-Installation-Prerequistes"></a>2.2. Prerequisites</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Installation-Prerequistes-Java"></a>2.2.1. Java Platform</h3></div></div></div><p> The Apache Qpid Broker-J is an 100% Java implementation and as such it can be used on any
        operating system supporting Java 11 or higher<a href="#ftn.d0e97" class="footnote" id="d0e97"><sup class="footnote">[3]</sup></a>. This includes Linux,
        Solaris, Mac OS X, and Windows 7/8/10 etc.</p><p> The broker has been tested with Java implementations from both Oracle and IBM. Whatever
        platform you chose, it is recommended that you ensure it is patched with any critical
        updates made available from the vendor. </p><p> Verify that your JVM is installed properly by following <a class="link" href="Java-Broker-Miscellaneous.html#Java-Broker-Miscellaneous-JVM-Verification" title="F.1. JVM Installation verification">these instructions.</a>
      </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Installation-Prerequistes-Disk"></a>2.2.2. Disk</h3></div></div></div><p>The Broker installation requires approximately 20MB of free disk space.</p><p>The Broker also requires a working directory. The working directory is used for the
        message store, that is, the area of the file-system used to record messages
        whilst they are passing through the Broker. The working directory is also used for the
        default location of the log file. The size of the working directory will depend on the how
        the Broker is used.</p><p>The performance of the file system hosting the work directory is key to the performance
        of Broker as a whole. For best performance, choose a device that has low latency and one
        that is uncontended by other applications.</p><p>Be aware that there are additional considerations if you are considering hosting the
        working directory on NFS.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Installation-Prerequistes-Memory"></a>2.2.3. Memory</h3></div></div></div><p>Qpid caches messages in memory for performance reasons, so in general, the Broker will
        benefit from as much memory as possible. However, on a 32bit JVM, the maximum addressable
        memory range for a process is 4GB, after leaving space for the JVM's own use this will give
        a maximum usable size of approximately ~3.7GB.</p><p>See <a class="xref" href="Java-Broker-Runtime-Memory.html" title="9.11. Memory">Section 9.11, “Memory”</a> for a full description of how memory is
        used.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Installation-Prerequistes-OperatingSystemAccount"></a>2.2.4. Operating System Account</h3></div></div></div><p>Installation or operation of Qpid does <span class="emphasis"><em>not</em></span> require a privileged
        account (i.e. root on UNIX platforms or Administrator on Windows). However it is suggested
        that you use an dedicated account (e.g. qpid) for the installation and operation of the Broker.</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.d0e97" class="footnote"><p><a href="#d0e97" class="para"><sup class="para">[3] </sup></a>Java Cryptography Extension (JCE)
        Unlimited Strength extension must be installed or enabled for some features.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Installation.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Installation.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Installation-Download.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Installation </td><td width="20%" align="center"><a accesskey="h" href="Apache-Qpid-Broker-J-Book.html">Home</a></td><td width="40%" align="right" valign="top"> 2.3. Download</td></tr></table></div></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>
