> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/gridgain/gridgain-8/gridgain8-development.md).

# Development

Developer-facing how-to for building applications on GridGain 8 — configuration, APIs, SQL, distributed computing, data structures, and more.

This guide is targeted at developers and architects who create applications on top of the GridGain or Apache Ignite products. Both products are available as libraries that you can integrate into your own application.

{% hint style="info" %}
[Complimentary, Instructor-Led Developer Training - Apache Ignite Essentials](https://www.gridgain.com/products/services/training/apache-ignite-essentials)

If you are getting started with Ignite or GridGain, we recommend attending [an upcoming training session](https://www.gridgain.com/products/services/training#public-training-listing) to learn about the key design principles for building data-intensive applications.
{% endhint %}

## GridGain and Apache Ignite

Throughout this guide you will see references to both GridGain and Ignite. If you've installed either product, you're all set. You don't need to install both. GridGain is based on Ignite and adds [several useful and key features](/docs/gridgain/gridgain-8/gridgain8-get-started/what-is-gridgain.md#gridgain-editions) so the documentation mentions Ignite features (things like Ignite Persistence or Ignite Compute Grid). The documentation will notify you when a feature is specific to GridGain installations, so anything else covered in the documentation applies to both GridGain and Ignite installations.

## Programming Languages

GridGain is available for Java, .NET/C#, and C++. The Java version provides the richest API. The .NET/C# and C++ variants may have limited functionality. To make this guide intuitive for all developers, we adhere to the following conventions:

* The information provided in the guide applies to all programming languages unless noted otherwise.
* Code samples for different languages are provided in different tabs as shown below. For example, if you are a .NET developer, click on the .NET tab in the code examples to see .NET specific code.

{% tabs %}
{% tab title="XML" %}

```
This is a place where an example of XML configuration is provided.
Click on other tabs to view an equivalent programmatic configuration.
```

{% endtab %}

{% tab title="Java" %}

```
Code sample in Java. Click on other tabs to view the same example in other languages.
```

{% endtab %}

{% tab title="C#/.NET" %}

```
Code sample in .NET. Click on other tabs to view the same example in other languages.
```

{% endtab %}

{% tab title="C++" %}

```
Code sample in C++. Click on other tabs to view the same example in other languages.
```

{% endtab %}
{% endtabs %}

* If there is no tab for a specific language, this most likely means that the functionality is not supported in that language.

{% columns %}
{% column %}
{% content-ref url="/pages/uT5XyKfIdRSpTmEpNmrc" %}
[Project Setup](/docs/gridgain/gridgain-8/gridgain8-development/project-setup.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
How to set up GridGain, including system requirements, binary and Maven installation, Docker, work directory, and enabling optional modules.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/yVmPe0HmcD9JBM5chcLt" %}
[Caches and Memory](/docs/gridgain/gridgain-8/gridgain8-development/caches-and-memory.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Configure how GridGain stores data in memory and on disk — caches, data regions, persistence, and near caches.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/MzSxR11cR8K4JwkHXtp7" %}
[Data Access](/docs/gridgain/gridgain-8/gridgain8-development/accessing-data.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Read and write data in GridGain — the key-value and SQL APIs, vector search, transactions, continuous queries, and data streaming.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/mcL8s8IcexLH9NEeeZRe" %}
[Cross-Platform Interoperability](/docs/gridgain/gridgain-8/gridgain8-development/cross-platform-interoperability.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
How .NET, Java, and C++ platforms interoperate in a mixed GridGain cluster, including type compatibility and calling a .NET service from Java.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/gazXRn30o8SaUJAV7UE8" %}
[Distributed Computing and Services](/docs/gridgain/gridgain-8/gridgain8-development/distributed-computing-and-services.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Run computations and services across the cluster — the compute APIs, data colocation, services, and code deployment.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/pYpaaJYAw4XYiYpZbMyX" %}
[Messaging and Events](/docs/gridgain/gridgain-8/gridgain8-development/messaging-and-events.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Communicate across the cluster — topic-based messaging and listening to cluster events.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/c3rm3Uydi3pfj64Ygobp" %}
[Distributed Data Structures](/docs/gridgain/gridgain-8/gridgain8-development/data-structures.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
GridGain provides distributed implementations of common data structures, including atomic types, sequences, latches, locks, semaphores, queues, and sets.
{% endcolumn %}
{% endcolumns %}
