NPAPI: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Sicurezza: Eufonie |
→Sicurezza: Eufonie |
||
Riga 1:
La '''NPAPI''' (o ''Netscape Plugin Application Programming Interface'') è un'architettura [[multipiattaforma]] per i [[plugin (informatica)|plugin]] utilizzata da molti [[browser web]]. Sviluppata inizialmente per la famiglia di browser [[Netscape Communications Corporation|Netscape]], a partire da [[Netscape Navigator]] 2.0, è stata implementata in seguito in altri browser, tra cui [[Mozilla Application Suite]], [[Mozilla Firefox]], [[Google Chrome|Chrome]], [[Safari (browser)|Safari]], [[Opera (browser)|Opera]], [[Konqueror]]
== Storia ==
L'origine della funzionalità dei plugin Netscape va ricercata non in [[Netscape Communications Corporation|Netscape]], ma in [[Adobe Systems]]. [[John Warnock]], [[amministratore delegato]] di Adobe,
Perciò, poco tempo dopo il rilascio della prima versione di Navigator da parte di Netscape, Padgett, insieme all'ingegner Eshwar Priyadrshan, tentò di trovare un modo per rendere PDF parte integrante dell'esperienza del Web. Il risultato fu un'applicazione dimostrativa mostrata a Warnock e a [[James H. Clark|Jim Clark]], amministratore delegato di Netscape. Prima di quella demo, gli unici formati nativi sul Web erano le pagine [[HTML]] e le immagini mostrate al loro interno. I collegamenti ad ogni altro tipo di file comportavano la richiesta all'utente di scaricare il file: fatto ciò, l'utente poteva aprire il file con l'applicazione più appropriata. In quella dimostrazione, tuttavia, quando un utente faceva click su un collegamento ad un file PDF, il file veniva aperto immediatamente all'interno della finestra del browser, mescolando indifferentemente la fruizione di pagine HTML e documenti PDF. Clark chiese con eccitazione chi di Netscape avesse fornito supporto tecnico per rendere possibile l'integrazione, ma scoprì che essa era stata raggiunta senza il coinvolgimento di Netscape, ma con un po' di [[reverse engineering]] del browser.
Le aziende stabilirono di incontrarsi la settimana successiva per trovare il modo di rendere appetibile quello che era conosciuto come "l'hack di Allan" per il mercato. Sebbene Netscape fosse pronta ad incorporare i PDF direttamente all'interno del browser, e certamente Adobe ne avrebbe guadagnato, Padgett propose un approccio diverso: un'architettura basata sui plugin. Gli ingegneri Adobe Gordon Dow e Nabeel Al-Shamma avevano da poco aggiunto un'architettura a plugin ad Acrobat Reader, per ridurre gli sforzi degli sviluppatori di terze parti. Padgett aveva partecipato allo sviluppo, e riteneva che se si fosse fornita l'occasione, altre aziende (e magari altri team all'interno di Adobe) avrebbero scelto di estendere le capacità del Web. Clark
== Caratteristiche ==
Riga 13:
L'[[application programming interface|API]] richiede che ogni plugin implementi e pubblichi un numero abbastanza piccolo di funzioni. Si tratta approssimativamente di 15 funzioni in totale per l'inizializzazione, la creazione, la distruzione e il posizionamento dei plugin. La NPAPI supporta anche lo scripting, la stampa, la visualizzazione a schermo intero, i plugin ''windowless'' e lo [[streaming]] dei contenuti.
La possibilità di aggiungere degli script ai plugin è una caratteristica che permette al codice JavaScript presente in una pagina di interagire con un plugin. Diverse versioni di Netscape,
=== LiveConnect ===
Con Netscape 4, la NPAPI venne estesa per permettere di sfruttare i plugin tramite degli script. Questa funzionalità venne chiamata [[LiveConnect]]. Un plugin poteva implementare e restituire un'istanza di una classe [[Java (linguaggio)|Java]]. I metodi pubblici esposti da questa classe rappresentavano l'interfaccia cui potevano essere applicati degli script. La classe poteva essere chiamata tramite codice [[JavaScript]], come anche da altre applet Java in esecuzione all'interno della pagina, mentre il browser vigilava sulle chiamate tra i diversi contesti d'esecuzione.
Lo svantaggio di LiveConnect risiedeva nell'essere legato a doppio filo con la versione di Java integrata all'interno del browsr Netscape. Ciò impediva al browser di utilizzare altri runtime,
Inoltre, la programmazione di LiveConnect non era affatto immediata. Lo sviluppatore doveva definire una classe Java per il plugin, eseguirla tramite un compilatore di intestazioni Java specializzato
=== XPConnect ===
LiveConnect si rivelò estremamente problematico per Mozilla. La dipendenza da un runtime Java obsoleto e proprietario e dall'API JRI implicava l'impossibilità per LiveConnect di funzionare.
Mozilla stava già utilizzando [[XPCOM]] per definire le interfacce a molti oggetti implementati in C++. Ogni interfaccia veniva definita tramite un file [[Interface Description Language|IDL]] (Interface Definition Language), e passata ad un compilatore IDL che produceva file d'intestazione
[[XPCOM]] usa le informazioni sul tipo di libreria per regolamentare le chiamate tra diversi contesti di thread e tra JavaScript codice nativo C++ compilato. Dal momento che XPConnect viene utilizzato pesantemente da Mozilla, è molto robusto, supportato e documentato. A partire da Netscape 6.1 e Mozilla 0.9.2, la NPAPI è stata estesa in modo tale che un plugin potesse restituire un'interfaccia a se stesso gestibile tramite script, mentre XPConnect si occupa di gestire le chiamate a detto plugin da JavaScript e dal codice C++.
Riga 33:
=== Npruntime ===
Alla fine del 2004, tutti i maggiori sviluppatori di browser (eccetto [[Microsoft]]) scelsero congiuntamente [http://www.mozilla.org/projects/plugins/npruntime.html npruntime] come estensione alla NPAPI originaria per fornire funzionalità di scripting, tramite un'API simile alla vecchia API stile C,
npruntime è supportato dalla generazione più recente di browser Mozilla (1.7.5+) / Firefox, Safari ed Opera. Tutti i nuovi plugin dovrebbero usare questa API.
Riga 43:
OLE2 fu progettato sulla base di [[Component Object Model|COM]], e definiva delle interfacce per i diversi compiti che il contenitore e l'oggetto dovevano portare a termine. Un controllo OLE2 (noto anche come OCX) era un oggetto OLE2 leggero che poteva essere integrato in un contenitore ma che non salvava grandi quantità di dati, né richiedeva menu o barre degli strumenti per funzionare.
Un controllo veniva implementato da una DLL, e caricato nello spazio degli indirizzi del contenitore ospite, come ad esempio [[Visual Basic]]. Le prime versioni di Visual Basic utilizzavano una tecnologia simile chiamata [[Visual Basic Extension]], ma i controlli OCX vennero considerati migliori. Ogni OCX implementava un sottoinsieme ben definito delle interfacce OLE2 che il contenitore poteva usare per manipolare il controllo, ad esempio per spostarlo, o per fornire informazioni sul contenitore. L'OCX implementava anche un ''meccanismo di automazione'' che permetteva la pubblicazione di metodi e proprietà che potevano essere modificati,
OLE2 era molto complicato,
A partire da Internet Explorer 3.0 venne aggiunta la possibilità di ospitare controlli ActiveX all'interno di contenuto HTML. Se il browser elaborava una pagina che specificava un controllo ActiveX attraverso un tag OBJECT (e una sintassi non accettata dal [[W3C]]), avrebbe scaricato automaticamente
* I pacchetti d'installazione dei controlli (file cabinet ed eseguibili) devono recare una [[firma digitale]].
Riga 62:
È molto diffusa la convinzione, a proposito della tecnologia NPAPI, secondo la quale un plugin sia in sé più sicuro di un controllo ActiveX. Entrambi eseguono istruzioni native per la macchina con gli stessi privilegi del processo ospitante. Perciò un plugin malevolo può danneggiare un sistema tanto quanto un controllo ActiveX insicuro.
Una differenza significativa tra la NPAPI
Un'altra differenza per la NPAPI è che il software che la implementa (prima di [[Mozilla Firefox]], vedi più in basso) non scarica, né installa automaticamente i plugin mancanti. Un plugin mancante provocava la visualizzazione, all'interno del browser, di un'immagine composta da righe seghettate al posto del plugin. Se l'utente vi faceva click veniva indirizzato alla pagina del servizio di ricerca dei plugin, da dove poteva scaricare
In Internet Explorer, il contenuto HTML specifica il luogo in cui deve risiedere il controllo ActiveX. Se il controllo non è già installato, IE scaricherà
[[Mozilla Firefox]] tenta di scegliere una via di mezzo. Se un plugin non è presente, notificherà all'utente la situazione e stabilirà una connessione sicura ad un servizio di ricerca dei plugin ospitato su mozilla.org. L'utente può permettere a Firefox di scaricare
== PPAPI ==
|