| Google Native Client | |
| Fejlesztő | Google és mások |
| Legfrissebb stabil kiadás | Pepper 23 |
| Legfrissebb fejlesztői kiadás | Pepper 27 (2013. április 12. – 4941 napja) |
| Programozási nyelv | C++ |
| Operációs rendszer | Microsoft Windows, Linux, Mac OS, Chrome OS |
| Platform | |
| Kategória | Natív kód homokozóban való futtatása, a webböngészőn belül |
| Licenc | New BSD license |
| Kódtár | https://chromium.googlesource.com/native_client/src/native_client.git |
| A Google Native Client weboldala | |
A Google Native Client („natív kliens”, rövidítve NaCl, utalva a nátrium-kloridra, azaz konyhasóra) egy homokozó (sandbox) technológia, ami az Intel x86 (32, illetve 64 biten), illetve az ARM utasításkészlet egy részhalmazát képes futtatni, szoftveralapú hiba-izolációja mellett. A projekt célkitűzése natív kód futtatása webböngészőből, amivel a webalkalmazások sebessége megközelíthetné az asztali alkalmazásokét, ami jól illeszkedik a Google Chrome OS-szel kapcsolatos terveihez. A technológia segítségével biztonságosabbá tehetők a böngészőpluginek, a tervek szerint pedig akár más alkalmazások is részben vagy egészében bevihetők lesznek a Native Client alá.
2011. december 9-én a Google egy technológiai bemutató során bejelentette több processzor-intenzív és gazdag grafikájú játék (köztük a Bastion) új, Chrome-ban futó verzióját. A jelenlegi NaCl-verzió támogatja a hardveres gyorsítású 3D grafikát (OpenGL ES 2.0-n keresztül), a homokozón belüli helyi fájltárolást, a dinamikus betöltést, teljes képernyős módot és az egér a böngészőn belülre rögzítését. Tervezik az NaCl átültetését mobil eszközökre is (okostelefonok, PDA-k).
Az ARM-et is támogató Native Client a Google Chrome 25-ös verziójának lesz része; ez az ARM-alapú Chromebookokon működni fog, az ARM-alapú okostelefonokon még nem. Ezekre még 2013-ban tervezik megjelentetni a keresztplatformos, PNaCl-alapú natív klienst.
A Native Client egy a Google által fejlesztett, open source projekt. A szoftver lehetőségeinek bemutatására a Quake-et és a XaoSt ültették át a Google Native Client Platformra. A Native Client pluginként a Firefox, Safari, Opera, beépítve a Google Chrome webböngészőn támogatott (utóbbin az 5-ös verziótól kezdve), Windows, Mac és Linux operációs rendszereken, x86 hardveren. A Chrome korábban alapértelmezetten kikapcsolt, kísérleti funkcióként tartalmazta a klienst, a 14-es főverzióban kapcsolták be; azóta natív alkalmazások feltölthetők a Chrome Web Store-ba, és az újabb Chrome-verziókban (ha engedélyezve lett a chrome://flags alatt), a natív kliens alkalmazásait bármilyen weboldalról futtatni lehet.
Létezik ARM, valamint x86-64 utasításkészletre írt implementáció is. Tudni kell azonban, hogy mindhárom jelenlegi megvalósítás csak a gazdagép natív utasításkészletében írt kódot képes futtatni. Ezt a problémát a PNaCl (ejtsd mint: pinnacle, „orom”), azaz Portable Native Client hivatott orvosolni. Egy alkalmazás PNaCl alatti, hordozható futtatásához, LLVM köztes nyelvre (bitcode) kell lefordítani azt.
A Google Native Client x86-64 és ARM alatt Software Fault Isolationt használ a homokozó megvalósítására. Az x86-32 implementáció különlegessége a homokozó újszerű megvalósításában van, ami az architektúra egy ritkán használt képességét, a memória-szegmentálás lehetőségét használja ki. A Native Client x86-os szegmenseket alakít ki, hogy korlátozza a homokozóban futó kód által hozzáférhető memóriaterületeket. Egy kód-ellenőrzőt használ a nem biztonságos – pl. rendszerhívásokat végző – utasítások kiszűrésére. Hogy ne lehessen a védelmet azzal kicselezni, hogy egy nem biztonságos utasítást rejtenek egy biztonságos utasítás belsejébe, a Native Client megköveteli, hogy az összes közvetett (indirekt) ugrás 32 bájtra igazított memóriablokk elejére történjen, és nem megengedettek a mindkét 32 bájtos memóriablokkba „belógó” utasítások. Ezen megszorítások miatt a C kódot újra kell fordítani a Native Client alatti futtatáshoz, amire a GNU toolchain (ezen belül a gcc és binutils) a Native Clienthez készített egyedi verziói adnak lehetőséget.
A Native Client a Newlibet használja C library-ként, de egy GNU libc-re átültetett változat is hozzáférhető.
A 0.5-ös kiadástól kezdve a Native Client stabil bináris alkalmazás-csatolófelülettel (ABI) rendelkezik. Ez nagyjából azt jelenti, hogy a Google Chrome 14-es verziójának NaCl-megvalósításához lefordított, abban működő kódok a Chrome valamennyi későbbi verziójában is működőképesek lesznek.
Ahogy az NaCl a konyhasóra utal, a szójátékot folytatva a bors (angolul: pepper) is szerepet kap.
A Pepper API egy Native Client modulok létrehozására szolgáló, keresztplatformos, nyílt API. A Pepper Plugin API, röviden PPAPI egy keresztplatformos API Native Client által biztonságossá tett böngészőpluginek létrehozására, először a Netscape NPAPI-ja alapján, majd teljesen újraírva. A Chromium és a Google Chrome Flash-lejátszóból NPAPI és PPAPI-változatot is tartalmaz, de a beépített PDF-néző már kizárólagosan a Pepperrel működik.
2009. augusztus 12-én a Google Code oldalán jelentették be a Pepper projektet és a hozzá tartozó Pepper Plugin API-t (PPAPI), „egy módosított NPAPI-ként, ami a plugineket hordozhatóbbá és biztonságosabbá teszi”. A kiterjesztést kimondottan arra tervezték, hogy megkönnyítse a külön folyamatként futó pluginek futtatásának implementációját. A projekt további céljai közé tartozik a pluginek teljesen keresztplatformossá tételéhez keretrendszer biztosítása.
A felmerült témák közé tartozik:
A folyamatosan bővülő Pepper API támogat továbbá Gamepadeket (version 19) és a WebSocketet (version 18) is.
2012 áprilisában a Google Chrome az egyetlen böngésző, ami az új, PPAPI pluginmodellt használja. A Mozilla bejelentette, hogy „ez idő szerint nem érdekli őket a Pepper, illetve nem dolgoznak a támogatásán”.
Egyesek (pl. Chad Austin az IMVU-tól) dicsérik a Native Clientet, kiemelve, hogy nagy teljesítményű alkalmazásokat lehet vele biztonságos módon a webre vinni (a natív kódhoz képest kb. 5% teljesítménycsökkenéssel), továbbá felgyorsítja a kliensoldali webes alkalmazások fejlődését azzal, hogy a JavaScript mellett egyéb programozási nyelvek is használhatók vele. Mások kritikusabbak a projekttel. Jay Sullivan, a Mozilla termékekért felelős alelnöke kijelentette, hogy nem tervezik natív kód futtatását a böngészőben, mivel „Ezek a natív alkalmazások olyanok, mint kis fekete dobozok egy weboldalon. […] Mi tényleg a HTML-ben hiszünk, és erre szeretnénk fókuszálni.” Håkon Wium Lie, az Opera CTO-ja Tim Berners-Lee-t parafrazeálva úgy gondolja, hogy „az NaCl a web előtti, régi rossz idők iránti vágyakozás” és hogy „az NaCl egy új platform építéséről szól, vagy egy régi platform a webre portolásáról […] ami komplexitási és biztonsági kérdéseket fog magával hozni, és elvonja a figyelmet magáról a webes platformról”. Christopher Blizzard, a Mozilla Open Source-evangelistája attól tart, hogy az alkalmazások forráskódja nélkül az innováció üteme lassulni fog, és az NaCl-t a Microsoft ActiveX technológiájához hasonlítja, amit a DLL hell-lel való küzdelem jellemez. Nézetei szerint, még ha biztonságos is, a Native Client nem jó dolog.
{{cite web}}: Check date values in: |accessdate= (súgó)CS1 karbantartás: több név: szerzőfelsorolás (link){{cite web}}: Check date values in: |accessdate= (súgó)CS1 karbantartás: több név: szerzőfelsorolás (link)