1. díl - JNI - Nastavení prostředí pro JNI: Eclipse, MinGW

Java Pro pokročilé JNI JNI - Nastavení prostředí pro JNI: Eclipse, MinGW

Co to JNI vlastně je? Celý název je Java Native Interface a jedná se o rozhraní (neplést si s implementací rozhraní), které umožňuje přístup k nativním metodám vyvinutých v nativních jazycích (např. C, C++, ASM). Teoreticky by to mělo fungovat pro všechny nativní jazyky, které jsou schopny vytvořit sdílené knihovny (shared libraries). Na platformě Windows známé jako .dll a na platformě Linux známé jako .so. Teoreticky by to mohlo fungovat i se statickými knihovnami, ale to nemám ověřené.

V těchto nativních jazycích se vytvoří sdílené knihovny, které pak v Javě načteme a metody (funkce) v nich obsažené, můžeme normálně volat. Co tím získáme? Ve většině případů tím, že vynecháme JVM (Java Virtual Machine) - nativní metody přistupují přímo k systémovým prostředkům a tím by mělo dojít ke zvýšení rychlosti provádění daných metod. Ovšem není to vždy pravidlem. Mám vyzkoušené, že identický algoritmus (násobení double matic) v jiných jazycích proběhne na stejném stroji v Javě přes JVM rychleji než přes JNI nebo přímo přes program napsaný v C. Takže dogma, že Java je principiálně pomalejší není ve všech případech správné.

K samotnému JNI a prvnímu praktickému příkladu přistoupíme až ve třetím pokračování tohoto seriálu. V prvním díle nás čeká nastavení prostředí a v druhém díle vytvoření triviálních příkladů Hello World pomocí Eclipse v C, C++ a Javě.

Seriál je umístěn do skupiny článků pro pokročilé. A to z důvodů, že skutečně očekávám používání a pochopení objektů, metod a výjimek. Nemíním tyto triviálnosti rozebírat. Dokonce by bylo vhodné či prakticky povinné mít základy C nebo C++. V dalších kapitolám při psaní těl metod je nutno znát syntaxi daných jazyků a koncept pointerů. Pokud tomu plně nerozumíte je nutno si to nejprve nastudovat, pochopit a vyzkoušet.

Takže začneme. V tomto díle nás čeká pouze nastavení prostředí.

  • naistalujeme Javu (JDK a JRE)
  • naistalujeme MinGW (pro kompilaci C/C++)
  • spustime Eclipse a stáhneme balíčky CDT pro podporu C/C++ v Eclipse IDE

Pozn.

Pokud chcete vše instalovat s právy administrátora a chcete programovat s právy user, je nutno nastavit práva přístupu skupiny user k těmto nově vytvořeným adresářům. Pokud systém práv přístupu nevyužíváte tuto poznámku neřešte.

Instalace Javy

Instalací Javy SE (Standard Edition) je myšleno instalace JDK (Java Developer Kit) a JRE (Java Runtime Enviroment). Budeme na to potřebovat přibližně cca 0,55 GB místa. Postup instalace je ukázán zde a instalační soubory můžete stáhnout z ofic. webu Oracle.

Je vhodné (povinné) provést nastavení systémové proměnné PATH ve Windows. Vyřeší se nám tím spousta problémů při programování v Javě. Umožní nám to například volat příkazy (programy) obsažené umístěné v daném adresáři. Jak na to?

Ve Windows (v mém případě ve Windows 10) si najdeme Ovládací panely a budeme postupovat takto: Ovládací panely – Systém – Upřesnit nastavení systému – Upřesnit – Enviroment Variables (Proměnné prostředí) – vybereme PATH a dáme upravit. Zde dáme Nový a vložíme umístění adresáře \bin v Javě JDK i JRE. Já si instaluji JDK do adresáře C:\Program Files\JavaJDK a JRE do C:\Program Files\JavaJRE, ale vy samozřejmě můžete mít Javu v jiném adresáři. Takže v mém případě jsou cesty C:\Program Files\JavaJDK\bin a C:\Program Files\JavaJRE\bin.

Nastaveni PATH

Nyní je vhodné restartovat PC.

Instalace MinGW

Proč MinGW? Existuje spousta jiných např. Microsoft Compiler umístěný ve Visual Studiu, Cygwin nebo Intel Compiler apod. Pokud máte nainstalované Visual Studio, můžete tento krok přeskočit, protože již kompilátor máte. Jenom pak při tvorbě projektu nezapomeňte vždy nastavit Visual C++ kompilátor. Pro ostatní je zde odkaz na stažení MinGW pro Windows.

Stažený soubor spustíme jako administrátor.

Nastavení instalátoru část1

Instalaci doporučuji nastavit přímo do rootu C:\, protože umístění v jiných adresářích či případně na jiných discích může způsobit problémy při práci s ním.

Nastavení instalátoru část2

Probíhá stahování a instalace

Probíhá stahování

Po ukončení instalace instalátoru klikneme na aktivní tlačítko Next a poté na Finish.

Pozn.1

Opětovně je vhodné (povinné) umístit adresář \bin\ v C:\MinGW64\mingw64\ do PATH stejným způsobem, jako jsme to provedli v případě Java SE.

Pozn.2

K úspěšné kompilaci a buildování je nutno přidat "jni.h" a "jni_md.h" do kompilátoru MinGW. Lze to několika cestami, ale my to uděláme obyčejným kopírováním z Java SDK (v mém případě C:\ProgramFiles\Ja­vaJDK\include\jni­.h a C:\ProgramFiles\Ja­vaJDK\include\win32\jni­_md.h) do adresáře C:\MinGW64\min­gw64\x86_64-w64-mingw\include. Pokud to neprovedeme, je nutno manuálně při "kompilaci" dané hlavičkové soubory přidat.

Nyní je vhodné restartovat PC.

Instalace Eclipse CDT

O IDE Eclipse toho psát moc nebudu. Je zdarma a nemusí se instalovat, stačí jej nakopírovat. Návod najdete zde na ITNetwork. V mém případě využívám Eclipse EE ale to není povinné, stačí i obyčejné Eclipse pro SE a konkrétně aktuální versi Mars. Balíčky pro prací s C/C++ jsou ve vývojářské komunitě známé jako CDT (C/C++ Developement Tools).

Stáhněte si Eclipse. Pokud si vyberete Eclipse pro C/C++, nebudete muset instalovat CDT balíčky, ale pokud je pro vás C/C++ pouze doplněk (jako to mám já), stáhněte si verzi pro Java Developery nebo Java EE Developery. Vyberte si verzi 32bit/64bit a stáhněte si *.zip. Ten rozbalte a nakopírujte, kamkoli chcete. Já Eclipse kopíruji do C:\Program Files\EclipseEE. Po spuštění se vám objeví okno pro definovaní úložiště vašeho workspace.

Nastavení Workspace

Jako první stáhneme balíčky a pak nastavíme perspektivu pro C/C++. Jak to uděláme? Klikneme na Help – Install new software a objeví se dialogové okno, kde se provádí výběr balíčků, které chceme stáhnout.

Instalace balíčků

Klikneme na Add.. jako Name vložíme Eclipse CDT a do Location vložíme http://download.eclipse.org/…releases/8.8 (případně si můžete zobrazit všechny zdroje - je to ale několik set balíčku). Počkáme pár sekund, než se nám objeví strom checkboxů, který nám nabízí možnosti balíčku pro CDT v Eclipse.

Nastaveni výběru

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

Vybereme balíčky

Pak potvrdíme NEXT – NEXT – vybere I accept – FINISH a balíčky se nám začnou stahovat. Stahování balíčku může trvat až cca 5-30 minut. Samozřejmě existuje i řešení, kdy si dané balíčky sami stáhnete a nakopírujete do Eclipse, ale toto mi připadá pohodlnější. Eclipse se pak sám restartuje a spustí. Úvodní obrazovku přeskočíme kliknutím na ikonu "Workbench" vpravo nahoře.

Na závěr si ještě přidáme C/C++ perspektivu.

Vyběr perspektivy

Teď se můžeme jednoduše přepínat mezi Javou a C/C++.

Přepínání mezi perspektivami

V příštím díle si v Eclipse CDT vyzkoušíme vytvoření programu Hello World v C , C++ a Javě.


 

  Aktivity (3)

Článek pro vás napsal Robert Michalovič
Avatar
viz. linkedin

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Miniatura
Všechny články v sekci
JNI - Java Native Interface
Miniatura
Následující článek
JNI - MinGW a Eclipse - CDT příklady

 

 

Komentáře

Avatar
Richard H.
Redaktor
Avatar
Richard H.:

Určitě pokračuj také jsem přemýšlel že něco takového napíšu.

Odpovědět 23.12.2015 20:43
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.