<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!-- 
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 lang="en">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Apache Olingo provides libraries which enable developers to implement OData producers and OData consumers. The available OData Java library implements OData version 2.0. In future on goal is to provide an OData 4.0 compliant library once the OData standard is published at OASIS. The focus within the community is currently on the Java technology but it is up to the community to discuss if other environments find interest.">
    <meta name="author" content="">
    <link rel="icon" href="/favicon.ico">
    <title>Apache Olingo Library</title>
    <!-- Bootstrap core CSS -->
    <link href="/css/bootstrap.css" rel="stylesheet" type="text/css"><!-- Custom styles for this template -->
    <link href="/css/navbar.css" rel="stylesheet" type="text/css"><!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
    <link href="/css/offcanvas.css" rel="stylesheet" type="text/css"><!-- Custom styles for this template -->
    <link rel="stylesheet" href="/css/main.css">
    <!--[if lt IE 9]><script src="/js/ie8-responsive-file-warning.js"></script><![endif]-->
    <style>
.headerlink {
  visibility: hidden;
}
dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
  visibility: visible
}    </style>
    <script src="/js/ie-emulation-modes-warning.js" type="text/javascript">
</script><!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->

    <script src="/js/ie10-viewport-bug-workaround.js" type="text/javascript">
</script><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="/js/html5shiv.min.js"></script>
      <script src="/js/respond.min.js"></script>
    <![endif]-->
  </head>

  <body>
    <div class="container">
      <!-- Static navbar -->
      <div class="navbar navbar-default" role="navigation">
        <div class="container-fluid">
          <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
              <span class="sr-only">Toggle navigation</span>
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
            </button>
              <img class="navbar-brand" src="/img/OlingoOrangeTM.png" style="width:62px;" >
              <a class="navbar-brand" href="/">Apache Olingo™</a>
          </div>
          <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
              <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
                  <ul class="dropdown-menu">
                      <li><a href="http://www.apache.org/foundation/">ASF Home</a></li>
                      <li><a href="http://projects.apache.org/">Projects</a></li>
                      <li><a href="http://people.apache.org/">People</a></li>
                      <li><a href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a></li>
                      <li><a href="http://www.apache.org/dyn/closer.cgi">Download</a></li>
                      <li><a href="http://www.apache.org/security/">Security</a></li>
                      <li><a href="http://www.apache.org/foundation/sponsorship.html">Support Apache</a></li>
                  </ul>
              </li>

              <li><a href="http://www.apache.org/licenses/">License</a></li>

              <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Download <b class="caret"></b></a>
                  <ul class="dropdown-menu">
                      <li><a href="/doc/odata2/download.html">Download OData 2.0 Java</a></li>
                      <li><a href="/doc/odata4/download.html">Download OData 4.0 Java</a></li>
                      <li><a href="/doc/javascript/download.html">Download OData 4.0 JavaScript</a></li>
                  </ul>
              </li>

              <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
                  <ul class="dropdown-menu">
                    <li><a href="/doc/odata2/index.html">Documentation OData 2.0 Java</a></li>
                    <li><a href="/doc/odata4/index.html">Documentation OData 4.0 Java</a></li>
                    <li><a href="/doc/javascript/index.html">Documentation OData 4.0 JavaScript</a></li>
                  </ul>
              </li>
              <li><a href="/support.html">Support</a></li>
              <li><a href="/contribute.html">Contribute</a></li>

            </ul>

			  <a class="navbar-right" href="http://www.apache.org/foundation/" target="_blank">
          <img class="navbar-right" height="50px" src="/img/asf_logo_url.svg" alt="Apache Software Foundation">
        </a>

			</div><!--/.nav-collapse -->
        </div><!--/.container-fluid -->
      </div><!-- Main component for a primary marketing message or call to action -->
    <h1 id="download-odata-20-java-library">Download OData 2.0 Java Library<a class="headerlink" href="#download-odata-20-java-library" title="Permalink">&para;</a></h1>
<p>Apache Olingo OData2 is a collection of Java libraries for
implementing <a href="https://odata.org">OData V2</a> protocol clients or servers.</p>
<h3 id="release-2011-2019-02-16">Release 2.0.11 (2019-02-16)<a class="headerlink" href="#release-2011-2019-02-16" title="Permalink">&para;</a></h3>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314520&amp;version=12342435">Release notes</a></p>
<p>The Apache Olingo OData2 2.0.11 release is a patch release.</p>
<h3 id="commodity-packages">Commodity Packages<a class="headerlink" href="#commodity-packages" title="Permalink">&para;</a></h3>
<p>The <strong>Olingo Library Core</strong> packages contains the <em>API</em>, the <em>implementation</em>, the <em>documentation as JavaDoc</em> and the <em>Reference Scenario</em>.
The <em>API</em> and the according <em>implementation</em> can be used in a <em>production</em> environment.
The Reference Scenario is a sample and <strong>shall not be used in a production</strong> environment.
The <em>Core Library</em> is developed for production environment usage in business scenarios.</p>
<table class="table">
<thead>
<tr>
<th>Package</th>
<th>zip</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Olingo OData2 Library</td>
<td><a href="https://www.apache.org/dyn/closer.lua/olingo/odata2/2.0.11/olingo-odata2-dist-lib-2.0.11-lib.zip">Download</a> (<a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-lib-2.0.11-lib.zip.sha512">sha512</a>, <a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-lib-2.0.11-lib.zip.asc">pgp</a>)</td>
<td>All you need to implement an OData V2 client or server.</td>
</tr>
<tr>
<td>Olingo OData2 Sources</td>
<td><a href="https://www.apache.org/dyn/closer.lua/olingo/odata2/2.0.11/olingo-odata2-parent-2.0.11-source-release.zip">Download</a> (<a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-parent-2.0.11-source-release.zip.sha512">sha512</a>, <a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-parent-2.0.11-source-release.zip.asc">pgp</a>)</td>
<td>Olingo OData2 source code.</td>
</tr>
<tr>
<td>Olingo OData2 Docs</td>
<td><a href="https://www.apache.org/dyn/closer.lua/olingo/odata2/2.0.11/olingo-odata2-dist-javadoc-2.0.11-javadoc.zip">Download</a> (<a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-javadoc-2.0.11-javadoc.zip.sha512">sha512</a>, <a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-javadoc-2.0.11-javadoc.zip.asc">pgp</a>)</td>
<td>Documentation and JavaDoc.</td>
</tr>
<tr>
<td>Olingo OData2 Reference Scenario</td>
<td><a href="https://www.apache.org/dyn/closer.lua/olingo/odata2/2.0.11/olingo-odata2-dist-ref-2.0.11-ref.zip">Download</a> (<a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-ref-2.0.11-ref.zip.sha512">sha512</a>, <a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-ref-2.0.11-ref.zip.asc">pgp</a>)</td>
<td>Deployable WAR files with reference scenario services using <a href="https://cxf.apache.org">Apache CXF</a>.</td>
</tr></tbody></table>
<h5 id="extension-packages">Extension Packages<a class="headerlink" href="#extension-packages" title="Permalink">&para;</a></h5>
<p>The <strong>Olingo Library Extension</strong> packages contains extensions which are provided from various contributors in the context of the Olingo open source project.
The extensions provides convenience for easier consumption or creation of an OData service like the <em>JPA based processor</em>, the <em>Java Annotation based processor</em> or the <em>Spring Framework integration</em>.
However the extensions are <em>not optimized regarding performance or extensibility</em>.
Interested parties can use the extensions, if they are sufficient for their scenarios in a production environment.
Feature enhancements or optimizations of the extensions have to be done by the interested parties itself.</p>
<table class="table">
<thead>
<tr>
<th>Package</th>
<th>zip</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Olingo OData2 JPA Processor</td>
<td><a href="https://www.apache.org/dyn/closer.lua/olingo/odata2/2.0.11/olingo-odata2-dist-jpa-2.0.11-jpa.zip">Download</a> (<a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-jpa-2.0.11-jpa.zip.sha512">sha512</a>, <a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-jpa-2.0.11-jpa.zip.asc">pgp</a>)</td>
<td>All you need to expose your JPA model as OData service.</td>
</tr>
<tr>
<td>Olingo OData2 Java Annotation Processor</td>
<td><a href="https://www.apache.org/dyn/closer.lua/olingo/odata2/2.0.11/olingo-odata2-dist-janos-2.0.11-janos.zip">Download</a> (<a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-janos-2.0.11-janos.zip.sha512">sha512</a>, <a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-dist-janos-2.0.11-janos.zip.asc">pgp</a>)</td>
<td>Use Java Annotations to create a simple OData service for e.g. test cases (without persistence).</td>
</tr>
<tr>
<td>Olingo OData2 Spring Extension Sources</td>
<td><a href="https://www.apache.org/dyn/closer.lua/olingo/odata2/2.0.11/olingo-odata2-spring-2.0.11-source-release.zip">Download</a> (<a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-spring-2.0.11-source-release.zip.sha512">sha512</a>, <a href="https://www.apache.org/dist/olingo/odata2/2.0.11/olingo-odata2-spring-2.0.11-source-release.zip.asc">pgp</a>)</td>
<td>Support for use of OData library in Spring context.</td>
</tr></tbody></table>
<h3 id="maven">Maven<a class="headerlink" href="#maven" title="Permalink">&para;</a></h3>
<p>Apache Olingo OData2 artifacts for latest version at <a href="https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.olingo%22%20AND%20v%3A%222.0.11%22">Maven Central</a>.
For POM dependencies see <a href="/doc/odata2/maven.html">here</a>.</p>
<p>All other Apache Olingo artifacts are also available at <a href="https://search.maven.org/#search%7Cga%7C1%7Corg.apache.olingo">Maven Central</a>.</p>
<h3 id="older-releases">Older Releases<a class="headerlink" href="#older-releases" title="Permalink">&para;</a></h3>
<p>For older releases please refer to <a href="https://archive.apache.org/dist/olingo/">Archives</a>
or you can get them <a href="/doc/odata2/maven.html">using Maven</a>.</p>
<h3 id="verify-authenticity-of-downloads-package">Verify Authenticity of Downloads package<a class="headerlink" href="#verify-authenticity-of-downloads-package" title="Permalink">&para;</a></h3>
<p>While downloading the packages, make yourself familiar
on how to verify their integrity, authenticity and provenience
according to the Apache Software Foundation best practices.
Please make sure you check the following resources:</p>
<ul>
<li><a href="/verification.html">Artifact verification</a> details</li>
<li>Developers and release managers PGP keys are publicly available here: <a href="https://downloads.apache.org/olingo/KEYS">KEYS</a>.</li>
</ul>

      <div align="center">
	<p>Copyright © 2013-2022, The Apache Software Foundation<br>
				                Apache Olingo, Olingo, Apache, the Apache feather, and
				the Apache Olingo project logo are trademarks of the Apache Software
				Foundation.</p>
        <small><a href="/doc/odata2/privacy.html">Privacy</a></small>
      </div>
    </div><!-- /container -->
    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="/js/jquery.js" type="text/javascript">
    </script>
    <script src="/js/bootstrap.js" type="text/javascript">
    </script>
    <script src="/js/offcanvas.js" type="text/javascript">
    </script>
    <link rel="stylesheet" href="/css/docco.css">
    <script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.0.1/build/highlight.min.js"></script>
    <script>hljs.highlightAll();</script>
  </body>
</html>