Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

2. diel - JNI - MinGW a Eclipse - CDT príklady

V minulom tutoriále o JNI sme si vysvetlili čo že to JNI vlastne je a tiež si pripravili prostredie. Dnes budeme programovať natívny programy v Eclipse aj bez neho. Ak to už ovládate, môžete danú kapitolu preskočiť. Bude to ale pomerne jednoduché, takže by ste sa nemali nijako zásadne trápiť.

Hello world

Ako prvý si vytvoríme projekt v C-čku, známy Hello World program. Spustíme si Eclipse a prepneme do C / C ++ perspektívy. V menu zvolíme File -> New -> C Project.

vytvorenie projektu - JNI - Java Native Interface

Objaví sa dialógové okno, kde zadáme Project Name. Jedná sa o meno projektu, pod ktorým nájdeme program vo workspace (pracovnom priestore). Ďalej nastavíme variantu executable (spustiteľný projekt), vyberieme Empty Project a nastavíme typ kompilátora. V našom prípade MinGW GCC a zvolíme FINISH. Ak má niekto nainštalovaný Visual Studio, môže skúsiť vykonať daný "build" jeho kompilátorom.

Názov projektu - JNI - Java Native Interface

V project exploreru nám vznikne daný projekt. Samozrejme je nutné dodať zdrojový súbor do ktorého umiestnenom zdrojový kód nášho vzorového príkladu. V project exploreru klikneme pravým tlačidlom a vyberieme vytvorenie zdrojového súboru: New -> Source File.

Vytvorenie zdrojového súboru C - JNI - Java Native Interface

Ďalej vytvoríme zdrojový súbor. Nutné je súbor pomenovať "ProgramC.c" a hlavne nezabudnúť príponu. Zvolíme FINISH.

Vytvorenie zdrojového kódu C - JNI - Java Native Interface

Do zdrojového súboru vložíme tento známy zdrojový kód.

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

Ikona kladivka vykonáva "build" projektu a ten biely trojuholníček v zelenom koliesku vykonáva spustenie programu. Zdrojový kód za pomocou CTRL + S samozrejme uložíme a potom projekt zbuildujeme. Dole sa nachádza záložka konzola, kde uvidíme výpis buildu.

Vytvorenie C programu - JNI - Java Native Interface

V navigátora si všimneme vzniku adresára Debug, v ktorom uvidíme náš zbuildovaný program.

Build C Programu - JNI - Java Native Interface

Potom program spustíme. Dole v konzole uvidíme výstup. Tu je aj test pre spustenie cez príkazový riadok. Program je teda plne funkčný.

Test v príkazovom riadku - JNI - Java Native Interface

Identický program v C ++

Ako ďalšie si vyrobíme identický program cez C ++. Perspektíva zostáva rovnaká. V menu vyberieme File -> New -> C ++ Project. Zvyšok nastavíme rovnako ako predtým. Je to takmer identické ako pri tvorbe C programu. Objaví sa dialógové okno a opätovne zvolíme Project Name. Ďalej nastavíme variantu executable, zvolíme Empty Project a nastavíme typ kompilátora. Zvolíme FINISH.

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

V project exploreru nám vznikne daný projekt. V projekt exploreru vyvolám klikom pravého tlačidla PopupMenu a vyberieme si vytvorenie zdrojového súboru: New -> Source File. Ďalej potom vytvoríme zdrojový súbor. Nutné je súbor pomenovať "Program.cpp" a hlavne nezapomět koncovku. Zvolíme FINISH.

Vytvorenie zdrojového súboru - JNI - Java Native Interface

Do zdrojového súboru vložíme opäť tento známy zdrojový kód.

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

Opätovne za pomoci kladivka vykonáme "build" projektu a program spustíme. Cez príkazový riadok otestujeme funkčnosť programu.

Testovanie C ++ Projektu - JNI - Java Native Interface

Build bez IDE

Teraz si vykonáme "build" bez IDE priamo cez príkazový riadok. Určite sa pýtate "prečo"? Prečo riešiť nejaký zastaralý command prompt? Dôvodov je celá rada, hlavne sa s ním pracuje neskutočne jednoducho, je veľmi efektívne, keď s ním viete pracovať. Vo Windows 10 ho navyše zlepšili.

Spustíme príkazový riadok v akejkoľvek adresári. Za pomocou príkazu

md ProgramCMD

vytvoríme adresár ProgramCMD. Po vykonaní sa doň presunieme cez príkaz

cd ProgramCMD

V adresári vytvoríme zdrojový súbor cez príkaz

fsutil file createnew program.c 0

Ďalej vykonáme úpravu zdrojového súboru cez príkaz

notepad program.c

Do zdrojového súboru v Notepade napíšeme opäť zdrojový kód:

int main()
{
    printf("Ahoj svete");
    return 0;
}
Tvorba zdrojového súboru v Notepade - JNI - Java Native Interface

Súbor uložíme a Notepad ukončíme. Pre otestovanie uloženie možno vykonať príkaz

more program.c

Teraz nás čaká kompilácie programu a potom linkovanie, čo je prakticky "build" programu. Pretože sme v minule urobili nastavenie systémovej premennej PATH pre kompilátor na C:\MinGW64\mingw64\bin, je nám umožnené volať z príkazového riadka príkazy umiestnené v danom adresári.

Kompiláciu prevedieme príkazom

gcc -c program.c

Vznikne program.o.

Linkovanie prevedieme príkazom

gcc -o programX program.o

Vznikne programX.exe.

Potom program spustíme zavolaním

programX

Pre kompiláciu možno využiť namiesto príkazu "gcc" tiež príkaz "x86_64-w64-mingw32-gcc".

KompilaceGCC 64bit - JNI - Java Native Interface

Hello world pre Javu

Teraz si vykonáme Hello World pre Javu. Najprv je nutné zmeniť perspektivu.To urobíme kliknutím na Java v pravom hornom rohu. Ak kliknete na C / C ++, opäť sa vrátite do C / C ++ perspektívy. V menu zvolíme File -> New -> Java Project. Je to veľmi podobné tvorbe C alebo C ++ projektu.

Vytvorenie projektu v Jave - JNI - Java Native Interface

Zvolíme Project Name a skontrolujeme typ JRE pre verziu Java 8. zvolíme FINISH.

Nastavenie Java projektu v Eclipse - JNI - Java Native Interface

Teraz vyrobíme spúšťací triedu. V menu zvolíme File -> New -> Class. Doplníme vlastnosti triedy a vyberieme Finish.

  • Package: balicek
  • Name: ProgramHello

A potvrdíme tvorbu spúšťací metódy "public static void main (String [] args)".

vytvorenie Triedy - JNI - Java Native Interface

Do spúšťacie triedy vložíme metódu výpisu, takže trieda bude vyzerať nejako takto

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

    }
}

Potom opätovne klikneme na spustenie programu. Dole v konzole uvidíme výstup spusteného programu. Pre otestovanie ho spustíme aj z príkazového riadku. Pretože používame balíček, je nutné volať triedu s balíčkom a spúšťať ho v úrovni \ bin \ v projekte.

spustenie Programu - JNI - Java Native Interface

Nabudúce si konečne vytvoríme prvú JNI aplikáciu v Jave, kedy * .dll vytvoríme v C-čku bez IDE.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 10x (123.98 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

 

Predchádzajúci článok
JNI - Nastavenie prostredia pre JNI: Eclipse, MinGW
Všetky články v sekcii
JNI - Java Native Interface
Preskočiť článok
(neodporúčame)
JNI - Prvý príklad Java Native Interface bez IDE
Článok pre vás napísal Robert Michalovič
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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