Slik skal Google revolusjonere alle nettlesere

Lager ny plugin med direktetilgang til CPU som skal gi 3D-støtte og maks ytelse i webapplikasjoner.

Dagens webapplikasjoner er enten basert på webstandarder som dem som inngår i Ajax-konseptet, eller på teknologier som gjennom nettleser-plugins som integrerer annet innhold mer eller mindre godt på vanlige websider. Eksempler på dette er Flash, Java og Silverlight.

Google er et selskap som har satset betydelig på webbaserte applikasjoner. Faktisk så mye at selskapet er i ferd med å utvikle sin egen nettleser, Chrome, som med sitt enkle brukergrensesnitt skal ta vekk forstyrrende elementer når brukerne egentlig er mest opptatt av webapplikasjonene de kjører i nettleseren.

Chrome inkluderer JavaScript-motoren V8 som skal gi en JavaScript-ytelse som er langt bedre enn de nettleserne som har blitt lansert til nå. Men nå ser det ut til at Google mener at JavaScript alene ikke er i stand til å gi den ytelsen som på mange måter er nødvendig for at en webapplikasjon skal føles like god som en applikasjon som kjøres lokalt.

En mulig løsning på dette er å overlate enkelte oppgaver til én av de nevne plugin-teknologiene, men Google pleier ikke å basere løsninger på teknologi som konkurrentene kontrollerer.

Av den grunn er Google nå godt i gang med å lage sin egen nettleserplugin. Denne skal være nettlesernøytral og kjøres på moderne x86-utgaver av Windows, Mac og Linux. Selskapet jobber med å støtte til andre prosessorarkitekturer, slik som ARM og PPC, noe som kan åpne for støtte også på blant annet mobiltelefoner og spillkonsoller.

Hensikten med den kommende plugin-en, som kalles Native Client (NaCl), er å gi webapplikasjonene langt bedre tilgang på regnekraften til prosessoren på klientsiden.

I et blogginnlegg skriver Brad Chen i Native Client-gruppen hos Google at man kan tenke seg et nettsted for deling av fotografier som ønsker å la brukerne redigere bildene direkte i nettleseren, uten å forlate nettstedet. I dag kan dette for eksempel gjøres ved å benytte en kombinasjon av JavaScript og prosessering på serversiden, men dette krever at store mengder data sende mellom nettleseren og serveren, noe som kan ta svært lang tid, selv om det bare er små endringer brukeren ønsker å gjøre.

Andre muligheter involverer 3D-grafikk.

- Med muligheten til sømløst å kjøre systemspesifikk kode på brukerens maskin, kan du i stedet utføre selve bildeprosesseringen med PC-ens CPU, noe som resulterer i en mye mer lydhør applikasjon ved at dataoverføringen og forsinkelsene minimaliseres, skriver Chen.

Native Client består av i all hovedsak av tre komponenter, en runtime-del, en plugin for nettleseren og et sett med GCC-baserte kompileringsverktøy. Dette skal gjøre det mulig å bygge applikasjoner som kjøres i en nettleser, men som tar i bruk systemspesifikke kodemoduler.

Brukergrensesnittet skriver i HTML og JavaScript kommuniserer med et bibliotek for bildebehandling ved hjelp av Simple RPC (SRPC) eller Netscape Plugin Application Programming Interface (NPAPI). Disse er implementert på toppen av datagramtjenesten Inter-Module Communications (IMC), som står for kommunikasjonen mellom de ulike komponentene.
Brukergrensesnittet skriver i HTML og JavaScript kommuniserer med et bibliotek for bildebehandling ved hjelp av Simple RPC (SRPC) eller Netscape Plugin Application Programming Interface (NPAPI). Disse er implementert på toppen av datagramtjenesten Inter-Module Communications (IMC), som står for kommunikasjonen mellom de ulike komponentene.

En utfordring, innrømmer Chen, er sikkerheten.

- For å bidra til å beskytte brukerne mot skadevare og å opprettholde flyttbarheten, har vi definert strenge regler for lovlige moduler, skriver Chen.

Blant annet må modulene være laget i henhold til et sett med strukturelle kriterier som gjør det mulig å disassemblere dem om til instruksjoner. Dessuten får ikke modulene inneholde visse sekvenser med instruksjoner.

- Dette rammeverket sikter mot å det mulig for vår runtime å oppdage og forhindre at potensielt farlig kode kjøres og spres. Vi innser at det å gjøre denne teknologien trykk er en betydelig utfordring. Det er derfor vi gjør den til åpen kildekode på et tidlig stadium, skriver Chen.

- Vi tror at fagfellevurdering, tilbakemeldinger fra fellesskapet og offentlig granskning i høy grad forbedrer kvaliteten til sikkerhetsteknologier som denne.

Google har allerede nå gjort en testversjon av Native Client tilgjengelig på denne siden. Installasjonen er relativt krevende og er helt klart ikke tilpasset vanlige sluttbrukere ennå.

Testversjoner av Native Client er tilgjengelig for Windows, Mac og Linux. Den skal fungere i nettleserne Firefox, Safari, Opera og Chrome. At Internet Explorer foreløpig ikke støttes, skyldes trolig at denne nettleseren ikke har støtte Netscape Plugin Application Programming Interface (NPAPI) siden 2001. Etter det har alle plugins til Internet Explorer måttet baseres på ActiveX. De fleste andre nettlesere støtter NPAPI.

Blant eksemplene Google har gjort tilgjengelige, er spillet Quake. En “timedemo demo1”-test med oppløsning på 640x480 piksler som Google har gjort med dette spillet, kjørt på en moderne Linux-PC, viser at kjøringen i NaCl var fullt på høyde med kjøring direkte på Linux-maskinen. Resultatet var i snitt 143,7 bilder per sekund.

En video som Golem.de har lagt ut på Youtube.com, viser noen eksempler på hva man kan gjøre med Native Client installert.

Til toppen