Portál AbcLinuxu, 26. května 2024 13:18


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

Vložit další komentář
12.8.2011 10:32 Tomáš
Rozbalit Rozbalit vše Re: Java Native Interface: vytváříme virtuální stroj
Odpovědět | Sbalit | Link | Blokovat | Admin

Zajímalo by mě proč je kontrukce

public class Trida {
     private long nativniData; // v nativniData je nějaký Cčkový ukazatel
}

špatně. V rámci metody disposeNative() se pak nativniData korektně uvolní z paměti.

Stejně tak nerozumím tomu, proč by metoda finalize neměla být nativní? S předpokladem, že nativní finalize volá finalize předka ve svém závěru.

Předem díky za vysvětlení.

Luboš Doležel (Doli) avatar 13.8.2011 16:05 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Java Native Interface: vytváříme virtuální stroj
V rámci metody disposeNative() se pak nativniData korektně uvolní z paměti.
Jde o principiání nekorektnost. Ukazatale jsou a vždy budou jen 64bitové, že tam dáváte long?

To kolem finalize bych považoval za best practice. Jde spíš o praktičnost. Pokud by bylo finalize nativní a vy byste potřeboval najednou uzavírat nějaký soubor, tak byste to musel udělat přidáním volání close() do nativního kódu (což je zbytečně složité). Tak je lepší si to rovnou oddělit.
16.8.2011 14:02 Tomáš
Rozbalit Rozbalit vše Re: Java Native Interface: vytváříme virtuální stroj

Už rozumím. Jde o to, že není nikde definováno, že sizeof(void*) < sizeof(long). Já bych se asi místo vytváření mapy (= výkonostní zabiják) spíše přikláněl,k využití nativní třídy CPointer, která má pointer peer deklarovaný jako

public abstract class CPointer {
protected long peer;
     ...
}

A kruci, zase long. ;-)

Luboš Doležel (Doli) avatar 17.8.2011 02:23 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Java Native Interface: vytváříme virtuální stroj
Mapa není až takový zabiják :-) Hledání ve vhodně udělané mapě je v čase log_2(n). Při 10 tisísích takto spravovaných objektů je pro dohledání ukazatele nutné projít jen cca 13 prvků z mapy, než je nalezen ten správný. To není vůbec zlé.

Jinak ty odkazované stuby jsou taková znouzecnost, neboli jak emulovat C v Javě. (Normálně by se na tohle použilo JNA a člověk by si tyhle věci psát nemusel.) Je možné, že ukazatel nebude nikdy delší než javovský long. Ale takových předpokladů se už ve světě počítačů udělalo tolik a kolik škody to taky napáchalo... Mapa mě hřeje na srdci víc :-)
15.12.2013 19:20 korem
Rozbalit Rozbalit vše Re: Java Native Interface: vytváříme virtuální stroj
Odpovědět | Sbalit | Link | Blokovat | Admin
O vytváření vlastních virtuálek jsem se ani doposud nezajímal, ale tenhle tvůj článek mi docela rozšířil obzory. Jinak Java mi přijde jako jeden z nejlepších jazyků, nejen srozumitelně, ale i v rámci nějakýho uplatnění. A nejlépe uplatnění v cizině. Zkoušel jsem najít nějaké weby, které se tím specializují, nevíte nějaké osvědčené? Mě říkal kámoš o itprace-nemecko.cz/,prý mu tam sehnali nějakou práci, akorát jsem se ještě nedostal k tomu, abych tam napsal životopis... :D (snad neva ten odkaz, nemyslel jsem to jako spam, spíš jestli s touhle konkrétní firmou má někdo nějaké zkušenosti)
6.11.2019 00:18 Johnathon Markstrum
Rozbalit Rozbalit vše Re: Java Native Interface: vytváříme virtuální stroj
Odpovědět | Sbalit | Link | Blokovat | Admin
Very informative in getting my problem solved. It took me a while to figure this stuff out but with all your help I did it! I was doing contracting for a friend and towing business owener who is way worse at this stuff than me so he's thankful too! Cheers from Saskatoon, with much love!

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.