Natív kliens

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt hozzászólók, és jelentősen eltérhet a 2017. szeptember 29-én felülvizsgált verziótól ; az ellenőrzések 16 szerkesztést igényelnek .
Natív kliens
Fejlesztő Google
Beírva C és C++
Operációs rendszer platformközi
Első kiadás 2011. szeptember 16. [1]
Hardver platform x86 , x86_64 , ARM [2] és MIPS
legújabb verzió
Állapot Fejlett
Engedély módosított BSD licenc [d]
Weboldal developer.chrome.com/doc…

A Native Client ( NaCl ) egy sandbox technológia kód futtatására x86 , x86-64 , ARM és MIPS platformokon , amely lehetővé teszi a natív kód biztonságos futtatását közvetlenül a böngészőben, operációs rendszertől függetlenül, a futáshoz közeli sebességgel. natív kód . Ezzel a technológiával biztonságos böngészőbővítményeket , egy alkalmazás részeit vagy magukat az alkalmazásokat is létrehozhatjuk [4] , például a ZeroVM .

A technológia készenlétének bemutatására 2011. december 9-én a Google bemutatott egy játékot [5] gazdag grafikával (a játék jelenleg már nem elérhető). A NaCl hardveres gyorsítású 3D grafikát használ az OpenGL ES 2.0-n keresztül, amely egy helyi tárolási sandboxban fut teljes képernyős képességgel és egérrel való interakcióval. [6] [7]

A Portable Native Client ( angolul  Portable Native Client , rövidítés: PNaCl) ennek a technológiának egy architektúrától független változata. A PNaCl alkalmazások AOT fordítási technológiát használnak . A NaCl alapötlete (natív kód futtatása böngészőben) az ActiveX -ben valósult meg , aminek számos biztonsági problémája van. A NaCl technológia ezt elkerüli egy homokozó használatával.

A NaCl-nek van egy alternatívája, az asm.js , amely lehetővé teszi a C vagy C++ alkalmazások közvetlen böngészőben történő futtatását is (közel natív sebességgel ), támogatja az AOT fordítást , és a JavaScript nyelv egy részhalmaza, azaz pl. visszafelé kompatibilis azokkal a böngészőkkel, amelyek nem rendelkeznek natív támogatással. A NaCl másik alternatívája (bár eredetileg PNaCl alapú) a WebAssembly .

2016. október 12-én egy megjegyzés [8] jelent meg a Chromium projekt hibakövetőjében , amely a Google Pepper és Native Clientjén dolgozó csapatok feloszlatását említi.

2017. május 30-án a Google bejelentette, hogy megszünteti a PNaCl-t a WebAssembly javára . [9]

Leírás

A Native Client egy nyílt forráskódú projekt . A mai napig a Quake [10] , a XaoS , a Battle for Wesnoth , a Doom , a Lara Croft and the Guardian of Light , a From Dust és a MAME , valamint a Csound szoftveres hangszintézis rendszer került át a Native Clientre. A technológia a Google Chrome böngészőben a 14-es verziótól [11] érhető el, és alapértelmezés szerint a 31-es verziótól aktiválódik, amelyben a Portable Native Client (PNaCl) hivatalosan is bemutatkozott. [12]

A technológia ARM implementációja 2010 márciusában jelent meg. [13] Az x86-64, IA-32 és MIPS platformok natív támogatást kaptak.

A PNaCl technológiával történő futtatáshoz az alkalmazást LLVM formátumú , architektúrától független bájtkódba kell fordítani . [14] Az így létrehozott végrehajtható fájlokat PNaCl végrehajtható fájlnak (pexe) nevezzük. A PNaCl build eszközök .pexe fájlokat állítanak elő; NaCl - .nexe. A .nexe fájlok aláírása 0x7F 'E' 'L' 'F' (azaz ELF fájlok). A Chrome lefordítja a pexe-t architektúra-specifikus végrehajtható fájlokká, amelyek futtatásához .

A NaCl szoftveres hibaészlelést és sandbox-védelmet használ x86-64 és ARM platformokon. [15] Az x86-32-es megvalósítás a sandboxing új módját tartalmazza. [16] A Native Client sandboxing memóriaszegmenseit x86 architektúrára állítja be . A kódellenőrzőt a nem biztonságos rendszerhívások hívásainak megakadályozására is használják. A hívás nem védett részére történő ugrás elkerülése érdekében a Native Client megköveteli, hogy minden közvetett ugrás 32 bájthoz igazított blokkban kezdődjön, és az utasítások nem hagyhatják el ezeket a blokkokat. [16] E korlátozások miatt a C vagy C++ nyelven írt kódot speciális módon újra kell fordítani, hogy Native Client technológiával futhasson, ami a GNU eszközlánc speciális verzióival , különösen a GNU Compiler Collection , GNU Binutils és LLVM .

A Native Client a Newlib -et használja szabványos C-könyvtárként , de a GNU C Library portja is elérhető. [17]

Paprika

A Pepper API egy többplatformos ingyenes API modulok létrehozásához a Native Client számára. A Plugin Pepper API ( eng.  Pepper Plugin API , rövidítés: PPAPI) egy többplatformos API a Native Client technológiával védett, NPAPI -n alapuló , de teljesen átírt beépülő modulokhoz. Jelenleg a Chromium -szerű böngészőkben használják az Adobe Flash PPAPI verziójának [18] és a beépített PDF - nézegető [19] futtatására .

PPAPI

2009. augusztus 12-én a Google Code oldalán mutatták be a Pepper API bővítmény fejlesztéséhez kapcsolódó Pepper projektet [20] , amely kimondta, hogy a PPAPI az NPAPI módosításainak halmaza, amelyek célja az ilyen bővítmények hordozhatósága és biztonságosabbá tétele [21]. . A beépülő modult a folyamaton kívüli indítás egyszerű megvalósítására hozták létre. A továbbiakban a projekt célja az volt, hogy keretet biztosítson a teljesen keresztplatformos bővítmények létrehozásához. Ezeket a technológiákat tervezték megvalósítani:

Később a PPAPI használata segített a játékvezérlők és a WebSocket támogatásának megvalósításában .

2010. május 13-tól a Chromium lett az egyetlen böngésző, amely támogatja az új beépülő modult. [22] A Mozilla Firefox nem támogatja a Peppert, mivel a Chrome-ban való megvalósításon kívül nincs teljes API specifikáció, amelyet csak a Blink böngészőmotorhoz hoztak létre . 2016-tól a Peppert a Chrome, a Chromium és a Blink-alapú böngészők, például az Opera támogatják .

Projektek natív kliensen

Van egy The Go Playground nevű webhely , amely 2021. november 17-én archivált a Wayback Machine -nél , amely ezt a technológiát használja, hogy lehetővé tegye a Go -val való kísérletezést közvetlenül a böngészőben.

Nyilvános reakció

Chad Austin dicsérte a Native Client módszerét, amellyel nagy teljesítményű webalkalmazásokat készít (  csak %-kal kisebb teljesítménnyel, mint a gépi kód ) , miközben lehetővé tette az ügyfélalkalmazások fejlődését azáltal, hogy választható nyelvi programozást biztosít (a JavaScript kivételével). [23]

John Carmack , az Id Software társtulajdonosa megemlítette a Native Client-t a 2012 -es QuakeConon :

Ha valamit tennie kell a böngészőben, sokkal érdekesebb a Native Client, amely egy igazán intelligens x86-os hacknek indult, amely lehetővé teszi, hogy azt csináljon, amit akar, anélkül, hogy elhagyná a felhasználói hozzáférési szintű homokozót. Most van dinamikus újrafordítás, és amit C-ben vagy C++-ban írsz, azt valami nem túl optimalizált gépi kódba fordítják, hanem rendkívül közel áll a gépi kódhoz. Mindenféle őrült műveletet végezhetsz mutatókkal és minden mással, amit a játékfejlesztők hardverszinten megszoktak.Carmack, John [24]
  Eredeti szöveg  (angol) : 
Ha egy böngészőn belül kell valamit csinálni, akkor a Native Client sokkal érdekesebb, mint valami nagyon átkozottul okos x86-os hacknek indult úgy, hogy érdekes módon mindezt felhasználói módban sandboxba tudták helyezni. Ez most dinamikus újrafordítás, de valami olyasmi, amit C vagy C++ nyelven programoz, és lefordítja valamire, ami nem az Ön -O4 optimalizálási szintje a teljesen natív kódhoz, hanem baromi közel áll a natív kódhoz. Megcsinálhatod az összes gonosz mutatóhajszát, és bármit, amit akarsz, mint fémes játékfejlesztő.

A Mozilla alelnöke, Jay Sullivan elmondta , hogy a Mozilla nem  tervezi natív kód futtatását a böngészőben, mert

Ezek a natív alkalmazások fekete dobozok egy weboldalon. […] Hiszünk a HTML technológiában, és erre fektetjük energiánkat.Jay Sullivan [  25 ] _
  Eredeti szöveg  (angol) : 
Ezek a natív alkalmazások csak kis fekete dobozok egy weboldalon. […] Nagyon hiszünk a HTML-ben, és erre szeretnénk összpontosítani.

A Mozilla munkatársa , Blizzard bírálta a NaCl technológiát, és azzal érvelt, hogy natív kódot soha nem szabad használni az interneten. Azt is összehasonlította a NaCl-t a Microsoft ActiveX technológiájával , amely elérte a DLL pokol szintjét . [négy]

Håkon Wium Lie ( norvégul :  Håkon Wium Lie ) , az Opera technikai igazgatója úgy véli , hogy

Úgy tűnik, hogy a NaCl „azokban a rossz időkben, a web előtt célozza meg” […] A Native Client lényege egy új platform építése – vagy egy régi portolása a webre […], ami összetettebb és biztonsági problémákat vet fel, és megfosztja a figyelem internetes platformja.Håkon Wium Lie ( norvég  Håkon Wium Lie ) [4]
  Eredeti szöveg  (angol) : 
Úgy tűnik, hogy a NaCl „a régi rossz időkre vágyik, a web előtt” […] A Native Client egy új platform építéséről szól – vagy egy régi platform áthelyezéséről az internetre […], ez összetettséget és biztonsági problémákat fog okozni, és elvonja a hangsúlyt a webes platformról.

Brendan Eich , a Mozilla műszaki igazgatója elmondta, hogy az ECMAScript 6 minden webalkalmazás-fejlesztési igény kielégítésére elegendő. [26]

Lásd még

Jegyzetek

  1. A Google natív kliense elérhetővé válik a Chrome-ban – 2011.
  2. Natív kliens támogatás az ARM - 2013-on.
  3. https://developer.chrome.com/native-client/sdk/release-notes#chrome-pepper-49
  4. 1 2 3 Metz, Cade . Google Native Client: A jövő hálója – vagy a múlt?  (angol)  (2011. szeptember 12.). Az eredetiből archiválva: 2016. augusztus 6. Letöltve: 2016. augusztus 6.
  5. Hodakovszkij, Konsztantyin . A Google Chrome új technológiája a Bastiont hozza a böngészőbe  (2011. december 13.). Archiválva az eredetiből 2016. augusztus 21-én. Letöltve: 2016. augusztus 6.
  6. Stefansen, Christian . A játékok, alkalmazások és futtatókörnyezetek a Native Clientbe kerülnek  (  2011. december 9.). Az eredetiből archiválva : 2016. augusztus 19. Letöltve: 2016. augusztus 6.
  7. Rosenblatt, Seth . A Native Client a Chrome-ot csúcskategóriás játékplatformmá változtatja  (  2011. december 9.). Archiválva az eredetiből 2016. április 27-én. Letöltve: 2016. augusztus 6.
  8. Bugs.chromium.org  . _ bugs.chromium.org (2016. november 12.). Letöltve: 2018. március 7. Az eredetiből archiválva : 2017. augusztus 18..
  9. Viszlát PNaCl, Hello WebAssembly!  (eng.) , Chromium Blog  (2017. május 30.). Az eredetiből archiválva : 2017. május 30. Letöltve: 2018. március 7.
  10. Humphries, Matthew . A Google bemutatja a Quake-klónt, amely Native Clientben fut  (  2010. május 13.). Archiválva az eredetiből 2016. augusztus 21-én. Letöltve: 2016. augusztus 6.
  11. Chen, Brad . A Chrome új, stabil kiadása, amely kiterjeszti az internet határait  (  2011. szeptember 16.). Az eredetiből archiválva: 2016. augusztus 20. Letöltve: 2016. augusztus 6.
  12. Sehr, David . Hordozható natív kliens: A sebesség, a biztonság és a hordozhatóság „csúcsa”  (  2013. november 12.). Az eredetiből archiválva : 2016. május 13. Letöltve: 2016. augusztus 6.
  13. Sehr, David . Natív ügyféltámogatás az ARM-en  (eng.)  (2013. január 22.). Archiválva az eredetiből 2016. július 27-én. Letöltve: 2016. augusztus 6.
  14. Alan Donovan, Robert Muth, Brad Chen, David Sehr. PNaCl: Portable Native Client Executables  (angol) (2010. február 22.). Az eredetiből archiválva: 2016. március 12.
  15. David Sehr, Robert Muth, Cliff L. Biffle, Victor Himenko, Egor Pasko, Bennet Yee, Karl Schimpf, Brad Chen. Szoftverhiba-leválasztás adaptálása a kortárs CPU-architektúrákhoz  ( 2010). Letöltve: 2016. augusztus 6. Az eredetiből archiválva : 2016. július 24.
  16. 1 2 Bennet Yee, David Sehr, Greg Dardyk, Brad Chen, Robert Muth, Tavis Ormandy, Shiki Okasaka, Neha Narula, Nicholas Fullagar. Native Client: Sandbox for Portable, Untrusted x86 Native Code  (angol) (2009). Letöltve: 2016. augusztus 6. Az eredetiből archiválva : 2016. szeptember 12..
  17. Épület  _ _ Letöltve: 2016. augusztus 6. Az eredetiből archiválva : 2016. november 9..
  18. Schuh, Justin . Út a biztonságosabb, stabilabb és ragyogóbb Flash felé  (  2012. augusztus 8.). Az eredetiből archiválva : 2016. július 29. Letöltve: 2016. augusztus 6.
  19. Metz, Cade . A Google keményebben öleli az Adobe-t a Chrome-PDF egyesítésével  (  2010. június 18.). Az eredetiből archiválva: 2016. augusztus 6. Letöltve: 2016. augusztus 6.
  20. ppapi  . _ Letöltve: 2016. augusztus 6. Az eredetiből archiválva : 2016. október 6..
  21. ppapi -  Concepts.wiki . Letöltve: 2016. augusztus 6. Az eredetiből archiválva : 2016. október 6..
  22. Metz, Cade . A Google felmelegíti a Chrome OS natív kódját  (  2010. május 13.). Archiválva az eredetiből 2019. január 17-én. Letöltve: 2016. augusztus 6.
  23. Chad Austin. A nyelvi demokrácia védelmében (Vagy: Miért van szüksége a böngészőnek virtuális gépre)  (angol) (2011. január 8.). Letöltve: 2016. augusztus 6. Az eredetiből archiválva : 2016. augusztus 16..
  24. QuakeCon 2012 videó (2 óra 36 perc 18 másodperckor kezdődik) a YouTube -on, 2:36:18 -tól
  25. Metz, Cade . Mozilla: A böngészőnk nem fog natív kódot futtatni  (  2010. június 24.). Archiválva az eredetiből 2016. augusztus 26-án. Letöltve: 2016. augusztus 6.
  26. Crill, Paul . A JavaScript alapítója elvetette a Google Native Client alkalmazást, és lenyomta az ECMAScript 6 -ot  (  2012. május 31.). Az eredetiből archiválva: 2016. szeptember 20. Letöltve: 2016. augusztus 6.

Linkek