Portál AbcLinuxu, 8. května 2024 06:47


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
10.11.2010 10:42 Palo
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Odpovědět | Sbalit | Link | Blokovat | Admin
Nepouzivajte JNI. Ak to skutocne potrebujete napiste si nieco v C/C++ a potom cez File pipe, siet, ... si to transferujte do Javy kde to spracujete.
D.A.Tiger avatar 10.11.2010 12:12 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Proč? Není to přece jen pracnější? Pokud zpracováváš jednoduché typy v jednoduchém prográmku, tak by to bylo řešitelné, ale co když potřebuješ transfer a zpracování složitejších objektu? Nebo použít nějakou C/C++ knihovnu? To jako budeš dělat kvůli tomu special wraper, který bude komunikovat s javovskými aplikacemi?
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
10.11.2010 13:15 Palo
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Odpoved preco nepouzivat JNI najdete aj tu: http://en.wikipedia.org/wiki/Java_Native_Interface

Myslim ze s polkou z nich som sa stretol priamo nazivo. Hlavne stabilita JVM dost trpi.

Ten specialny wrapper iste nebude komplikovanejsi nez na co narazis pri integracii Javy s C/C++ kniznicami.
Luboš Doležel (Doli) avatar 10.11.2010 14:04 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Přečetl jsem si to a jde o problémy, které jsou pro programátory nativních aplikací každodenní chéb. Prostě když píšu nativní kód, tak musím napsat nativní kód tak, aby nedělal blbosti - nehavaroval, uvolňoval paměť a hlídal chyby. Nic nečekaného.
12.11.2010 13:39 Palo
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Take zamyslenie. Na co by som potreboval spustat nativny kod? Na siet, subory, seriovu linku a kopec dalsich veci sa dostanem odladenym (tiez nativnym) kodom priamo z JVM. Takze na co by som potreboval C/C++. Na pristup k nejakym hroznym zdrojom ktore maju nepredvidatelne spravanie takze aj ten C/C++ bude mat nepredvidatelne (chybne) spravanie. A preto je dobre mat to mimo vlastneho memory space java programu ktory to spracovava. Tuto chybovu cast urobit ako maly program ktory feeduje velky Javovy program. Problem s protokolom alebo niecim podobnym nevidim. Na to existuje velke mnozstvo kniznic. Akekolvek ine riesenie ktore umoznuje bezat C/C++ mimo memory space Javy je lepsie ako bezat nativny kod z Javy. Dokonca aj spustenie externeho programu a citanie a zapis na STDIN/STDOUT je radovo lepsi sposob. Nebranim samozrejme nikomu v experimentovani a robeni vlastnych chyb. Toto su moje skusenosti a odporucania. JNI nikdy viac.
Luboš Doležel (Doli) avatar 12.11.2010 14:28 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Na pristup k nejakym hroznym zdrojom ktore maju nepredvidatelne spravanie takze aj ten C/C++ bude mat nepredvidatelne (chybne) spravanie.
Tak to ano, ale v takové situaci by se dělalo oddělení stranou i u nativních aplikací. Já využití vidím v přístupu k nativním knihovnám jako SQLite (bylo by hloupé to reimplementovat v Javě, ano, znám JDBC, je to jen příklad), Qt, GTK+, ffmpeg nebo různým platformně specifickým věcem (XVideo).
12.11.2010 16:58 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Ten „hrozný zdroj s nepředvídatelným chováním“ může být třeba linuxové jádro. Pokud budete chtít nějakou jeho funkci (která není jinak z Javy dostupná) volat často, může být výkon spotřebovaný navíc pro nějakou síťovou komunikaci nebo dokonce spouštění nových procesů nezanedbatelný. Jako příklad si představte třeba web server, který bude mime typ souboru zjišťovat z rozšířených atributů souboru (ke kterým se před Javou 7 jinak, než nativním voláním, nedostanete).
12.11.2010 20:41 pepa_u
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Ona je bohuzel hromada knihoven, ktere v Jave neexistuji. Komunikovat s nimi pres sit, stdin/out a nebo neco podobneho by bylo pri nejmensim neefektivni.

Ja pozivam CERN ROOT knihovny z Javy pres JNI, vse jsem odladil, nenam nejmensi problem. Zpracovavam GB dat, fituju funkce, atd atd, vsecko s pomoci C++ knihovny ROOT volane z Javy. A co vic, funguje to prez problemu na Linuxu, Mac OS X i Windows.
Algi avatar 18.11.2010 15:19 Algi | skóre: 1 | blog: Sinner
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Take zamyslenie. Na co by som potreboval spustat nativny kod?
Odpověď je naprosto triviální. Volitelná integrace s určitýma nativníma knihovnama/frameworkama. Konkrétní příklad z praxe? AddressBook.framework - volání jeho API z Javy je jednoduché a efektivní. Dvě otázky, kterými byste mohl oponovat:

1) Proč volat framework dostupný pouze na jednom OS? 2) Proč si nenapsat obdobnou funkcionalitu v Javě?

Moje zdůvodnění bylo prosté. Proč ne, když je to k dispozici. Lépe tam ta aplikace zapadá a nebudu znovu vynalézat kolo. Při pečlivém a správném napsání nativního kódu (bez použití JNA) nebyl jediný problém. Uznávám, daný kód byl vcelku jednoduchý a moc šancí na chybu v něm nebylo. Nicméně z části to bylo dáno také volbou nativního jazyka Objective-C.
I'm a firestarter, twisted firestarter...
Luboš Doležel (Doli) avatar 10.11.2010 12:17 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Chtěl bych vidět, jak by to takhle dělali třeba v OpenOffice.org. To by bylo šílený.
10.11.2010 13:20 Palo
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
To co predvadzaju pri spajani Javy s OpenOffice je dost sialene aj teraz. Ja nemam nic proti spustaniu Javy z C/C++ ako nejakym callbackom to je fajn a dokonca aj velmi rychle. Ale cele toto JNI je nanic.
D.A.Tiger avatar 10.11.2010 23:05 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Ja nemam nic proti spustaniu Javy z C/C++
Pokud jsem to pochopil zprávně, ta JNI pracuje přesně opačně - umožňuje použít C/C++ kod v Javě.
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
Luboš Doležel (Doli) avatar 10.11.2010 23:30 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Funguje oběma směry. Budu to později v tomto seriálu také ukazovat.
11.11.2010 18:00 arny
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Odpovědět | Sbalit | Link | Blokovat | Admin
Pekny clanok. Privital by som, ked ukoncite popisovanie JNI, clanky aj o JNA (Java Native API), ktore podla mna zlahcuje integraciu nativneho kodu s javou. Je to nieco podobne ako P/Invoke v .NETe (spominam to tu hlavne preto aby sa .NETatci priliz nevychvalovali ;)).
11.11.2010 18:01 arny
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
prepacte za omyl, JNA = Java Native Access
Luboš Doležel (Doli) avatar 11.11.2010 21:43 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Až bude probrané JNI komplet, přijde řada i na JNA.
12.11.2010 12:44 Canibal
Rozbalit Rozbalit vše Re: Java Native Interface: propojujeme Javu a C/C++ – 2
Odpovědět | Sbalit | Link | Blokovat | Admin
U nas jsem poizivali na propojeni Javy C++ super vec:

http://sourceforge.net/projects/jace/

Je to proxy generator C++ -> Java /zpet. Muzu jen doporucit. (Pred 2 roky nepodporovali wchar (bylo nutne dodelat), ale myslim, ze uz to maji).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.