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

<!--
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="pitfalls-of-the-mybatis-caches-with-apache-ignite" class="page-section news-section">
                        <h3>Pitfalls of the MyBatis Caches With Apache Ignite</h3>
                        <span class="news-date">Blog, Shamim Bhuiyan</span><br/><br/>
                        <span class="news-date">March 09, 2016</span>
                        <p>
                            A tutorial on how to look at cache entries in Apache Ignite.</br></br>
                            <a href="https://dzone.com/articles/pitfalls-of-the-mybatis-caches-with-apache-ignite" target="_blank">Read More</a>
                        </p>
                    </section>

                    <section id="blog-linking-apache-ignite-and-apache-kafka-for-highly" class="page-section news-section">
                        <h3>Linking Apache Ignite and Apache Kafka for Highly Scalable and Reliable Data Processing</h3>
                        <span class="news-date">Blog, Roman Shtykh</span><br/><br/>
                        <span class="news-date">March 03, 2016</span>
                        <p>
                            How to link Apache Kafka and Ignite for maintaining scalability and reliability for data processing.</br></br>
                            <a href="https://dzone.com/articles/linking-apache-ignite-and-apache-kafka-for-highly" target="_blank">Read More</a>
                        </p>
                    </section>

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