Internet
Internet
Nel XIX secolo (1833), il matematico e inventore britannico Charles Babbage progetta una serie di
macchine, tra cui la macchina delle differenze e la macchina analitica, capaci di trattare problemi
matematici complessi secondo un principio di funzionamento piuttosto vicino a quello dei moderni
computer digitali.
Nel 1842 la contessa di Lovelace, Ada Byron (1815-1852), figlia del poeta Lord Byron, scrisse i
primi programmi della storia pensati per la macchina analitica di Babbage. La macchina analitica ha infatti
un flusso di dati in ingresso costituito da una pila di schede perforate, un "magazzino" per conservare i dati,
una "fabbrica" per svolgere le operazioni aritmetiche, ma anche una stampante che produce una
registrazione permanente.
La tecnologia del tempo non è in grado, tuttavia, di tradurre i progetti di Babbage in dispositivi d'uso
pratico.
Nel 1854 il maestro di scuola elementare irlandese, George Boole (1815-1864), inventò l'algebra
booleana basandosi sul codice binario.
I PRIMI COMPUTER
La realizzazione di computer analogici inizia nei primi anni del XX secolo. I primi modelli eseguono calcoli
per mezzo di aste e ingranaggi rotanti, e consentono di determinare approssimazioni numeriche di
equazioni estremamente complesse. Durante le due guerre mondiali, calcolatori analogici meccanici, e
successivamente elettrici, vengono usati per programmare la traiettoria dei siluri sui sommergibili ma anche
come dispositivi di puntamento per l'artiglieria aerea.
Il calcolatore denominato Bomba venne progettato nel 1932 e realizzato nel 1938 dal matematico
polacco Marian Rejewski per decifrare i messaggi tedeschi prodotti dalla macchina Enigma ideata
da Arthur Scherbius. La bomba tuttavia era una "macinanumeri", ossia un calcolatore che usava il metodo
forza bruta, e che non permetteva alcuna diversa programmazione, se non tramite riassemblaggio e
modifiche al meccanismo. Tale calcolatore venne poi sfruttato come base di partenza per lo sviluppo e la
realizzazione della macchina britannica Colossus nel 1944, dopo che il regime tedesco ebbe cambiato il
sistema di codifica dei messaggi della macchina Enigma.
Nel mese di dicembre del 1943 Colossus è operativo e viene usato dal gruppo guidato dal matematico
britannico Alan Turing per interpretare i messaggi radio cifrati dei tedeschi.
Le successive ricerche portano nel 1945 allo sviluppo del computer ENIAC (Electronic Numerical Integrator
and Computer), che contiene 18.000 tubi a vuoto e vanta una velocità operativa di molte centinaia di
moltiplicazioni al minuto. Tuttavia il suo programma è cablato negli stessi circuiti del processore, cosa che
porta la programmazione ad essere effettuata mediante aggiustamenti manuali della circuiteria. Il modello
successivo di elaboratore elettronico, realizzato in base agli studi del matematico ungaro-statunitense John
Neumann, viene dotato di un "magazzino" a parte per i programmi.
1951: L'UNIVAC (UNIVersal Automatic Computer) fu il primo computer commerciale creato negli Stati Uniti.
Negli anni '70 i transitor sono sostituiti dai circuiti integrati che riducono ulteriormente le dimensioni dei
computer ed aumentano la potenza di calcolo in modo esponenziale. Si arriva così alla rapida diffusione
degli elaboratori elettronici per uso aziendale degli anni '70 e alla diffusione degli home computer degli
anni '80. Il resto della storia lo stiamo vivendo giorno dopo giorno, con computer sempre più piccoli e
sempre più potenti, venduti ad un prezzo uguale a quello di qualsiasi elettrodomestico.
SCAMBIO DI INFORMAZIONI SU INTERNET
Internet è un sistema globale di reti di calcolatori, composta interconnettendo singole reti con un approccio
gerarchico, data una topologia ben definita e capillare.
Attualmente la topologia di Internet risulta molto complessa, ma generalmente si compone
dell’interconnessione di sistemi autonomi (Autonomous Systems, AS), ovvero un gruppo di router e reti
sotto il controllo di una singola e ben definita autorità amministrativa.
Gli albori di Internet corrispondono con il progetto ARPAnet, una rete di computer studiata e realizzata nel
1969 dal DARPA, l'agenzia del Dipartimento della Difesa degli Stati Uniti responsabile per lo sviluppo di
nuove tecnologie ad uso militare. Per tutti gli anni Settanta ARPAnet continuò a svilupparsi in ambito
universitario e governativo, ma dal 1974, con l'avvento dello standard di trasmissione TCP/IP, il progetto
della rete prese ad essere denominato Internet.
Con il termine TCP/IP si indica una suite di protocolli di rete su cui si basa il funzionamento logico della rete
Internet. Tale termine per sineddoche indica l’intera suite a partire dei due più importanti protocolli in essa
definiti: il Transmission Control Protocol (TCP) e l'Internet Protocol (IP).
Il protocollo IP provvede a fornire il sistema di indirizzamento dei nodi terminali della rete, assegnando a
ciascuno un indirizzo univoco, formato da quattro gruppi di cifre. Al livello immediatamente superiore, il
protocollo TCP provvede a gestire il flusso dell'informazione tra i due nodi definendo una connessione tra
di essi ed istradando lungo tale connessione i messaggi.
Al di sopra di TCP, l'HyperText Transfer Protocol (HTTP) (protocollo di trasferimento di un ipertesto) è un
protocollo a livello applicativo usato come principale sistema per la trasmissione d'informazioni sul web.
Il protocollo Telnet è solitamente utilizzato per fornire all'utente sessioni di login remoto di tipo
riga di comando tra host su Internet.
Simple Mail Transfer Protocol (SMTP) è il protocollo per la trasmissione di email, mentre per la
ricezione sono disponibili POP e IMAP.
Dopo è stato pubblicato File Transfer Protocol (FTP), che supporta il trasferimento di file tra nodi su
Internet. FTP ha comportato lo sviluppo dei primi sistemi informativi distribuiti simile al Web, come
Archie, che può essere pensato come un file system distribuito e permette di effettuare una ricerca
di file su server FTP;
Gopher, che offre un semplice protocollo client/server e un’interfaccia grafica per la pubblicazione
e l’accesso di file di testo su Internet.
Le tecnologie alla base del mondo del Web come lo conosciamo adesso sono un’evoluzione di questi iniziali
sistemi e protocolli:
HyperText Transfer Protocol (HTTP) è un protocollo generico e senza stato che gestisce il
trasferimento di file sulla rete. Generico nel senso che consente l’accesso verso altri protocolli
come FTP e SMTP;
HTTP originariamente avevo il compito di scambiare ipertesti espressi secondo lo standard
HyperText Markup Language, dove i client effettuava una precisa richiesta a seguiva la consegna
dell’ipertesto che soddisfaceva la richiesta;
HTML è il linguaggio di markup solitamente usato per la formattazione e impaginazione di
documenti ipertestuali disponibili nel World Wide Web sotto forma di pagine web.
L'HTML non è un linguaggio di programmazione, ma ha come scopo quello di gestire i contenuti
associandone o specificandone allo stesso tempo la struttura grafica (layout) grazie all'utilizzo di tag diversi.
Ogni tag specifica un diverso ruolo dei contenuti che esso contrassegna.
è presente un client HTTP, come un browser, e un server HTTP che ospita un insieme di documenti
ipertestuali in HTML;
Internet pone in connessione il client e il server.
Attraverso la suite TCP/IP, il client apre una connessione ed effettua una richiesta. Il server soddisfa
la richiesta e ne restituisce l’esito.
Un client HTTP deve indicare nella richiesta l’operazione che deve svolgere il server:
OPTIONS: per inviare informazioni circa le opzioni di comunicazione supportate dal server;
GET: per recuperare un determinato documento identificato da un URL, oppure un documento
ottenuto dall’esecuzione di un programma specificato nella richiesta;
POST: per aggiungere o collegare le informazioni presenti nella richiesta alla risorsa indicata dal
client;
DELETE: per rimuovere dal server la risorsa indicata nella richiesta.
Client e server HTTP possono non vedersi direttamente da avere degli intermediari che si frappongono tra
loro:
Per utilizzare un proxy è possibile configurare il client in modo che si colleghi al proxy invece che al server,
oppure definire un proxy trasparente; in questo caso, alcune connessioni (ad esempio quelle HTTP)
vengono automaticamente indirizzate al proxy. Un proxy può essere usato per permettere ad una rete
privata di accedere all'esterno, per caching, monitoraggio e controllo, e anche per garantire un maggiore
livello di privacy mascherando il vero indirizzo IP del client in modo che il server non venga a conoscenza di
chi ha effettuato la richiesta
Un gateway HTTP è un server che funge da server originario ricevendo la richiesta per poi rispondere. Il
client richiedente potrebbe non essere consapevole di stare in comunicazione con un gateway. Il gateway
viene utilizzato per interconnettere reti locali diverse in modo da permettere lo scambio di informazioni tra
di loro.
Per tunneling si intendono le tecniche che incapsulano un protocollo all’interno di un altro dello stesso
livello o di livello superiore; in particolare l’HTTP-tunneling è una tecnica che consente di incapsulare
diversi protocolli all’interno del protocollo HTTP, che funge da wrapper, consentendo di far uscire sulla
porta assegnata all’HTTP tutto il traffico che altrimenti troverebbe lo sbarramento del firewall, creando una
sorta di tunnel virtuale. Lo scopo di un tunnel HTTP è di superare, ad esempio, le restrizioni alla navigazione
imposte su una rete o i controlli del firewall.
Sebbene i suoi vantaggi e la larga diffusione, HTTP è soggetto a un insieme di limitazioni, molte delle quali
sono state affrontate per mezzo di una serie di estensioni dell’originario protocollo HTTP:
non sono presenti delle caratteristiche di sicurezza per proteggere le comunicazioni tra client e
server da malintenzionati a compromettere i messaggi scambiati o a carpirne le informazioni
contenute.
il protocollo è senza stato e non tiene traccia di dati per richieste diverse, e ogni richiesta è a se
stante.
Il protocollo è particolarmente verboso, e non risulta particolarmente efficienze considerando i
tempi di consegna e la quantità di traffico imposto sulla rete durante una sessione
INTRODUZIONE AL WEB
Il World Wide Web (letteralmente "rete di grandezza mondiale"), abbreviato Web, nel corso degli anni è
emerso come una tecnologia per condividere informazioni su Internet. Recentemente, (con l’avvento dei
servizi web) rappresenta anche un mezzo per integrare applicazioni su Internet, ovvero consentire ad
applicazioni diverse tra loro di poter interagire e condividere informazioni.
Il Web è uno spazio elettronico e digitale di Internet destinato alla pubblicazione di contenuti multimediali
(testi, immagini, audio, video, ipertesti, ipermedia, ecc.) nonché uno strumento per implementare
particolari servizi per offrire funzionalità di download file, invio email, prenotazioni biglietti e altro.
Un Web Service (servizio web), secondo la definizione data dal World Wide Web Consortium (W3C), è un
sistema software progettato per offrire determinate funzionalità e per supportare interoperabilità tra
diversi elaboratori su di una medesima rete ovvero in un contesto distribuito.
IPERTESTI E HTML
Un ipertesto è un insieme di documenti messi in relazione tra loro per mezzo di parole chiave. Può essere
visto come una rete; i documenti ne costituiscono i nodi. La caratteristica principale di un ipertesto è che la
lettura può svolgersi in maniera non lineare: qualsiasi documento della rete può essere "il successivo", in
base alla scelta del lettore di quale parola chiave usare come collegamento.
È possibile, infatti, leggere all'interno di un ipertesto tutti i documenti collegati dalla medesima parola
chiave. La scelta di una parola chiave diversa porta all'apertura di un documento diverso: all'interno
dell'ipertesto sono possibili praticamente infiniti percorsi di lettura.
L'ipertesto informatico è la versione di ipertesto più usata e più diffusa oggi. L'ipertesto consiste in un
collegamento alla parola chiave (opportunamente evidenziata allo scopo), che talvolta appare nello
schermo anche sotto forma di icona o immagine. Selezionando o posizionandosi su tale parola o oggetto e
facendo clic con il mouse oppure dando l'invio (per navigazione basata sulla tastiera) si ottiene come
conseguenza l'apertura di un altro documento, che si può trovare sullo stesso server o altrove. Quindi le
parole chiave funzionano come collegamenti ipertestuali (hyperlink in inglese), che consentono all'utente di
navigare verso informazioni aggiuntive.
Dopo la nascita del World Wide Web (6 agosto 1991) l'ipertesto ha avuto un notevolissimo sviluppo. Tutto il
web, infatti, è stato concepito dal suo inventore, l'inglese Tim Berners-Lee, come un ipertesto globale in cui
tutti i siti mondiali possono essere consultati da tutti. La pagina web è il singolo documento e la
"navigazione" è il passaggio da un sito all'altro tramite i "link" (ma anche da una pagina all'altra dello stesso
sito o in un'altra parte della stessa pagina).
Nella sezione <head> vengono inserite, con l’ausilio di altri tag, informazioni riguardanti l’intero
documento, vedi tag <title>, mentre nella sezione <body>, si inserisce il contenuto da visualizzare nella
finestra del browser.
Dopo il tag h1 del documento, ci sono due righe racchiuse tra i tag p. Questo tag identifica il paragrafo.
I browser visualizzeranno ciascun paragrafo su una propria riga. Se il paragrafo è abbastanza lungo da
eccedere la larghezza della finestra del browser, il testo verrà mandato a capo e continuerà nella riga
successiva.
In qualsiasi caso, verrà inserita una riga vuota dopo un paragrafo, per separarlo dall’elemento successivo
nella pagina. E’ possibile inserire tag HTML anche all’interno di altri . Si noti l’inserimento di tag li all’interno
dei tag ul che definiscono un elenco non ordinato.
I tag trattati sinora sono tutti tag di blocco. La caratteristica distintiva di un tag di blocco è che viene
visualizzato su una riga propria senza elementi alla sua destra o alla sua sinistra.
Questo è il motivo per cui titoli, paragrafi ed elenchi procedono nella pagina dall’alto in basso, piuttosto che
coesistere nella stessa riga.
L’opposto dei tag di blocco sono i tag inline, che come dice lo stesso nome, possono apparire su una stessa
riga.
Si noti l’inserimento del tag <b> …</b> messo nel primo paragrafo per la parola Grazie per metterla in
grassetto. Con questo tag si è cambiato un attributo di stile della parola “Grazie”.
L’antesignano di tutti i tag inline, e probabilmente la caratteristica più interessante dell’HTML, è il tag <a>.
Questo tag sta per anchor (ancora), ma, in seguito, ci si riferirà ad esso come collegamento o collegamento
ipertestuale (link). Il testo racchiuso dentro un tag di ancora diventa cliccabile e fa in modo che il browser
carichi una nuova pagina HTML.
Per dire al browser quale pagina caricare, si deve aggiungere l’attributo href al tag, con il valore che
identifichi il nome della pagina html da caricare.
Come si è visto, i browser visualizzano alcuni elementi HTML, applicando stili differenti (i titoli sono grandi
e in grassetto, i paragrafi sono seguiti da una riga vuota e così via). Questi stili sono molto elementari e sono
destinati in primo luogo ad aiutare a capire la struttura ed il significato di un documento.
Per andare oltre questo rendering di struttura semplice, si possono utilizzare i fogli di stile CSS (Cascading
Style Sheets). CSS è un linguaggio per la creazione di fogli di stile, che si utilizza per definire la presentazione
visuale di un documento HTML.
È possibile utilizzare i fogli di stile per definire elementi semplici come il colore, la dimensione e lo stile del
testo o per elementi più complessi come il layout di pagina, le sfumature, l’opacità e molto altro ancora.
In questo esempio, color è la proprietà e red è il valore. Ma dove si inseriscono le regole CSS?
WEB BROWSERS
I browser utilizzano i protocolli di rete forniti dal sistema operativo (a partire da quelli di livello applicativo
come HTTP, ma anche i meno noti FTP, Telnet per lo scambio di file o cartelle, ecc.) attraverso opportune
API, permettendo di visualizzare i contenuti delle pagine dei siti web, specificandone l'URL, e interagendo
con essi. Queste ultime funzionalità sono supportate dalla capacità del browser di interpretare l'HTML e di
visualizzarlo in forma di ipertesto grazie al motore di rendering.
I primi browser (1989-1991) erano solo testuali: pagine senza grafica, bassa usabilità. Nel 1992 è comparso
Mosaic, il primo browser grafico comandato via mouse, comportando l'esplosione della popolarità del
WWW. L'evoluzione tecnologica è stata per molti anni rallentata dalla browser war tra Internet Explorer e
Netscape Navigator, che ha visto il primo imporsi a livello mondiale. Negli ultimi anni si sono avute
innovazioni significative e l’affermarsi di nuove soluzioni.
APPLICAZIONI WEB
Se i browser svolgono il ruolo di client nel web, all’estremo opposto troviamo applicazioni e servizi web,
che possono essere identificati e consultati dai browser per la fruizione di risorse.
Un’applicazione web, ovvero web application in inglese, indica genericamente tutte le applicazioni
distribuite nel web, ovvero accessibile/fruibile via web per mezzo di una rete di computer, appoggiandosi ai
consueti protocolli di rete.
Questo modello applicativo è divenuto piuttosto popolare alla fine degli anni novanta con la diffusione di
Internet, in un contesto di web dinamico. Inizialmente il web consisteva nella condivisione di documenti
ipertestuali, memorizzati presso un server HTTP, ed ottenibile da un client HTTP effettuando una dovuta
richiesta. Tale visione era alquanto statica nel senso che il contenuto del documento era fissato ed
invariabile.
Il documento ipertestuale è composto da una serie di tag e di informazioni e memorizzato in un file con
estensione “.html”. Ogni volta che il documento è acceduto da un browser il suo rendering, ovvero la
visualizzazione sullo schermo, è invariata.
Il termine web dinamico indentifica un diverso appoggio alla fruizione di documenti sul web, e viene
utilizzato per indicare tutte quelle applicazioni web che interagiscono attivamente con l'utente modificando
le informazioni mostrate in base alle informazioni ricevute dall'utente stesso.
Esempi tipici di applicazioni web dinamiche sono i siti di e-commerce che ovviamente devono interagire con
l'utente ed adeguarsi alle sue scelte. Molti siti web sono considerati "dinamici" dato che consentono
all'utente di personalizzare l'impaginazione o le informazioni mostrate o aggiornare in maniera efficiente
(dinamica appunto) i contenuti modo da renderli più vicine alle richieste dell'utente o del programmatore
web.
Per realizzare tale scenario interattivo e dinamico si fa frequentemente uso di applicazioni web quali applet,
servlet, CMS ecc.., tramite opportuni programmi detti script, scritti in vari possibili linguaggi di scripting
quali JavaScript, PHP, ASP, .NET, inseriti tipicamente all'interno della pagina web HTML e che, su particolare
richiesta dell'utente, vengono attivati ed elaborati lato client tramite browser o lato server restituendo il
contenuto dinamico sotto forma di codice HTML interpretato poi dal browser e visualizzato all'utente
il primo viene definito server-side: il server HTTP alla ricezione di richieste HTTP, non si limita alla
ricerca di un documento HTLM ed alla sua restituzione, ma effettua una elaborazione
considerando come input la richiesta cliente e restituendo in output un documento HTML adattato
alle esigenze del client
Il documento HTML ottenuto dall’esecuzione dello scripting lato server, viene restituito al client. È
necessario che il client disponga di un interprete del linguaggio di scripting selezionato.
È possibile avere approcci ibridi che combinano scripting server-side e quello client-side.
Un esempio è fornito da AJAX, che è l’acronimo per Asynchronous JavaScript and XML, coniato nel febbraio
del 2005 da Jasse James Garrett, per descrivere un modo di utilizzare congiuntamente diverse tecnologie
esistenti:
Vantaggi di AJAX:
sono in grado di inviare al Web Server richieste asincrone (mentre l'utente può continuare ad
interagire con la pagina) e parziali (relative solo ai dati necessari);
consentono un'interazione più veloce (la quantità di dati che è necessario inviare al/ricevere dal
server è minore) e in modalità asincrona (senza attesa).
Funzionamento tipico di un'applicazione AJAX:
carichiamo nel Browser una pagina web (.html) che contiene degli script client-side (Javascript) che
intercettano eventi relativi a parti della pagina, come il click di un bottone o la digitazione di testo in
una casella;
in risposta ad un qualche evento, Javascript invia una richiesta HTTP "speciale" (con l'indicazione di
una risorsa server-side, es. PHP);
sul server, un programma (o uno script) server-side elabora la risposta e la invia al client come
risposta della richiesta, da cui lo script client-side preleva dei dati e modifica di conseguenza una
parte della pagina attualmente caricata nel browser.
SERVIZI WEB
Il termine servizio Web è definito secondo il consorzio UDDI come “applicazioni di business modulari e
auto-consistenti che hanno interfacce aperte, Internet-oriented e basate su standard”:
Un’altra definizione che chiarisce cosa si intende per servizio Web è quello fornito dal consorzio World
Wide Web (W3C): “applicazione software identificata da un URI, le cui interfacce e collegamenti possono
essere definite, descritte e scoperte come artefatti XML. Un servizio Web supporta interazioni dirette con
altri agenti software usando messaggi codificati in XML, scambiati attraverso i protocolli usati in Internet”.
Tale definizione è più accurata e precisa anche come i servizi Web funzionano. Tale funzionamento pone
come base di tali servizi l’XML.
Esistono altre definizioni in letteratura, che sono anche più tecnologiche, indicando gli standard alla base
dello sviluppo e realizzazione di tali servizi. Un esempio è quello presente nel dizionario tecnico chiamato
Webopedia: “un modo standardizzato per integrare applicazioni basate sul Web usando gli standard aperti
XML, SOAP, WSDL e UDDI al di sopra dei protocolli fondanti di Internet. XML è usato per taggare i dati,
SOAP per il loro trasferimento, WSDL per la descrizione del servizio e UDDI per l’identificazione di quali
servizi sono disponibili ed accedere alla loro descrizione”.
I servizi Web sussistono sull’assunzione che l’interazione client/server avvenga per mezzo di un modello a
servizio, con le funzionalità del server accessibili come un servizio. In termini della letteratura dei
middleware, un servizio è una procedura, una funzionalità o un oggetto con un’interfaccia stabile e
pubblicata che può essere invocata dai client. Anche il client è un programma, e la richiesta e l’esecuzione
di un servizio consiste in un programma che richiama un altro programma.
Il Service Provider, ovvero il server che ospita il servizio o lo rende accessibile stando in ascolto di
possibili richieste in arrivo da Internet;
Un Registry, ovvero un server remoto che contiene le descrizioni dei servizi offerti da vari service
providers. Tali descrizione contengono una descrizione dei servizi in termini di come accedervi e di
quali funzionalità sono offerte e di come invocarle
Quando un service provider attiva un servizio può decidere di caricarne una descrizione nel registry.
Il Service Requestor, ovvero un applicativo che è interessato ad invocare un servizio offerto da un
service provider.
Un service requestor per determinare il servizio che risponde meglio alle sue esigenze ed ottenerne la
descrizione può consultare un registry. Ottenuto l’URI del servizio, e come invocarlo, il service requestor può
inviare richieste al service provider e ricevere delle risposte.
Un servizio Web non va confuso con quelle applicazioni fruibili sul web, che consentono di ottenere pagine
web su richiesta dal client. Inoltre, gli standard alla base dell’architettura dei Web service sono i seguenti,
come anche specificato nella definizione Webopedia:
L’architettura alla base dei servizi Web si basa sul concetto di middleware per servizi Web. Un middleware
è uno strato software sviluppato al di sopra del sistema operativo e contiene un insieme di applicativi e
moduli software che fungono da intermediari tra diverse applicazioni e componenti software. Sono spesso
utilizzati come supporto per sistemi distribuiti complessi, al fine di superare l’eterogeneità delle macchine
nel sistema distribuite ed offrire le funzionalità base per la fruizione remota di risorse, procedure ed
oggetti.
Nel caso dei servizi Web, si ha bisogno di un middleware che offra le funzionalità di invocazione,
pubblicazione e scoperta dei servizi web. Nello specifico questo middleware si compone di due parti:
una sul lato provider che supporta la ricezione di richieste, la loro elaborazione ed invocazione
locale del servizio web più adatto e il ritorno dell’esito dell’invocazione, congiuntamente alla
pubblicazione delle informazioni del servizio. u
una sul lato client per supportare l’invocazione remota di servizi e la consultazione di registry per la
scoperta di servizi.
La parte server è svolta dal web server che abbiamo visto gestire le richieste di trasferimento di pagine
web di un client. Nel caso dei servizi web, il web server riceve la richiesta mediante il protocollo HTTP, ne
legge i dettagli e determina a quale servizio passare la richiesta invocandone la funzionalità desiderata,
attendendo una risposta che viene incapsulata in un opportuno messaggio ritornato al client.
Il web server ospita al proprio interno i servizi web, ovvero applicazioni che espongono dei servizi, e che
sono realizzate mediante un’apposita tecnologia di sviluppo software, come JAX-WS. JAX-WS (Java API for
XML Web Services) è un insieme di procedure (API) del linguaggio di programmazione Java dedicate allo
sviluppo di servizi web. u L'insieme fa parte della piattaforma Java EE.
Dal lato client, JAX-WS fornisce una serie di funzionalità che consentono ad un programma client di
invocare remotamente i servizi e di interagire con il registry UDDI. Anche il browser può fungere da client
per un web service.
JAVA
In informatica Java è un linguaggio di programmazione ad alto livello, orientato agli oggetti e a tipizzazione
statica, che si appoggia sull'omonima piattaforma software di esecuzione, specificamente progettato per
essere il più possibile indipendente dalla piattaforma hardware di esecuzione.
STORIA IN BREVE
Java è stato creato a partire da ricerche effettuate alla Stanford University agli inizi degli anni novanta.
Nel 1992 nasce il linguaggio Oak (in italiano "quercia"), prodotto da Sun Microsystems e realizzato da un
gruppo di esperti sviluppatori capitanati da James Gosling. Questo nome fu successivamente cambiato in
Green per problemi di copyright (il linguaggio di programmazione Oak esisteva già) fino al cambiamento
definitivo in Java.
Tra il 1993 e il 1994 si lavora per lanciare un prototipo funzionale (Browser Hot-Java) dove per la prima
volta si vide l’enorme potenziale che Java poteva offrire, sfruttando le caratteristiche di Green: neutralità
rispetto all'architettura, esecuzione in tempo reale, affidabilità, sicurezza applicandole all’interazione
client/server, il browser Hot-Java poteva scaricare dal Web programmi (applet) scritti in Java ed eseguirli.
Al giorno d’oggi possiamo sicuramente affermare che, Java è uno dei linguaggi di programmazione più
importanti al mondo. La cui community creatasi è composta da programmatori ed utenti che utilizzano tale
codice superando i 4 milioni di persone.
JAVA PLATFORM
La Java platform è solo software e viene eseguita al di sopra di altre piattaforme hardware.
Ogni volta che compiliamo un programma Java, viene generato anche un file con estensione .class che è nel
formato byte code o nel formato di comprensione della macchina. Questo file di estensione .class viene
quindi eseguito in diversi ambienti per generare l'output.
Le classi che sono precompilate o fornite dall'originatore java, sono poste in un jar chiamato [Link].
[Link] dove rt si estende per runtime, ovvero i file di classe che sono pronti per essere eseguiti nell'ambiente
di runtime java. Java Runtime Environment (JRE) è composto dalla Java Virtual Machine (JVM), dalle classi
core della piattaforma Java e dalle librerie Java di supporto. JRE è la parte runtime del software Java, ovvero
tutto ciò che serve per eseguire Java nel browser Web. Le JDK possono essere definiti come Java
development kit. Non c'è molta differenza con le JRE. In realtà , in parole semplici, JRE è un sottoinsieme di
JDK. Il kit di sviluppo Java fornisce anche lo strumento per compilare il programma java e l'ambiente per
eseguire il programma java. JRE non ha la capacità di compilare il programma java, fornisce semplicemente
l'ambiente per eseguire il codice byte.
IDE
L’IDE (Integrated Development Environment) viene utilizzato per scrivere il programma java e consente di
risparmiare un sacco di sforzi per il programmatore utilizzando scorciatoie e funzionalità integrate.
EDIZIONI
Standard Edition (Java SE™): fornisce ambiente runtime per esecuzione di applicazioni Java; API
essenziali per sviluppare applicazioni di vario tipo (applet, applicazioni stand-alone);
Enterprise Edition (Java EE™): fornisce un framework per lo sviluppo di applicazioni server-side
complesse. Adatta allo sviluppo di applicazioni Web-based a livello di impresa, e.g., per commercio
elettronico;
Micro Edition (Java ME™) (Non più usato, ora si usa Kotlin): un Java runtime environment
altamente ottimizzato indirizzato specificamente a “computer piccoli”: smart card, telefonini, PDA.
API
Lo Java Application Programming Interface (API) è un codice già scritto, strutturato in packages relativi a
insiemi di argomenti comuni.
Un package è una collezione di classi correlate e interfacce, che forniscono accesso protetto e namespace
management. Per usare una classe o un’interfaccia in un package: