extend ../_components/base.pug

block pagetitle
    title Multi-language Support   

block css 
    link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/compute-apis.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/multilanguage.css?ver=" + config.version)
    
  

   



block main
    - global.pageHref = "features"
    - config.hdrClassName = "hdr__blue"
    include ../_components/header.pug


    section.innerhero
        .container.innerhero__cont
            .innerhero__main.innherhero__lang
                .innerhero__pre.pb-3 Apache Ignite
                h1.h1.innerhero__h1 Multi-language<br> Support
                .innerhero__action 
                    a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding
              
            img.innerhero__pic.innerhero__pic--lang(src="/img/features/multilanguage/multi.svg", alt="Distributed In-Memory Cache")
    // /.innerhero

  
    section.lang
       .container
        .lang-block.flexi
           p.lang__text
                    span Apache Ignite® is a Java-powered database and computing platform that works with operating systems and architectures supported by Java Virtual Machines. You can find Ignite deployments running on Linux, Windows, Mac OS, Oracle Solaris, IBM zOS and x86, x64, SPARC, and PowerPC instruction set architectures.<br><br>
                    span All the features and capabilities available in Ignite are supported in its Java libraries. This includes SQL, key-value, co-located computations, machine learning algorithms, and much more.<br><br>
                    span In addition to Java, Ignite supports C#, C++, Python, Node.JS, and PHP languages out-of-the-box. The thin client protocol allows expanding Ignite support to other programming languages. For instance, you can find a Go client for Ignite that is not being developed or maintained by the Ignite community.<br><br>
                    span Furthermore, you can interact with Ignite as you would with any other SQL database with the usage of JDBC or ODBC drivers.
           .lang__image
              .lang__one.flexi
                 img.lang__img.lang__img1(src="/img/features/multilanguage/one.svg", alt="one")
                 img.lang__img(src="/img/features/multilanguage/two.svg", alt="two")
              .lang__two.flexi
                 img.lang__img(src="/img/features/multilanguage/three.png", alt="three")
                 img.lang__img.lang__img4(src="/img/features/multilanguage/four.png", alt="four")
    

    

    

    section.native-bottom.container
        .native-bottom__grid 
            article.nativebotblock
                .h4.nativebotblock__title
                    img(src="/img/features/native-rocket.svg", alt="").nativebotblock__icon
                    span Ready to Start?
                p.nativebotblock__text Discover our quick start guide and build your first<br> application in 5-10 minutes
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/index", target="_blank") Quick Start Guide 
            article.nativebotblock.nativebotblock--learn
                .h4.nativebotblock__title
                    img(src="/img/features/native-docs.svg", alt="").nativebotblock__icon
                    span Want to Learn More?
                p.nativebotblock__text Check out how to run Ignite with Java, .NET/C#, C++, Python, Node.JS, SQL, PHP, or REST API
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/quick-start/java", target="_blank") Multi-Language Guide




