Evoluzione delle Tecnologie Web

Linguaggi per il web


Attorno al 2000 furono sviluppati, e si diffusero, diversi linguaggi di programmazione specifici per il web e lo sviluppo di applicativi di rete. Alcuni di questi linguaggi sono per programmi che corrono sul client, come Javascript, e sono detti client side, altri per il server, come PHP, e sono chiamati server side. I linguaggi di questo tipo sono molti, ma i piu' importanti restano: Java, javascript e PHP.
Fu inoltre definito un'importante standard per la codifica dei dati da trasmettere: l'XML.


XML ed XHTML

Al W3C si inizio' a lavorare ad XML (Extensible Markup Language) attorno al 1996; XML e' una implementazione di SGML, in cui una definizione formale, con una ben definita sintassi ( DTD: Document Type Definition) descrive dei tag che specificano la struttura di un documento.
In questo modo si stabilisce una metodologia per definire le componenti di un documento; che possono esssere diverse, ma il documento ha sempre una struttura gerarchica, definita da marcatori fatti sempre nello stesso modo: il vantaggio e' che il software che legge ed analizza i documenti (il parser) puo' essere scritto in modo indipendente dal tipo di contenuto: anagrafiche, descrizioni di software, cataloghi di prodotti etc. possono essere tutti trattati e trasmessi in modo analogo. La prima definizione di XML e' pubblicata dal W3C nel 1998.

XML ebbe parecchio successo, specie in ambito commerciale; spesso utilizzato per codificare dati da trasmettere via rete, col protocollo HTTP del web. In questo contesto rimpiazza l'HTML, orientato a testi ed inadatto a descrivere transazioni, od articoli commerciali. Anche diversi browser, come IE 5, del 99, erano in grado di mostrare pagine XML. L'XML e' diventato un modo comune di codificare dati da condividere e trasmettere.

XML ebbe tanto successo da essere utilizzato anche come formato interno da parecchi applicativi; usare XML significa non dover riscrivere un parser (interprete dei dati) ogni volta ed avere un documento ove i dati sono gia' ben strutturati.

L'idea del W3C era di rimpiazzare HTML con specifiche XML, molto meglio definite dal punto di vista formale e con meno ambiguita'. Attorno al 2000 vennero quindi pubblicate le specifiche dell'XHTML, che e' un HTML scritto meglio, piu' aderente all'SGML, e piu' facile da interpretare da parte dei parser; ad esempio stabilisce che i tag debbano essere sempre chiusi, che debbano utilizzare lettere minuscole, che gli attributi dei tag vadano fra apici. Lo standard XHTML 1 e' del 2000, XHTML 1.1 del 2001.


Java

Il linguaggio Java , nato per applicativi di rete, e' stato, ed e' tuttora, un punto di riferimento nello sviluppo di grossi applicativi commerciali in rete. Sviluppato dalla Sun fra il 1991 ed il 1995, ha la caratteristica di essere compilato in due passi: il compilatore vero e proprio produce un bytecode, un formato intermedio, ed una Java virtual machine (JVM) interpreta il bytecode e lo esegue. In questo modo, creando diverse JVM per diverse piattaforme, uno stesso programma Java puo' essere eseguito su computer diversi, risolvendo il problema della compatibilita' di diverse piattaforme. Lo slogan era: write once, run anywhere (WORA).
Quest'uso del bytecode e' particolarmente utile per applicativi di rete, ove il programma principale corre sul server ed un bytecode minimale viene inviato ai diversi client che, ognuno con la sua JVM, lo esegue per interagire col server.

La Sun reclamizzo' moltissimo Java, che negli anni 90 divenne molto di moda e prese piade in ambito accademico, ove finalmente alcuni professori smisero di insegnare Pascal per seguire la nuova moda.

Java e' corredato da un quantitativo spropositato di librerie, per fare praticamente qualunque cosa, e' ad oggetti, e simile, per sintassi, al C++, in modo da poter essere facilmente adottato da professionisti abituati al C. A differenza del C: non ha puntatori, ha regole di ereditarieta' per le classi leggermente diverse, ha un utile sistema di "garbage collection"; ovvero elimina in modo automatico oggetti inutilizzati liberando la memoria. Viene eseguito in un ambiente software protetto (una sandbox), in modo da evitare interazioni accidentali con il resto del sistema ed aumentare la sicurezza.

Nelle librerie associate a Java (Java Platform) ci sono gia' classi per fare di tutto, per cui, per programmare in Java, basta spesso estendere un po' classi esistenti; ma bisogna conoscerne la struttura, e queste sono abbastanza ricche e complicate: sia per la sintassi, che per la gerarchia di classi che ereditano. Per cui Java finisce per essere orribilmente sovrastrutturato e complicato; inoltre la trasmissione del bitecode al client, che non sempre e' piccolo, e' lenta, ed anche l'esecuzione era lenta, almeno nelle prime versioni di Java.

Java va bene per grossi progetti, ove vale la pena di tirarsi dietro tutta la sua struttura ed avere librerie di classi gia' fatte riduce i tempi di sviluppo; ma per piccoli progetti ci sono tecnologie piu' agili e comode da usare. Ma Java e' diventato di moda: gli informatici che escono dalle universita' conoscono quello e dai tardi anni 90 si trova Java da per tutto, a proposito e sproposito.

Un altro problema di Java e' che le varie JVM non sono sempre completamente compatibili; per cui Write Once, Run Anywhere (WORA) diventa Write Once, Debug Everywhere . Al solito un grosso problema fu la Microsoft, con la sua Microsoft Java Virtual Machine (MSJVM), che introduceva sottili incompatibilita' ed estensioni proprietarie, in modo da combattere ed eliminare Java. Anche qui la Microsoft fini' in tribunale, la causa si svolse fra il 1997 ed il 2001 ed alla fine la Microsoft dovette pagare alla Sun una ventina di milioni di dollari ed abbondono' la sua JVM.

Java e' la piattaforma ideale per gli applicativi che corrono sui cellulari, qui l'idea della JVM risulta vincente, dato che i cellulari hanno CPU diverse ed i piccoli sviluppatori non avrebbero modo di accedere a tutti i modelli. Il fatto che Java corra un ambiente isolato e' poi un grosso vantaggio per la sicurezza dei cellulari.
Grazie ai i progressi dell'elettronica, JVM puo' essere implementata in hardware, con notevole aumento delle prestazioni.

Per quanto riguarda il Web, l'uso di Java diviene interessante quando al browser viene abbinata una JVM, in modo che le pagine HTML possano contenere programmi che corrono sul client, nella solita logica client-server. Qui entra in gioco il linguaggio Javascript, a fare da collegamento fra Java ed il browser.


Javascript

Fin dagli inizi si capiva che il web poteva essere sfruttato per applicativi di rete ad uso commerciale: l'immediatezza del protocollo HTTP, la semplicita' dell'HTML, ne facevano uno strumento molto interessante; tuttavia l'HTML e' inteso essenzialmente per diffondere testi collegati fra loro.

Le innovazioni della Netscape vanno in questo senso: i form (moduli on-line), le connessioni criptate (protocollo HTTPS), i cookies, sono essenziali per un uso commerciale, ma questo non basta: il passo successivo e' di trasformare le pagine web in veri applicativi. Javascript, introdotto con Netscape 2, nel 1996, si muove in questa direzione.
Si tratta di un linguaggio eseguito dal browser, che opera sulla pagina stessa, modificandola in seguito ad azioni dell'utente. Javascript fu lanciato nell'ambito di una collaborazione fra Netscape e Sun nel 1995, in modo da permettere a pagine HTML di eseguire piccoli programmi Java (le Applet Java) inviate al client da un server remoto.

La Microsoft introdusse JScript in Internet Explorer 3, al solito, con piccole differenze rispetto all'originale Javascript, ma spingeva soprattutto per le sue tecnologie proprietarie come VBScript e ActiveX (in Explorer 3 nel 1996). Queste tecnologie facevano concorrenza alle applet Java, e permettevano di richiamare programmi di windows direttamente dalle pagine web; una cosa molto bella e comoda, ma una vera follia dal punto di vista della sicurezza.

L'uso di Javascript, per modificare la pagina HTML, richiede che questa sia strutturata in modo chiaro, cosi' che il linguaggio possa utilizzare variabili che si riferiscono a parti precise della pagina. All'inizio si riuscivano a modificare le proprieta' di pochi elementi, come: parti dei moduli on-line (form), immagini, links. Con Internet Explorer 4 e Netscape 4 la tecnologia fu estesa a modificare diverse parti della pagina, ma i browser lavoravano in modo incompatibile.

Ci furono quindi sforzi per standardizzare Javascript: nel 1997 l' Ecma International pubblico' lo standard ECMA-262 per Javascript (che era chiamato ECMAScript). Lo standard ebbe poi revisioni, con ECMAScript 2 nel 1998, ed ECMAScript 3 nel 1999.

A seguito di questa standardizzazione, e per rimediare alla confusione, il W3C pubblico' nel 1998 le specifiche DOM Level 1, (Document Object Model), che stabiliscono in modo completo la struttura logica di una pagina web, che viene rappresentata in termini di una gerarchia di oggetti. Si stabilisce che nomi debbano avere gli oggetti e come debbano essere gestite le azioni dell'utente, come: passare il mouse su un elemento, un click etc.

Al solito, l'implementazione delle specifiche da parte dei browser fu parziale; anche IE 5 del 1999 implementava in modo limitato il DOM-1. Netscape lo implemento' completamente solo nelle versioni 6 e 7, dal 2000.

Con la fine della Netscape e della guerra dei browser, l'interesse per Javascript calo'; per anni continuarono problemi di differenti implementazioni, con la Microsoft che era piu' interessata alla sua piattaforma proprietaria .NET che ad implementare le specifiche EmacSCript nel suo browser, visto che ormai Internet Explorer era padrone del mercato. La situazione non miglioro' se non parecchi anni piu' tardi, e si persero le potenzialita' insite nell'avere un modello chiaro della pagina web, con un linguaggio standard che potesse accedere a tutti i vari elementi. La definizione delle specifiche rallento', con un DOM-level 2, del 2000, che aveva anche supporto ai CSS, che potevano essere cambiati in modo interattivo. Il DOM-3 e' del 2005.

Io mi imbattei in Javascript abbastanza tardi, nel 2001; mi sembrava che potesse essere una via interessante per il completo sviluppo di applicativi di rete. Per provare in linguaggio cercai di scrivere un sito multilingua, che usava contemporaneamente piu' pagine e, premendo un tasto, doveva cambiare lingua in tutte le pagine. Prendendo spunto da come lavoravo in C, tutto era gestito da un array di puntatori a pagine. Peccato che browser diversi vedessero il sistema in modo diverso e che, ridimensionando le pagine col mouse, si perdessero tutti i puntatori.

Per parecchi anni l'uso di Javascript rimase limitato, usato giusto per qualche effetto grafico sulle pagine o controllare i form prima dell'invio al server.


Il PHP

Gli organismi che curano gli standard, come il W3C, si preoccupano della correttezza formale delle specifiche; le entita' commerciali finiscono per creare prodotti complessi, ma spesso sono le soluzioni semplici ed immediate quelle che vengono preferite e si diffondono, anche se hanno difetti. Un esempio lampante di questo e' il linguaggio PHP.

Fin dagli inizi del web esistono sistemi per permettere al server di creare pagine a richiesta, o di fornire pagine con diversi contenuti, a seconda delle richieste del clien: gia' il primo server, quello sviluppato al CERN, aveva un sistema per includere files nelle pagine web ( SSI: server site include).

Il server sviluppato al NCSA attorno al 1993 introduceva un vero sistema di generazione di pagine dinamiche: il client, invece di chiedere una pagina html, chiede al server di eseguire un programma, eventualmente fornendo parametri per il programma stesso. Il server esegue il programma, che genera una pagina html che viene mandata al client.

Le specifiche CGI ( CGI: Common Gateway Interface), sviluppate al NCSA fra il 1993 ed il 1997 (RFC 3875) definiscono come questo meccanismo debba essere implementato. Il server scritto al NCSA implementava la versione CGI 1.0 nel 1994. Questo server era utilizzato nel 1995 dalla maggior parte dei siti web, poi l'NCSA smise di svilupparlo. Il codice del server del NCSA servi' da base per il progetto Apache. Il server Apache resta il server piu' usato almeno fino al 2015 (per le statistiche vedi le survey di netcraft).

All'inizio questi programmi CGI erano scritti in C od in Perl, poi furono sviluppati linguaggi apposta, con istruzioni speciali inserite nelle pagine HTML, per creare pagine al volo, in funzione di parametri forniti dal client o parametri del server.

La Netscape, nel 1994, aveva introdotto un suo linguaggio Javascript per il server, la Microsoft nel 1996 aveva le tecnologie ASP utilizzate dal suo server web (IIS Internet Information Services), la Sun le JPS (Java Server Pages, 1999), ma si trattava di soluzioni proprietarie, che funzionavano solo su software del produttore, spesso complicate e costose. Inoltre i server degli anni 90 non erano molto potenti e l'uso di questi sistemi finiva per essere oneroso.

Il PHP e' creato da Rasmus Lerdorf nel 1994-95 per gestire le sue pagine personali. Essenzialmente si trattava di programmi CGI, scritti in C, che venivano usati come filtro per le pagine web: nelle pagine venivano inseriti tag speciali, che delimitavano istruzioni in PHP; queste venivano eseguite per generare generavano parti della pagina. I programmi PHP possono anche recuperare dati per la pagina da un database.

La sintassi e l'uso del PHP sono molto semplici ed il PHP risulta molto comodo da usare, in piu' era libero e molti si misero a lavorarci ed estenderlo, migliorandolo, riscrivendo l'interprete ( Zend engine del 1999, per PHP versione 4) e rendendolo veloce;

Gli resta il difetto di essere nato come semplice tool personale e di essere cresciuto in base alle esigenze, senza un disegno organico e con diversi limiti. Per questo il PHP e' molto criticato ; ma nonostante tutte le critiche negative si e' diffuso velocemente: nel 1997 lo usavano 50000 siti web, nel 1998 il doppio, nel 2000 piu' di 2 milioni; il PHP divenne presto il piu' usato linguaggio del web; nel 2007 usato da 20 milioni di server, nel periodo 2010-2015 circa l'80% dei siti con linguaggi server-side usano PHP. Il vantaggio di PHP e' che e' facile ed immediato.


I CMS

La gestione di un sito web grande, con molte pagine e varieta' di contenuti, ove le pagine siano scritte da molti autori, anche non esperti in informatica, e' una cosa complicata. Per la gestione di giornali on-line, o dati di grosse ditte, negli anni 90 venivano usati costosi e complessi programmi commerciali.

Negli anni attorno al 2000, il minor costo dell'hardware e la disponibilita' di linguaggi server-side semplici e gratuiti, favorirono lo sviluppo di sistemi integrati per la gestione di siti web e la scrittura delle pagine.

Questi sistemi sono chiamati CMS (Content Management System) , mentre DMS (Data Management ststems) sono i prodotti piu' focalizzati alla gestione di dati. Ci sono poi i forum di discussione on-line, organizzati per argomenti, eventualmente con moderatori, cui si mandano messaggi e su cui si discute. Nascono anche molti CMS orientati al commercio elettronico, con veri e propri negozi virtuali. I blog (o weblog) , siti con note personali, cui i lettori possono aggiungere commenti, sono stati un fenomeno di gran moda attorno al 2000, con siti web specializzati che permettevano agli utenti di creare il logo blog con minima fatica; sono rimasti famosi: blogger.com , opendiary.com, livejournal.com tumblr.com.

Molti CMS erano progetti per uso personale, distribuiti liberamente e poi cresciuti e diventati un business, come Drupal del 2000, basato su PHP. Altri CMS sono sviluppati da entita' commerciali, alcuni divenuti di libero uso, come Mambo , del 2000, (in PHP), ed il suo derivato: joomla, nel 2005. TYPO3, sempre in PHP, e' del 1997 e diviene open-source nel 2001. Alfresco,, scritto in Java, e' orientato alla gestione di documenti ed e' del 2003. Wordpress, il piu' noto, sempre basato su PHP, e' anche del 2003; Plone, 1999, scritto in linguaggio Python, e' stato uno dei primi CMS open source, ha avuto un grande successo attorno al 2005 ed ha contribuito in modo significativo alla diffusione di Python.

Vengono anche sviluppati sistemi per sviluppare e gestire applicativi internet, CMS e blog, come Zope, scritto in linguaggio Python, su cui e' basato Plone, Django, del 2003, sempre in Python, Rails, del 2004, che ha contribuito a lanciare il linguaggio Ruby.


Lo sviluppo di software per comunicare via web, che parte attorno al 2000, diviene presto un mercato con centinaia e centinaia di prodotti, per fare praticamente qualunque cosa: una caotica evoluzione, in cui e' difficile orientarsi, che inizia nel 2000 e continua fin oltre il 2015.

Nel 2014 si dice ci siano circa un miliardo di siti web. Su circa 3 miliardi di utenti di internet mi sembrano un po' tanti, forse e' dedotto dal numero di nomi internet registrati, che non sono certo i siti web attivi, ma sono solo stime, nessuno li puo' veramente contare: meta' di questi siti, attorno al 2016, usa un CMS. Il CMS il piu' usato e' Wordpress: con oltre il 50%, poi c'e' un 3-7% di Joomla, un 2-4% di Drupal, poi Blogger e Magento. Il resto e' diviso fra una marea di altri sistemi, ognuno con un 1% o meno.
Per i linguaggi server-side: nel 2016 PHP ha l'80% del mercato, seguito da ASP.NET della Microsoft col 16% e da Java col 3%. Per statistiche aggiornate vedi ad esempio: trends.builtwith.com, oppure: w3techs.com, oppure: www.internetlivestats.com.

Tipicamente in un CMS i contenuti delle pagine web sono conservati in un database. Sul server corre un programma apposito che, in base alle richieste dei client, recupera i dati dal database, figure e quant'altro, ed utilizza un sistema di modelli predefiniti (templates) per costruire al volo la pagina.

Agli autori viene fornito un editor semplificato, accessibile tramite una pagina web, con cui scrivono i testi e posizionano le figure; c'e' un sistema per gestire gli accessi e sono definite tipologie di utenti per decidere chi puo' accedere alle diverse funzionalita', come: autori di testi, supervisori etc. Tutto viene gestito ed utilizzato tramite un'interfaccia web, cui si accede tramite un browser.

Dagli anni attorno al 2005 iniziarono ad essere creati moltissimi siti che utilizzavano CMS; fare siti web divento' facile, sorsero anche servizi che ospitavano blog, siti personali o forum, che potevano essere costruiti in modo grafico, senza sapere nulla di HTML CSS e quant'altro, come Blogger del 1999 o wordpress.com , del 2005.

La stessa gestione ed installazione di siti web, come ad esempio in Wordpress, fu resa estremamente facile ed e' alla portata di chiunque. Questo favori' il proliferare di siti personali, con il fenomeno del blogging che esplose fra il 2004 ed il 2008; si parla di centinaia di milioni di siti con blog nel 2011. Per statistiche vedi, ad esempio: technorati.com