blob: e0b6229f390e13072d29ae606395c9c7c7d2103e [file] [log] [blame]
<!--
▄▄▄ ██▓███ ▄▄▄ ▄████▄ ██░ ██ ▓█████ ██▓ ▄████ ███▄ █ ██▓▄▄▄█████▓▓█████
▒████▄ ▓██░ ██▒▒████▄ ▒██▀ ▀█ ▓██░ ██▒▓█ ▀ ▓██▒ ██▒ ▀█▒ ██ ▀█ █ ▓██▒▓ ██▒ ▓▒▓█ ▀
▒██ ▀█▄ ▓██░ ██▓▒▒██ ▀█▄ ▒▓█ ▄ ▒██▀▀██░▒███ ▒██▒▒██░▄▄▄░▓██ ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█ ▄ ░██░░▓█ ██▓▓██▒ ▐▌██▒░██░░ ▓██▓ ░ ▒▓█ ▄
▓█ ▓██▒▒██▒ ░ ░ ▓█ ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒ ░██░░▒▓███▀▒▒██░ ▓██░░██░ ▒██▒ ░ ░▒████▒
▒▒ ▓▒█░▒▓▒░ ░ ░ ▒▒ ▓▒█░░ ░▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░ ░▓ ░▒ ▒ ░ ▒░ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░
▒ ▒▒ ░░▒ ░ ▒ ▒▒ ░ ░ ▒ ▒ ░▒░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░░ ░ ▒░ ▒ ░ ░ ░ ░ ░
░ ▒ ░░ ░ ▒ ░ ░ ░░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░
░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
-->
<!--
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
"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>
<link rel="canonical" href="https://ignite.apache.org/features/multilanguage.html" />
<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>Multi-Language Support</title>
<link media="all" rel="stylesheet" href="/css/all.css?v=1509574040">
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css" rel="stylesheet">
<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'>
<!--#include virtual="/includes/sh.html" -->
</head>
<body>
<div id="wrapper">
<!--#include virtual="/includes/header.html" -->
<main id="main" role="main" class="container">
<section id="java" class="page-section">
<h1 class="first">Multi-Language Support</h1>
<div class="col-sm-12 col-md-12 col-xs-12" style="padding:0 0 20px 0;">
<div class="col-sm-6 col-md-8 col-xs-12" style="padding-left:0; padding-right:0">
<p>
Apache Ignite is developed predominantly in <b>Java</b> and, thus, can be deployed and used on
numerous operating systems and architectures supported by Java Virtual Machine. For instance,
you can find Ignite deployments running on Linux, Windows, Mac OS, Oracle Solaris operating
systems and x86, x64, SPARC, PowerPC instruction set architectures.
</p>
<p>
<a href="https://apacheignite.readme.io/" target="_blank">Java APIs</a> are provided for every
Ignite feature available. The APIs allow to embed Ignite related logic directly in Java or Scala
powered applications and interact with the cluster by means of SQL and key-value operations,
execute distributed computations and machine learning algorithms, and do much more.
</p>
<p>
In addition to Java, Ignite natively supports <b>.NET</b> platform with <b>C#</b> and <b>C++</b>
languages. Both <a href="https://apacheignite-net.readme.io/" target="_blank">Ignite .NET</a>
and <a href="https://apacheignite-cpp.readme.io/" target="_blank">Ignite C++</a> APIs delegate most
of the calls to Java using JNI. Here, it is worth mentioning that the JNI overhead is minimal
and does not cause any performance degradation, especially in distributed environments where
the network is a main contributor to the overall application performance.
</p>
<p>
You can interact with Ignite as you would with any other <b>SQL</b> storage, using standard JDBC or
ODBC connectivity. Ignite also provides native SQL APIs for Java, .NET and C++ developers
for better performance.
</p>
<p>
To access Ignite from other programming languages such as <b>Python</b>, <b>Ruby</b>, <b>PHP</b>
or <b>Node.JS</b> consider using Ignite binary client protocol, JDBC and ODBC drivers, or other
client protocols listed below.
</p>
</div>
<div class="col-sm-6 col-md-4 col-xs-12" style="padding-right:0">
<img class="img-responsive" src="/images/multilanguage.png" style="float:right;"/>
</div>
</div>
<div class="code-examples">
<div class="page-heading"> Getting Started Guides</div>
<p>
The getting started guides that show how to start and make use of Apache Ignite in a matter of minutes:
</p>
<ul class="page-list">
<li><a href="https://apacheignite.readme.io/docs/getting-started" target="_blank">Java Getting Started</a></li>
<li><a href="https://apacheignite-net.readme.io/docs/getting-started-2" target="_blank">.NET Getting Started</a></li>
<li><a href="https://apacheignite-cpp.readme.io/docs/getting-started-1" target="_blank">C++ Getting Started</a></li>
<li><a href="https://apacheignite-sql.readme.io/docs/getting-started" target="_blank">SQL Getting Started</a></li>
</ul>
</div>
<div class="code-examples">
<div class="page-heading">Code Examples</div>
<!-- Nav tabs -->
<ul id="messaging-examples" class="nav nav-tabs">
<li class="active"><a href="#java-ex" aria-controls="home" data-toggle="tab">Java</a></li>
<li><a href="#dotnet-ex" aria-controls="profile" data-toggle="tab">.NET</a></li>
<li><a href="#cpp-ex" aria-controls="profile" data-toggle="tab">C++</a></li>
<li><a href="#php-ex" aria-controls="profile" data-toggle="tab">PHP</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="java-ex">
<pre class="brush:java">
Ignite ignite = Ignition.ignite();
IgniteCache&lt;Integer, String&gt; cache = ignite.cache("myCache");
// Store keys in cache (values will end up on different nodes).
for (int i = 0; i &lt; 10; i++)
cache.put(i, Integer.toString(i));
for (int i = 0; i &lt; 10; i++)
System.out.println("Got [key=" + i + ", val=" + cache.get(i) + ']');
</pre>
</div>
<div class="tab-pane" id="dotnet-ex">
<pre class="brush:csharp">
using (var ignite = Ignition.Start())
{
var cache = ignite.GetOrCreateCache&lt;int, string&gt;("myCache");
// Store keys in cache (values will end up on different nodes).
for (int i = 0; i &lt; 10; i++)
cache.Put(i, i.ToString());
for (int i = 0; i &lt; 10; i++)
Console.WriteLine("Got [key={0}, val={1}]", i, cache.Get(i));
}
</pre>
</div>
<div class="tab-pane" id="cpp-ex">
<pre class="brush:cpp">
// Get cache instance.
Cache&lt;int, std::string&gt; cache = grid.GetCache&lt;int, std::string&gt;("myCache");
// Store keys in cache (values will end up on different nodes).
for (int i = 0; i &lt; 10; ++i)
{
std::stringstream value;
value &lt;&lt; i;
cache.Put(i, value.str());
}
for (int i = 0; i &lt; 10; ++i)
std::cout &lt;&lt; "Got [key=" &lt;&lt; i &lt;&lt; ", val=" &lt;&lt; cache.Get(i) &lt;&lt; "]";
</pre>
</div>
<div class="tab-pane" id="php-ex">
<pre class="brush:cpp">
&lt;?php
try {
// Connecting to Ignite using pre-configured DSN.
$dbh = new PDO('odbc:LocalApacheIgniteDSN');
// Changing PDO error mode.
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Executing the query. The salary field is an indexed field.
$dbh->query('UPDATE Person SET salary = 42000 WHERE salary > 50000');
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "\n";
die();
}
?&gt;
</pre>
</div>
</div>
</div>
<p>
More examples are available on
<a href="https://github.com/apache/ignite/tree/master" target="_blank">GitHub</a>:
<ul class="page-list">
<li><a href="https://github.com/apache/ignite/tree/master/examples" target="_blank">Java Examples</a></li>
<li><a href="https://github.com/apache/ignite/tree/master/modules/platforms/dotnet/examples" target="_blank">.NET Examples</a></li>
<li><a href="https://github.com/apache/ignite/tree/master/modules/platforms/cpp/examples" target="_blank">C++ Examples</a></li>
</ul>
</p>
<div class="page-heading">Supported Drivers and Protocols</div>
<table class="formatted" name="Supported Clients Features">
<thead>
<tr>
<th width="35%" class="left">Feature</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="left">Ignite Native Client</td>
<td>
<p>
Ignite Native Clients provide full functionality to remote applications connecting to
the cluster. It allows to use the whole set of Ignite APIs, including SQL, key-value,
transactions, compute, streaming, services, etc. The native clients can be used from
Ignite Java, .NET or C++ APIs.
</p>
<div class="page-links">
<a href="http://apacheignite.readme.io/docs/clients-vs-servers" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">JDBC/ODBC Drivers</td>
<td>
<p>
Ignite is shipped with JDBC/ODBC Drivers that allow you to retrieve distributed data from
the cluster using standard SQL queries.
</p>
<div class="page-links">
<a href="https://apacheignite-sql.readme.io/docs" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">REST/HTTP</td>
<td>
<p>
Ignite provides an HTTP REST client that gives you the ability to communicate with the
grid over HTTP and HTTPS protocols using REST approach. REST APIs can be used to
perform different operations, like read/write from/to the cluster, execute tasks, get
various metrics and more.
</p>
<div class="page-links">
<a href="http://apacheignite.readme.io/docs/rest-api" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Memcached</td>
<td>
<p>
Ignite is <a href="http://memcached.org/" target="_blank">Memcached</a> compliant,
which enables users to store and retrieve distributed data from Ignite cache using any
Memcached compatible client, including Java, PHP, Python, Ruby, and other Memcached
clients.
</p>
<div class="page-links">
<a href="http://apacheignite.readme.io/docs/memcached-support" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">PHP PDO</td>
<td>
<p>
PHP provides a lightweight, consistent interface for accessing databases named PHP Data
Objects - PDO. With the usage of Apache Ignite's ODBC driver, it's possible to connect to an
Apache Ignite cluster from a PHP application accessing and modifying data that is stored there.
</p>
<div class="page-links">
<a href="https://apacheignite-sql.readme.io/docs/php-pdo" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Redis</td>
<td>
<p>
Ignite is partially <a href="http://redis.io/" target="_blank">Redis</a> compliant and enables users
to store data in and retrieve from Apache Ignite caches using any Redis compatible client.
</p>
<div class="page-links">
<a href="http://apacheignite.readme.io/docs/redis" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
</tbody>
</table>
</section>
</main>
<!--#include virtual="/includes/footer.html" -->
</div>
<!--#include virtual="/includes/scripts.html" -->
</body>
</html>