Programavimas

Suprasti sun.misc. Nesaugu

Praėjusią savaitę pasirodė naujiena, kad kai kurie kūrėjai yra ginkluoti, teigdami, kad „Oracle“ pasiūlė pašalinti sun.misc.Nesaugu „Java 9“ sugadins „Java“ ekosistemą. Tačiau daugeliui kūrėjų, kurie nėra įsitraukę į žemo lygio programavimą, tikriausiai privatų API gaubia paslaptis. Kuo ši API tokia pavojinga, kad yra pats jos pavadinimas nesaugus?

Tinklaraštininkas ir atvirojo kodo bendraautorius Rafaelis Winterhalteris knygoje „Sun.misc.Unsafe supratimas“ paaiškina, kad nesaugus kodas dažnai reikalingas žemo lygio programavimui, kai kūrėjai modifikuoja platformos funkcijas tam tikru tikslu. Nors JNI („Java Native Interface“) laikoma saugiausia žemo lygio „Java“ programavimo galimybe, daugelis atvirojo kodo projektų naudojo Nesaugu kaip mažiau suvaržytą sprendimą.

Vinterhalteris pateikia vieną iš kelių pavyzdžių Nesaugu įveikti „Java“ programavimo kliūtį:

Pirmą kartą pasinaudojau Nesaugu klasė buvo skirta kuriant klasės egzempliorių, nepakviečiant nė vieno klasės konstruktoriaus. Man reikėjo įgalioti visą klasę, kurioje buvo tik gana triukšmingas konstruktorius, bet aš tik norėjau visus metodo iškvietimus perduoti realiam egzemplioriui [...] Sukurti poklasį buvo lengva ir, jei klasę reprezentavo sąsaja, sukurti įgaliojimas būtų buvęs tiesioginis uždavinys. Su brangiu konstruktoriumi vis dėlto buvau įstrigęs. Naudojant Nesaugu klasėje, aš vis dėlto galėjau tai padaryti.

Žr. „Sun.misc.Unsafe supratimas“ ir „Java magija“, 4 dalis: sun.misc.Unsafe “, kur rasite papildomų pavyzdžių, parodančių, kodėl ir kaip reikia naudoti Nesaugu „Java“ programose.

Šią istoriją „Suprasti sun.misc.Unsafe“ iš pradžių paskelbė „JavaWorld“.

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