IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

1. diel - JNI - Nastavenie prostredia pre JNI: Eclipse, MinGW

Čo to JNI vlastne je? Celý názov je Java Native Interface a jedná sa o rozhranie (nepliesť si s implementáciou rozhrania), ktoré umožňuje prístup k natívnym metódam vyvinutých v natívnych jazykoch (napr. C, C ++, ASM, Fortran, Pascal). Teoreticky by to malo fungovať pre všetky natívny jazyky, ktoré sú schopné vytvoriť zdieľané knižnice (shared libraries). Na platforme Windows známe ako .dll a na platforme Linux známe ako .so. Teoreticky by to mohlo fungovať aj so statickými knižnicami, ale to nemám overené.

V týchto natívnych jazykoch sa vytvorí zdieľané knižnice, ktoré potom v Jave načítame a metódy (funkcia) v nich obsiahnuté, môžeme normálne volať. Čo tým získame? Vo väčšine prípadov tým, že vynecháme JVM (Java Virtual Machine) - natívne metódy pristupujú priamo k systémovým prostriedkom a tým by malo dôjsť k zvýšeniu rýchlosti vykonávania daných metód. Avšak nie je to vždy pravidlom. Mám vyskúšané, že identický algoritmus (násobenie double matíc) v iných jazykoch prebehne na rovnakom stroji v Jave cez JVM rýchlejšie ako cez JNI alebo priamo cez program napísaný v C. Takže dogmu, že Java je principiálne pomalší nie je vo všetkých prípadoch správne.

K samotnému JNI a prvému praktickému príkladu pristúpime až v treťom pokračovaní tohto seriálu. V prvom diele nás čaká nastavenie prostredia a v druhom diele vytvorenie triviálnych príkladov Hello World pomocou Eclipse v C, C ++ a Jave. K naučenie tejto technológie (frameworku) je nutná základná znalosť Javy a C alebo C ++.

Seriál je umiestnený do skupiny článkov pre pokročilých. A to z dôvodov, že skutočne očakávam používanie a pochopenie objektov, metód a výnimiek. Nemienim tieto triviálnosti rozoberať. Dokonca by bolo vhodné či prakticky povinné mať základy C alebo C ++. V ďalších kapitolám pri písaní tiel metód je nutné poznať syntax daných jazykov a koncept pointer. Ak tomu plne nerozumiete je nutné si to najprv naštudovať, pochopiť a vyskúšať.

Sami zistíte, že využívanie JNI je skutočne veľmi jednoduché. Nie je k tomu potrebné žiadne Java EE, všetko funguje s SE. Je to celkom dobrá vec, keď potrebujete získať niektoré schopnosti z C / C ++ jazyka (napr. Priame systémové eventy), ktoré sa Jave nedostávajú. Ďalej sa to samozrejme hodí, ak chcete, aby niektoré časti kódu boli uchránené nenechavých očiam Java dekompilérů.

Takže začneme. V tomto diele nás čaká iba nastavenie prostredia.

  • nainštaluje Javu 7,8,9,10 (JDK a JRE) a iba JDK u Java 11 a vyšších
  • nainštaluje MinGW 32/64 bit (pre kompiláciu / linking s C / C ++)
  • Spustíme Eclipse a stiahneme balíčky CDT pre podporu C / C ++ v Eclipse IDE

Pozn.

Pokiaľ chcete všetko inštalovať s právami administrátora a chcete programovať s právami user, je nutné nastaviť práva prístupu skupiny user k týmto novovytvoreným adresárom. Ak systém práv prístupu nevyužívate túto poznámku neriešte.

Inštalácia Javy

Inštaláciou Javy SE (Standard Edition) je myslené inštalácia JDK (Java Developer Kit) a JRE (Java Runtime Enviroment). Budeme na to potrebovať približne cca 0,55 GB miesta. Postup inštalácie je ukázaný tu a inštalačné súbory môžete stiahnuť z ofic. webu Oracle.

Je vhodné (povinné) vykonať nastavenie systémovej premennej PATH vo Windows. Vyrieši sa nám tým veľa problémov pri programovaní v Jave. Umožní nám to napríklad volať príkazy (programy) obsiahnuté umiestnenej v danom adresári. Ako na to?

Vo Windows (v mojom prípade vo Windows 10) si nájdeme Ovládací panel a budeme postupovať takto: Ovládací panel - Systém - Rozšírené nastavenie systému - Rozšírené - Enviroment Variables (Premenné prostredia) - vyberieme PATH a dáme upraviť. Tu dáme Nový a vložíme umiestnený adresáre \ bin v Jave JDK i JRE. Ja si nainštalujem JDK do adresára C: \ Program Files \ JavaJDK a JRE do C: \ Program Files \ JavaJRE, ale vy samozrejme môžete mať Javu v inom adresári. Takže v mojom prípade sú cesty C: \ Program Files \ JavaJDK \ bin a C: \ Program Files \ JavaJRE \ bin. Môžete ju mať napr. C: \ Java8a66JDK a v tomto prípade bude reťazec uložený do systémovej premennej vyzerať takto: C: \ Java8a66JDK \ bin, alebo iných diskoch D: \, E: \ závisí to na vás. U starších OS (Win8, 7, Vista, XP) je postup takmer identický.

nastaveni PATH - JNI - Java Native Interface

Teraz je vhodné reštartovať PC.

Inštalácia MinGW

Prečo MinGW? Existuje veľa iných, napr. Microsoft Compiler umiestnený vo Visual Studiu, Cygwin alebo Intel Compiler apod. Ak máte nainštalované Visual Studio, môžete tento krok preskočiť, pretože už kompilátor / linker máte. Len potom pri tvorbe projektu nezabudnite vždy nastaviť Visual C ++ kompilátor, ja budem mať v defaultu vždy MinGW. Tu je odkaz na projekt MinGW iba pre 32bit verziu a tu je odkaz pre novšie MinGW disponujúci 32bit aj 64bit verzií. Odporúčam sťahovať novšie 64bit verziu umožnujú vykonávať "buildy" pre obe bitovej verzie.

StazeniMinGW - JNI - Java Native Interface

Stiahnutý inštalátor pre 64bit spustíme ako administrátor. V Architecture si nastavte vhodnú procesorovú architektúru au Exception sa volí bitová varianta: DWARF iba 32bit, SEH iba 64bit, SJLJ pre 32 aj 64 bit.

Nastavenie inštalátora časť 1 - JNI - Java Native Interface

Inštaláciu odporúčam nastaviť priamo do roote C: \, pretože umiestnenie v iných adresároch alebo prípadne na iných diskoch môže spôsobiť problémy pri práci s ním.

Nastavenie inštalátora část2 - JNI - Java Native Interface

Prebieha sťahovanie a inštalácia

prebieha sťahovanie - JNI - Java Native Interface

Po ukončení inštalácie inštalátora klikneme na aktívne tlačidlo Next a potom na Finish.

Pozn.1

Opätovne je vhodné (povinné) vložiť adresár \ bin \ umiestnenia v C: \ MinGW64 \ mingw64 \ do PATH rovnakým spôsobom, ako sme to urobili v prípade Java SE.

Pozn.2

K úspešnej kompilácii a buildování je nutné pridať "jni.h" a "jni_md.h" do kompilátora MinGW. Možno to niekoľkými cestami, ale my to urobíme obyčajným kopírovaním z Java SDK (v mojom prípade C: \ ProgramFiles \ JavaJDK \ include \ jni.h a C: \ ProgramFiles \ JavaJDK \ include \ win32 \ jni_md.h) do adresára C: \ minGW64 \ mingw64 \ x86_64-w64-MinGW \ include. Ak to neurobíme, je nutné manuálne pri "kompilácii" danej hlavičkové súbory pridať.

Teraz je vhodné reštartovať PC.

Inštalácie Eclipse CDT

O IDE Eclipse toho písať moc nebudem. Je zadarmo a nemusia sa inštalovať, stačí ho nakopírovať. Návod nájdete tu na ITNetwork. V mojom prípade využívam Eclipse EE ale to nie je povinné, stačí aj obyčajné Eclipse pre SE a konkrétne aktuálne versi Mars. Balíčky pre prácou s C / C ++ sú vo vývojárskej komunite známej ako CDT (C / C ++ Developement Tools).

Stiahnite si Eclipse. Ak si vyberiete Eclipse pre C / C ++, nebudete musieť inštalovať CDT balíčky, ale ak je pre vás C / C ++ iba doplnok (ako to mám ja), stiahnite si verziu pre Java Developery alebo Java EE Developery. Vyberte si verziu 32bit / 64bit a stiahnite si * .zip. Ten rozbaľte a nakopírujte, kamkoľvek chcete. Ja Eclipse skopíruje do C: \ Program Files \ EclipseEE. Po spustení sa vám objaví okno pre definovanie úložisko vášho workspace.

nastavenie Workspace - JNI - Java Native Interface

Ak máte verziu Eclipse Oxygen a novšie (Photon, 2018-09), potom je stiahnutie rozšírenie jednoduché. Kliknite na Help - Marketplace a vyberte vyhľadať CDT. Potom už vykonajte len nastavenie perspektívy.

Rozšírená CDT - JNI - Java Native Interface

V prípade staršej verzie Eclipse Neon a starších stiahneme balíčky a potom nastavíme perspektívu pre C / C ++. Ako to urobíme? Klikneme na Help - Install new softvér a objaví sa dialógové okno, kde sa vykonáva výber balíčkov, ktoré chceme stiahnuť.

inštalácia balíčkov - JNI - Java Native Interface

Klikneme na Add .. ako Name vložíme Eclipse CDT a do Location vložíme http://download.eclipse.org/...releases/8.8 (prípadne si môžete zobraziť všetky zdroje - je to ale niekoľko sto balíčka). Počkáme pár sekúnd, než sa nám objavia strom checkboxov, ktorý nám ponúka možnosti balíčka pre CDT v Eclipse.

nastaveni výberu - JNI - Java Native Interface

Vyberieme CDT Main Features - C / C ++ Development Tools, C / C ++ Development Tools SDK a CDT Optional Features - CDT Visual C ++ Support, C / C ++ Autotolls support.

vyberieme balíčky - JNI - Java Native Interface

Potom potvrdíme NEXT - NEXT - vyberie I accept - FINISH a balíčky sa nám začnú sťahovať. Sťahovanie balíčku môže trvať až cca 5-30 minút. Samozrejme existuje aj riešenie, kedy si dané balíčky sami stiahnete a nakopírujete do Eclipse, ale toto mi pripadá pohodlnejšie. Eclipse sa potom sám reštartuje a spustí. Úvodnú obrazovku preskočíme kliknutím na ikonu "Workbench" vpravo hore.

Na záver si ešte pridáme C / C ++ perspektívu.

vyber perspektívy - JNI - Java Native Interface

Teraz sa môžeme jednoducho prepínať medzi Javou a C / C ++.

Prepínanie medzi perspektívami - JNI - Java Native Interface

V budúcom dieli si v Eclipse CDT vyskúšame vytvorenie programu Hello World v C, C ++ a Jave.


 

Všetky články v sekcii
JNI - Java Native Interface
Preskočiť článok
(neodporúčame)
JNI - MinGW a Eclipse - CDT príklady
Č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