Programování

Pochopení sun.misc.nebezpečný

Minulý týden se objevila zpráva, že někteří vývojáři jsou ve zbrani a tvrdí, že Oracle navrhuje odstranění slunce.misc.nebezpečný v Javě 9 rozbije ekosystém Java. Pro mnoho vývojářů, kteří nejsou zapojeni do programování na nízké úrovni, je však soukromé API pravděpodobně zahaleno tajemstvím. Co je toto API tak nebezpečné, že jeho samotný název je nebezpečný?

Blogger a přispěvatel open source Rafael Winterhalter v článku „Porozumění sun.misc.Unsafe“ vysvětluje, že nebezpečný kód je často vyžadován pro programování na nízké úrovni, kde vývojáři upravují funkčnost platformy pro konkrétní účel. Zatímco JNI (Java Native Interface) je považováno za nejbezpečnější možnost pro nízkoúrovňové programování v Javě, mnoho open source projektů používá Nebezpečný jako méně omezené řešení.

Winterhalter představuje jeden z několika příkladů využití Nebezpečný překonat překážku programování v Javě:

Poprvé jsem použil Nebezpečný třída byla pro vytvoření instance třídy bez volání některého z konstruktorů třídy. Potřeboval jsem proxy celou třídu, která měla pouze poměrně hlučný konstruktor, ale chtěl jsem jen delegovat všechna vyvolání metod na skutečnou instanci [...] Vytvoření podtřídy bylo snadné a pokud byla třída zastoupena rozhraním, vytvoření proxy by byl přímočarý úkol. S drahým konstruktérem jsem se ale zasekl. Pomocí Nebezpečný třídy, byl jsem však schopen se k tomu propracovat.

Viz „Porozumění sun.misc.Unsafe“ a „Java magic, Část 4: sun.misc.Unsafe“, kde najdete další příklady, které ukazují, proč a jak používat Nebezpečný v programech Java.

Tento příběh „Understanding sun.misc.Unsafe“ původně publikoval JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found