IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Lekce 2 - JNI - MinGW a Eclipse - CDT příklady

V minulém tutoriálu o JNI, JNI - Nastavení prostředí pro JNI: Eclipse, MinGW, jsme si vysvětlili co že to JNI vlastně je a také si připravili prostředí.

Dnes budeme programovat nativní programy v Eclipse i bez něj. Pokud to již ovládáte, můžete danou kapitolu přeskočit. Bude to ale poměrně jednoduché, takže byste se neměli nijak zásadně trápit.

Hello world

Jako první si vytvoříme projekt v C-čku, známý Hello World program. Spustíme si Eclipse a přepneme do C/C++ perspektivy. V menu zvolíme File -> New -> C Project.

Vytvoření projektu - JNI - Java Native Interface

Objeví se dialogové okno, kde zadáme Project Name. Jedná se o jméno projektu, pod kterým najdeme program ve workspace (pracovním prostoru). Dále nastavíme variantu executable (spustitelný projekt), vybereme Empty Project a nastavíme typ kompilátoru. V našem případě MinGW GCC a zvolíme FINISH. Pokud má někdo naistalované Visual Studio, může zkusit provést daný "build" jeho kompilátorem.

Název projektu - JNI - Java Native Interface

V project exploreru nám vznikne daný projekt. Samozřejmě je nutno dodat zdrojový soubor do kterého umístíně zdrojový kód našeho vzorového příkladu. V project exploreru klikneme pravým tlačítkem a vybereme vytvoření zdrojového souboru: New -> Source File.

Vytvoření zdrojového souboru C - JNI - Java Native Interface

Dále vytvoříme zdrojový soubor. Nutné je soubor pojmenovat "ProgramC.c" a hlavně nezapomenout příponu. Zvolíme FINISH.

Vytvoření zdrojového kódu C - JNI - Java Native Interface

Do zdrojového souboru vložíme tento známý zdrojový kód.

int main()
{
    printf("Ahoj svete");
    return 0;
}

Ikona kladívka provádí "build" projektu a ten bílý trojúhelníček v zeleném kolečku provádí spuštění programu. Zdrojový kód za pomocí CTRL+S samozřejmě uložíme a poté projekt zbuildujeme. Dole se nachází záložka konzole, kde uvidíme výpis buildu.

Vytvoření C programu - JNI - Java Native Interface

V navigátoru si všimneme vzniku adresáře Debug, ve kterém uvidíme náš zbuildovaný program.

Build C Programu - JNI - Java Native Interface

Poté program spustíme. Dole v konzoli uvidíme výstup. Zde je i test pro spuštění přes příkazový řádek. Program je tedy plně funkční.

Test v příkazovém řádku - JNI - Java Native Interface

Identický program v C++

Jako další si vyrobíme identický program přes C++. Perspektiva zůstává stejná. V menu vybereme File -> New -> C++ Project. Zbytek nastavíme stejně jako předtím. Je to téměř identické jako při tvorbě C programu. Objeví se dialogové okno a opětovně zvolíme Project Name. Dále nastavíme variantu executable, zvolíme Empty Project a nastavíme typ kompilátoru. Zvolíme FINISH.

Název C++ projektu - JNI - Java Native Interface

V project exploreru nám vznikne daný projekt. V projekt exploreru vyvolám klikem pravého tlačítka PopupMenu a vybereme si vytvoření zdrojového souboru : New -> Source File. Dále pak vytvoříme zdrojový soubor. Nutné je soubor pojmenovat "Program.cpp" a hlavně nezapomět koncovku. Zvolíme FINISH.

Vytvoření zdrojového souboru - JNI - Java Native Interface

Do zdrojového souboru vložíme opět tento známý zdrojový kód.

#include <iostream>
using namespace std;
int main() {
    cout << "Ahoj Svete Program C++ " << "\n";
    return 0;
}

Opětovně za pomoci kladívka provedeme "build" projektu a program spustíme. Přes příkazový řádek otestujeme funkčnost programu.

Testování C++ Projektu - JNI - Java Native Interface

Build bez IDE

Nyní si provedeme "build" bez IDE přímo přes příkazový řádek. Určitě se ptáte "proč"? Proč řešit nějaký zastaralý command prompt? Důvodů je celá řada, hlavně se s ním pracuje neskutečně jednoduše, je velmi efektivní, když s ním umíte pracovat. Ve Windows 10 jej navíc zlepšili.

Spustíme příkazový řádek v jakékoliv adresáři. Za pomocí příkazu

md ProgramCMD

vytvoříme adresář ProgramCMD. Po provedení se do něj přesuneme přes příkaz

cd ProgramCMD

V adresáři vytvoříme zdrojový soubor přes příkaz

fsutil file createnew program.c 0

Dále provedeme úpravu zdrojového souboru přes příkaz

notepad program.c

Do zdrojového souboru v Notepadu napíšeme opět zdrojový kód :

int main()
{
    printf("Ahoj svete");
    return 0;
}
Tvorba zdrojového souboru v Notepadu - JNI - Java Native Interface

Soubor uložíme a Notepad ukončíme. Pro otestování uložení lze provést příkaz

more program.c

Nyní nás čeká kompilace programu a poté linkování, což je prakticky "build" programu. Protože jsme v minule provedli nastavení systémové proměnné PATH pro kompilátor na C:\MinGW64\mingw64\bin, je nám umožněno volat z příkazového řádku příkazy umístěné v daném adresáři.

Kompilaci provedeme příkazem

gcc -c program.c

Vznikne program.o.

Linkovaní provedeme příkazem

gcc -o programX program.o

Vznikne programX.exe.

Poté program spustíme zavoláním

programX

Pro kompilaci lze využít místo příkazu "gcc" také příkaz "x86_64-w64-mingw32-gcc".

KompilaceGCC 64bit - JNI - Java Native Interface

Hello world pro Javu

Nyní si provedeme Hello World pro Javu. Nejprve je nutné změnit perspektivu.To uděláme kliknutím na Java v pravém horním rohu. Pokud kliknete na C/C++, opět se vrátíte do C/C++ perspektivy. V menu zvolíme File -> New -> Java Project. Je to velmi podobné tvorbě C nebo C++ projektu.

Vytvoření projektu v Javě - JNI - Java Native Interface

Zvolíme Project Name a zkontrolujeme typ JRE pro verzi Java 8. Zvolíme FINISH.

Nastavení Java projektu v Eclipse - JNI - Java Native Interface

Nyní vyrobíme spouštěcí třídu. V menu zvolíme File -> New -> Class. Doplníme vlastnosti třídy a vybereme Finish.

  • Package: balicek
  • Name: ProgramHello

A potvrdíme tvorbu spouštěcí metody "public static void main(String [] args)".

Vytvoření Třídy - JNI - Java Native Interface

Do spouštěcí třídy vložíme metodu výpisu, takže třída bude vypadat nějak takto

package balicek;
public class ProgramHello {
    public static void main (String [] args) {
        System.out.println("Ahoj program z Javy ");

    }
}

Poté opětovně klikneme na spuštění programu. Dole v konzoli uvidíme výstup spuštěného programu. Pro otestovaní jej spustíme i z příkazového řádku. Protože používáme balíček, je nutné volat třídu s balíčkem a spouštět jej v úrovni \bin\ v projektu.

Spuštění Programu - JNI - Java Native Interface

Příště, JNI - První příklad Java Native Interface bez IDE, si konečně vytvoříme první JNI aplikaci v Javě, kdy *.dll vytvoříme v C-čku bez IDE.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 9x (123.98 kB)
Aplikace je včetně zdrojových kódů v jazyce Java

 

Předchozí článek
JNI - Nastavení prostředí pro JNI: Eclipse, MinGW
Všechny články v sekci
JNI - Java Native Interface
Přeskočit článek
(nedoporučujeme)
JNI - První příklad Java Native Interface bez IDE
Článek pro vás napsal Robert Michalovič
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Programuji převážně v Javě SE,EE a trochu nativním C a CUDA. více viz.https://cz.linkedin.com/in/robert-michalovic
Aktivity