<!--
 ▄▄▄       ██▓███   ▄▄▄       ▄████▄   ██░ ██ ▓█████     ██▓  ▄████  ███▄    █  ██▓▄▄▄█████▓▓█████
▒████▄    ▓██░  ██▒▒████▄    ▒██▀ ▀█  ▓██░ ██▒▓█   ▀    ▓██▒ ██▒ ▀█▒ ██ ▀█   █ ▓██▒▓  ██▒ ▓▒▓█   ▀
▒██  ▀█▄  ▓██░ ██▓▒▒██  ▀█▄  ▒▓█    ▄ ▒██▀▀██░▒███      ▒██▒▒██░▄▄▄░▓██  ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█  ▄    ░██░░▓█  ██▓▓██▒  ▐▌██▒░██░░ ▓██▓ ░ ▒▓█  ▄
 ▓█   ▓██▒▒██▒ ░  ░ ▓█   ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒   ░██░░▒▓███▀▒▒██░   ▓██░░██░  ▒██▒ ░ ░▒████▒
 ▒▒   ▓▒█░▒▓▒░ ░  ░ ▒▒   ▓▒█░░ ░▒ ▒  ░ ▒ ░░▒░▒░░ ▒░ ░   ░▓   ░▒   ▒ ░ ▒░   ▒ ▒ ░▓    ▒ ░░   ░░ ▒░ ░
  ▒   ▒▒ ░░▒ ░       ▒   ▒▒ ░  ░  ▒    ▒ ░▒░ ░ ░ ░  ░    ▒ ░  ░   ░ ░ ░░   ░ ▒░ ▒ ░    ░     ░ ░  ░
  ░   ▒   ░░         ░   ▒   ░         ░  ░░ ░   ░       ▒ ░░ ░   ░    ░   ░ ░  ▒ ░  ░         ░
      ░  ░               ░  ░░ ░       ░  ░  ░   ░  ░    ░        ░          ░  ░              ░  ░
-->

<!--
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.
-->

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
    <title>Apache Ignite</title>
    <link media="all" rel="stylesheet" href="css/all.css">
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic' rel='stylesheet' type='text/css'>
</head>
<body>
<div id="wrapper">
    <!--#include virtual="/includes/header.html" -->

    <main id="main" role="main" class="container">

        <section id="news" class="page-section">
            <h2 class="first">Ignite News</h2>
            <div class="col-sm-12 col-md-12 col-xs-12" style="padding-left: 0; padding-right: 0;">
                <div class="col-sm-12 col-md-12 col-xs-12" style="padding-left: 0; padding-right: 20px;">
                    <section id="ignite-extensions" class="page-section news-section">
                        <h3>Ignite Adds Add-ons</h3>
                        <span class="news-date">February 17, 2016</span>
                        <p>
                            <a href="/extensions.html">Add-ons</a> has been added to the website for projects built on top of Ignite. These projects intend to make user experience with Ignite easier. Currently, there are two such projects available -
                            <a href="https://github.com/sumeet70/aiex" target="_blank">Apache Ignite Extensions</a> and <a href="https://console.gridgain.com" target="_blank">GridGain Web Console</a>.<br/><br/>
                            <a href="/addons.html" target="_blank">Read More</a>
                        </p>
                    </section>

                    <section id="blog-a-universal-streamer-for-apache-ignite-based-on-apache-camel" class="page-section news-section">
                        <h3>A Universal Streamer for Apache Ignite based on Apache Camel</h3>
                        <span class="news-date">Blog, Raúl Kripalani</span><br/><br/>
                        <span class="news-date">January 28, 2016</span>
                        <p>
                            Apache Ignite has the concept of Data Streamers: components to ingest fast data in a
                            streaming fashion into an Ignite cache from a variety of protocols, technologies or
                            platforms, such as JMS, MQTT, Twitter, Flume, Kafka, etc. However, with Apache Ignite 1.5.0
                            we released the jack of all trades: an Apache Camel streamer.</br></br>
                            <a href="http://raul.io/a-universal-streamer-for-apache-ignite-based-on-apache-camel/" target="_blank">Read More</a>
                        </p>
                    </section>

                    <section id="release-1.5.0.final" class="page-section news-section">
                        <h3>Apache Ignite 1.5.0.final Released</h3>
                        <span class="news-date">January 4, 2016</span>
                        <p>
                            This final version of 1.5.0 includes support for .NET and C++, Streamer for MQTT, Twitter, Apache Flume, and Apache Camel,
                            OSGi support, "deadlock-free" transactions, compact binary protocol, performance improvements for SQL queries, transactions, and more.<br/><br/>
                            <a href="/download.cgi" target="_blank">Download Ignite 1.5.0.final</a>
                        </p>
                    </section>

                    <section id="blog-getting-started-with-apache-ignite" class="page-section news-section">
                        <h3>Getting Started With Apache Ignite</h3>
                        <span class="news-date">Blog, Prachi Garg</span><br/><br/>
                        <span class="news-date">December 19, 2015</span>
                        <p>
                            This tutorial shows you how to create a simple "Hello World" example in Apache Ignite.</br></br>
                            <a href="https://dzone.com/articles/getting-started-with-apache-ignite" target="_blank">Read More</a>
                        </p>
                    </section>

                    <section id="release-1.5.0-b1" class="page-section news-section">
                        <h3>Apache Ignite 1.5.0-b1 Early Access Released</h3>
                        <span class="news-date">December 12, 2015</span>
                        <p>
                            This early access version includes support for .NET and C++, Streamer for MQTT, Twitter, and Apache Flume,
                            compact binary protocol, performance improvements for SQL queries, transactions, and more.<br/><br/>
                            <a href="/download.cgi" target="_blank">Download Ignite 1.5.0-b1</a>
                        </p>
                    </section>

                    <section id="release-1.4.0" class="page-section news-section">
                        <h3>Apache Ignite 1.4.0 Released</h3>
                        <span class="news-date">September 28, 2015</span>
                        <p>
                            This is the first Apache Ignite release since the project graduated from incubation in
                            August, 2015. This new release includes SSL support to communication and discovery, support for log4j2, significantly faster JDBC driver implementation,
                            fixes for SQL queries group index logic, auto-retries for cache operations in recoverable cases and more.<br/><br/>
                            <a href="/download.cgi" target="_blank">Download Ignite 1.4.0</a>
                        </p>
                    </section>

                    <section id="graduation" class="page-section news-section">
                        <h3>Apache Ignite Graduated to a Top-Level Project</h3>
                        <span class="news-date">August 25, 2015</span>
                        <p>
                            The Apache Software Foundation (ASF), the all-volunteer developers, stewards, and incubators of more than 350
                            Open Source projects and initiatives, announced today that Apache™ Ignite™ has graduated from the Apache Incubator
                            to become a Top-Level Project (TLP), signifying that the project's community and products have been well-governed
                            under the ASF's meritocratic process and principles.</br></br>
                            <a href="http://globenewswire.com/news-release/2015/08/25/763148/10146997/en/The-Apache-Software-Foundation-Announces-Apache-tm-Ignite-tm-as-a-Top-Level-Project.html" target="_blank">Read More</a>
                        </p>
                    </section>

                    <section id="blog-processing-geographically-distributed-transactions" class="page-section news-section">
                        <h3>How Apache Ignite Processes Geographically Distributed Transactions</h3>
                        <span class="news-date">Blog, Yakov Zhdanov</span><br/><br/>
                        <span class="news-date">July 22, 2015</span>
                        <p>
                            Imagine a bank offering variety of services to its customers. The customers of the bank are
                            located in different geo-zones (regions), and most of the operations performed by a customer are zone-local,
                            like ATM withdrawals or bill payments... However, some operations, such as wire transfers for example,
                            may affect customers across different zones. Cross-zone operations are not as frequent, but nevertheless
                            need to be supported in a transactional fashion as well.</br></br>
                            <a href="https://dzone.com/articles/how-apache-ignite-helped-a-large-bank-process-geog-1" target="_blank">Read More</a>
                        </p>
                    </section>

                    <section id="release-1.3.0" class="page-section news-section">
                        <h3>Apache Ignite 1.3.0 Released</h3>
                        <span class="news-date">July 21, 2015</span>
                        <p>
                            This new release includes integration with Apache YARN for data center and resource
                            management, fixes for JTA transactions, Hibernate L2 Cache improvements, and more.<br/><br/>
                            <a href="/download.cgi" target="_blank">Download Ignite 1.3.0</a>
                        </p>
                    </section>

                    <section id="release-1.2.0" class="page-section news-section">
                        <h3>Apache Ignite 1.2.0 Released</h3>
                        <span class="news-date">June 29, 2015</span>
                        <p>
                            This new release includes shared RDD for Apache Spark (based on Ignite Data Grid),
                            integration with Apache Mesos for data center management, client-mode for light-weight
                            cluster discovery, memory-size eviction policy, and more.<br/><br/>
                            <a href="/download.cgi" target="_blank">Download Ignite 1.2.0</a>
                        </p>
                    </section>

                    <section id="blog-ignite-vs-hazelcast-2" class="page-section news-section">
                        <h3>Benchmarking Data Grids: Apache Ignite vs Hazelcast, Part II</h3>
                        <span class="news-date">Dmitriy Setrakyan</span><br/><br/>
                        <span class="news-date">May 19, 2015</span>
                        <p>
                            In my previous post I have demonstrated benchmarks for atomic JCache (JSR 107)
                            operations and optimistic transactions between Apache Ignite data grid and Hazelcast.
                            In this blog I will focus on benchmarking the pessimistic transactions.</br></br>
                            <a href="http://gridgain.blogspot.com/2015/05/benchmarking-data-grids-apache-ignite.html" target="_blank">Read More</a>
                        </p>
                    </section>

                    <section id="blog-ignite-vs-hazelcast-1" class="page-section news-section">
                        <h3>Benchmarking Data Grids: Apache Ignite vs Hazelcast, Part I</h3>
                        <span class="news-date">Blog, Dmitriy Setrakyan</span><br/><br/>
                        <span class="news-date">April 14, 2015</span>
                        <p>
                            Recently I have been doing many benchmarks comparing the Apache
                            Ignite project to other products. In this blog I will describe my experience in comparing
                            basic cache operations for Apache Ignite Data Grid vs Hazelcast Data Grid.</br></br>
                            <a href="http://gridgain.blogspot.com/2015/04/benchmarking-data-grids-apache-ignite.html" target="_blank">Read More</a>
                        </p>
                    </section>

                    <section id="release-1.1.0" class="page-section news-section">
                        <h3>Apache Ignite 1.1.0 Released</h3>
                        <span class="news-date">May 28, 2015</span>
                        <p>
                            This new release includes Google Compute Engine and generic cloud TCP discovery IP finder, "Collocated" mode for SQL queries,
                            support for (*) star notation in cache names, fix for SQL union support, and more.<br/><br/>
                            <a href="/download.cgi" target="_blank">Download Ignite 1.1.0</a>
                        </p>
                    </section>

                    <section id="release-1.0.0" class="page-section news-section">
                        <h3>Apache Ignite 1.0.0 Released</h3>
                        <span class="news-date">April 2, 2015</span>
                        <p>
                            This new release includes dynamic caching functionality to start and stop caches during runtime,
                            simplified Query API, automatic aggregation, grouping and sorting support for SQL Queries,
                            Streaming examples, and more.<br/><br/>
                            <a href="/download.cgi" target="_blank">Download Ignite 1.0.0</a>
                        </p>
                    </section>

                    <section id="release-1.0.0-RC3" class="page-section news-section">
                        <h3>Apache Ignite 1.0.0-RC3 Released</h3>
                        <span class="news-date">March 24, 2015</span>
                        <p>
                            This is the first release of Apache Ignite project. The source code in large part is based
                            on the GridGain In-Memory Data Fabric, open source edition, v. 6.6.2, which was donated to Apache Software Foundation.
                            The main feature set of Ignite In-Memory Data Fabric includes:
                        </p>
                        <ul class="page-list">
                            <li>Advanced Clustering</li>
                            <li>Compute Grid</li>
                            <li>Data Grid</li>
                            <li>Service Grid</li>
                            <li>IGFS - Ignite File System</li>
                            <li>Distributed Data Structures</li>
                            <li>Distributed Messaging</li>
                            <li>Distributed Events</li>
                            <li>Streaming & CEP</li>
                        </ul>
                        <p>
                            <a href="/download.cgi" target="_blank">Download Ignite 1.0.0-RC3</a>
                        </p>
                    </section>

                    <section id="nikita-incubation" class="page-section news-section">
                        <h3>InfoQ Interview with Nikita Ivanov on Apache Ignite Incubation</h3>
                        <span class="news-date">December 3, 2014</span>
                        <p>
                            InfoQ caught up with Nikita Ivanov, CTO and founder of GridGain, about the
                            In-Memory Computing framework becoming an Apache project, motivation behind this decision,
                            and upcoming features and enhancements of GridGain.<br/><br/>
                            <a href="http://www.infoq.com/articles/gridgain-apache-ignite" target="_blank">Read More</a>
                        </p>
                    </section>

                    <section id="enter-incubation" class="page-section news-section">
                        <h3>Apache Ignite Enters Incubation</h3>
                        <span class="news-date">October 1, 2014</span>
                        <p>
                            GridGain recently announced that the GridGain In-Memory Data Fabric has been accepted
                            into the Apache Incubator program under the name "Apache Ignite." Earlier in 2014, GridGain was
                            transformed to an open source model through Apache 2.0 license. Now, the product will be available
                            under the Apache Foundation project portfolio.</br></br>
                            <a href="http://www.infoq.com/news/2014/12/gridgain-ignite" target="_blank">Read More</a>
                        </p>
                    </section>
                </div>
                <!--<div class="col-sm-3 col-md-3 col-xs-12 testimonials">-->
                    <!--<h4>What They Say...</h4>-->
                    <!--<ul>-->
                        <!--<li>"After evaluating several solutions, we chose the GridGain In-Memory Data Fabric because it was the most advanced solution meeting one hundred percent of our needs."<br/>-->
                            <!--<span class="credits">- Jeremy Knudsen, CTO<br/>-->
                            <!--Experticity</span>-->
                        <!--</li>-->
                        <!--<li>-->
                            <!--"I keep learning about additional capabilities GridGain offers. It’s what I expected and more."-->
                           <!--<br/>-->
                             <!--<span class="credits">-Igor Shpitalnik, CTO<br/>-->
                            <!--Cyber Dust</span>-->
                        <!--</li>-->
                        <!--<li>-->
                            <!--The GridGain solution was up and running within a week and has worked very well from the first weekend. That’s saying a lot since it was done right before our heaviest weekend — Thanksgiving — a really busy race weekend."<br/>-->
                            <!--<span class="credits">- Ilya Sterin,-->
                            <!--Senior Director of Engineering<br/>-->
                            <!--ChronoTrack</span>-->
                        <!--</li>-->
                    <!--</ul>-->
                <!--</div>-->
            </div>
        </section>
    </main>

    <!--#include virtual="/includes/footer.html" -->
</div>
<!--#include virtual="/includes/scripts.html" -->
<!--
<script type="text/javascript" src="js/jquery.main.js"></script>
-->
</body>
</html>
