• Non ci sono risultati.

Un servizio è messo a disposizione dell’utente della rete affinché possa trarne un beneficio.

N/A
N/A
Protected

Academic year: 2021

Condividi "Un servizio è messo a disposizione dell’utente della rete affinché possa trarne un beneficio."

Copied!
19
0
0

Testo completo

(1)

Fabio Burroni Fabio Burroni

Dipartimento di Ingegneria dell’Informazione Dipartimento di Ingegneria dell’Informazione

Università degli Studi di Siena Università degli Studi di Siena

burronif

burronif@@unisiunisi..itit

Sistemi e tecnologie per la multimedialità e telematica

Linguaggi per lo sviluppo di Linguaggi per lo sviluppo di

applicazioni e servizi.

applicazioni e servizi.

La presentazione è scaricabile da http://www.ltt.dii.unisi.it/benelli.htm

I servizi delle reti I servizi delle reti

Un servizio è messo a disposizione dell’utente della rete affinché possa trarne un beneficio.

Alcuni esempi:

• Short Messages Services (SMS) sulla rete GSM

• Web browsing

• e-mail

• …

I servizi delle reti I servizi delle reti

Un servizio può essere fornito dal gestore della rete o

da un qualunque altro ente in grado di realizzare una

struttura capace di rispondere alle richieste di ogni

utente.

(2)

I servizi delle reti I servizi delle reti

La maggior parte dei servizi sono dei programmi software realizzati ad hoc per soddisfare le esigenze degli utenti.

Internet

Cos’è un programma?

Cos’è un programma?

Un programma è un insieme di codici interpretabili dal processore di un computer che lo sta ospitando.

Tali codici prendono il nome di linguaggio macchina e sono una sequenza di bit.

Il linguaggio macchina impartisce una sequenza di comandi ed azioni seguendo un flusso logico.

10010011111010101……..

I diagrammi di flusso I diagrammi di flusso

Una volta studiato il problema, l’approccio alla progettazione avviene tramite la composizione del diagramma di flusso.

g g

Il diagramma di flusso esplica tutte le azioni che il programma svolgerà in risposta a determinati eventi ricevuti in input.

“Input sconosciuto”

Inizio “Lettura input”

“E’ in uso il mouse”

“E’ in uso la tastiera”

Lettura input

Input da tastiera?

Input da mouse?

Fine “Lettura input”

si

si no

no

Dal diagramma di flusso al Dal diagramma di flusso al

programma programma

Dopo la redazione e la verifica del diagramma di flusso si passa alla fase di programmazione.

E’ necessario scegliere tra vari linguaggi di

programmazione, linguaggi di script e meta

linguaggi.

(3)

Dal diagramma di flusso al Dal diagramma di flusso al

programma programma

Dopo la redazione e la verifica del diagramma di flusso si passa alla fase di programmazione.

Tutte queste tipologie offrono un approccio di alto livello astraendosi dal linguaggio macchina e mettendo a disposizione del programmatore una sintassi ed una semantica più vicina al linguaggio umano.

E’ necessario scegliere tra vari linguaggi di programmazione, linguaggi di script e meta linguaggi.

Alcuni Linguaggi Alcuni Linguaggi

Java Java Visual Basic Visual Basic

C++ C++

C# C# Java Script Java Script HTML HTML

ASP ASP PHP PHP Delphi Delphi XML XML

WML WML

Il compilatore Il compilatore

Il compilatore è lo strumento in grado di trasformare il codice del linguaggio di programmazione in codice in linguaggio macchina.

Linguaggio di programmazione

import java.awt.*;

import java.awt.event.*;

public class helloW extends Frame{

public static void main(String args[]){

helloW app=new helloW();

} public helloW(){

super(“Hello World”);

setSize(200,200);

addWindowsListner(new helloW.WindowEvenHandler());

show();

} public void paint(Graohic g){

g.drawString(“Hello World”,50,90);

}

class WindowEventHandler extends WindowAdapter { public void windowClosing(WindowEvent e){

System.exit(0);

} } }

Linguaggio macchina

1111001010111100000011011001100001111000011100011000011111000100 1001011000011100111010000011111001000101001100101010000000100101 0101010101010101000101001000100010101011110010101111000000110110 0110000111100001110001100001111100010010010110000111001110100000 1111100100010100110010101000000010010101010101010101010001010010 0010001010101111001010111100000011011001100001111000011100011000 0111110001001001011000011100111010000011111001000101001100101010 0000001001010101010101010101000101001000100010101011110010101111 0000001101100110000111100001110001100001111100010010010110000111 0011101000001111100100010100110010101000000010010101010101010101 0100010100100010001010101111001010111100000011011001100001111000 0111000110000111110001001001011000011100111010000011111001000101 0011001010100000001001010101010101010101000101001000100010101011 1100101011110000001101100110000111100001110001100001111100010010 0101100001110011101000001111100100010100110010101000000010010101 0101010101010100010100100010001010101111001010111100000011011001 1000011110000111000110000111110001001001011000011100111010000011 1110010001010011001010100000001001010101010101010101000101001000 1000101010111100101011110000001101100110000111100001110001100001 1111000100100101100001110011101000001111100100010100110010101000 0000100101010101010101010100010100100010001010101110010101111000 0001101100110000111100001110001100001111100010010010110000111001 1101000001111100100010100110010101000000010010101010101010101010 0010100100010001010101111001010111100000011011001100001111000011 1000110000111110001001001011000011100111010000011111001000101001 1001010100000001001010101010101010101000101001000100010101011110 0101011110000001101100110000111100001110001100001111100010010010 1100001110011101000001111100100010100110010101000000010010101010 1010101010100010100100010001010101111001010111100000011011001100

L’interprete L’interprete

L’interprete è lo strumento in grado di riconoscere la sintassi e la semantica del linguaggio di programmazione agendo direttamente sul codice sorgente.

Linguaggio di programmazione

import java.awt.*;

import java.awt.event.*;

public class helloW extends Frame{

public static void main(String args[]){

helloW app=new helloW();

} public helloW(){

super(“Hello World”);

setSize(200,200);

addWindowsListner(new helloW.WindowEvenHandler());

show();

} public void paint(Graohic g){

g.drawString(“Hello World”,50,90);

}

class WindowEventHandler extends WindowAdapter { public void windowClosing(WindowEvent e){

System.exit(0);

} } }

(4)

La filosofia client

La filosofia client- -server server

La filosofia client-server è basata su due figure principali: il server ed il client.

Il server offre l’intelligenza necessaria al servizio e di conseguenza risponde alle domande pervenute dai vari client.

Il client è un’entità nata per ricevere il servizio offerto dal server. Il servizio viene ricevuto dopo aver interpellato il server. Più client possono rivolgersi allo stesso server.

INTERNET

Il client

Il client -server HTTP - server HTTP

Il protocollo HTTP è basato sul modello client- server.

Internet

Il client

Il client - - server HTTP server HTTP

Il client (browser) invia la richiesta al server ed attende la risposta HTML.

Il protocollo HTTP è basato sul modello client- server.

Internet

Il client

Il client - - server HTTP server HTTP

Il client (browser) invia la richiesta al server ed attende la risposta HTML.

Il web server risponde alle richieste pervenute dai client inviando informazioni HTML.

Il protocollo HTTP è basato sul modello client- server.

Internet

(5)

HTML HTML

HTML è un meta linguaggio basato su TAG.

Un TAG è un elemento racchiuso tra parentesi angolari (“<”,”>”), con eventuali attributi ed ha un’apertura ed una chiusura.

Ogni TAG ha un significato particolare stabilito dall’ente W3C

http://www.w3c.org.

Esistono varie tipologie di TAG che si occupano della formattazione del testo, delle immagini, delle tabelle, dei collegamenti ipertestuali, ecc.

La struttura delle pagine HTML La struttura delle pagine HTML

<HTML>

<HEAD>

<TITLE>Titolo pagina</TITLE>

</HEAD>

<BODY>

<IMG SRC=“image.jpg”>

<P ALIGN=“CENTER”>

Hello World

</P>

</BODY>

</HTML>

La struttura delle pagine HTML La struttura delle pagine HTML

<HTML>

<HEAD>

<TITLE>Titolo pagina</TITLE>

</HEAD>

<BODY>

<IMG SRC=“image.jpg”>

<P ALIGN=“CENTER”>

Hello World

</P>

</BODY>

</HTML>

La pagina HTML è racchiusa tra i TAG

di apertura e di chiusura

<HTML>

<HEAD>

<TITLE>Titolo pagina</TITLE>

</HEAD>

<BODY>

<IMG SRC=“image.jpg”>

<P ALIGN=“CENTER”>

Hello World

</P>

</BODY>

</HTML>

La struttura delle pagine HTML La struttura delle pagine HTML

<HTML>

<HEAD>

<TITLE>Titolo pagina</TITLE>

</HEAD>

<BODY>

<IMG SRC=“image.jpg”>

<P ALIGN=“CENTER”>

Hello World

</P>

</BODY>

</HTML>

Il TAG HEAD contiene il titolo

della pagina

<HEAD>

<TITLE>Titolo pagina</TITLE>

</HEAD>

<BODY>

<IMG SRC=“image.jpg”>

<P ALIGN=“CENTER”>

Hello World

</P>

</BODY>

(6)

La struttura delle pagine HTML La struttura delle pagine HTML

<HTML>

<HEAD>

<TITLE>Titolo pagina</TITLE>

</HEAD>

<BODY>

<IMG SRC=“image.jpg”>

<P ALIGN=“CENTER”>

Hello World

</P>

</BODY>

</HTML>

Il TAG BODY contiene l’effettiva informazione della

pagina HTML

</HEAD>

<BODY>

<IMG SRC=“image.jpg”>

<P ALIGN=“CENTER”>

Hello World

</P>

</BODY>

/HTML>

La struttura delle pagine HTML La struttura delle pagine HTML

<HTML>

<HEAD>

<TITLE>Titolo pagina</TITLE>

</HEAD>

<BODY>

<IMG SRC=“image.jpg”>

<P ALIGN=“CENTER”>

Hello World

</P>

</BODY>

</HTML>

Per inserire le immagini occorre

il TAG IMG

IMG SRC=“image.jpg”>

P ALIGN=“CENTER”>

Hello World /P>

/BODY>

HTML>

La struttura delle pagine HTML La struttura delle pagine HTML

<HTML>

<HEAD>

<TITLE>Titolo pagina</TITLE>

</HEAD>

<BODY>

<IMG SRC=“image.jpg”>

<P ALIGN=“CENTER”>

Hello World

</P>

</BODY>

</HTML>

Per inserire un

nuovo paragrafo occorre il TAG P

g jpg P ALIGN=“CENTER”>

Hello World /P>

/BODY>

HTML>

La struttura delle pagine HTML

La struttura delle pagine HTML

(7)

Funzionamento di un server web Funzionamento di un server web

(statico) (statico)

Pagine HTML

Client Internet Server Web

I primi servizi Web offrivano informazioni Statiche: uguali per tutti gli utenti.

La navigazione web, da un punto di vista tecnologico si basa su dei principi molto semplici.

L’utente usa un programma, denominato Client, per richiedere delle risorse (pagine), ad un altro programma, denominato Server, in esecuzione su una macchina remota.

Browser (client)

Web Server www.apache.org Connessione TCP

Pagine HTML

Richiesta HTTP

Risposta HTTP

Internet

Funzionamento di un server web Funzionamento di un server web

(statico) (statico)

Browser (client)

Web Server www.apache.org Connessione TCP

Pagine HTML

Richiesta HTTP

Risposta HTTP

Internet

Funzionamento di un server web Funzionamento di un server web

(statico)

(statico) WAP e il WML WAP e il WML

Wireless Application Protocol (WAP) è un protocollo di comunicazione che rende possibile la navigazione su terminali mobili.

I dispositivi in grado di analizzare WAP sono dei modelli particolari che contengono al loro interno dei microbrowser per visualizzare le informazioni presenti in rete.

Le pagine visualizzabili sono scritte in WML, un

metalinguaggio simile al HTML, ma adattato

alle limitate capacità hardware del terminale.

(8)

WML WML

Deck

<WML>

<CARD NAME=“Card1”>

<DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO Welcome!

</CARD>

<CARD NAME=“Card2”>

<DO TYPE=“ACCEPT”>

<GO URL=“/submit?N=$(N)&S=$(S)”/>

</DO>

Enter name: <INPUT KEY=“N”/>

Choose speed:

<SELECT KEY=“S”>

<OPTION VALUE=“0”>Fast</OPTION>

<OPTION VALUE=“1”>Slow</OPTION>

<SELECT>

</CARD>

</WML>

WML WML

Deck

<WML>

<CARD NAME=“Card1”>

<DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO Welcome!

</CARD>

<CARD NAME=“Card2”>

<DO TYPE=“ACCEPT”>

<GO URL=“/submit?N=$(N)&S=$(S)”/>

</DO>

Enter name: <INPUT KEY=“N”/>

Choose speed:

<SELECT KEY=“S”>

<OPTION VALUE=“0”>Fast</OPTION>

<OPTION VALUE=“1”>Slow</OPTION>

<SELECT>

</CARD>

</WML>

Card

CARD NAME=“Card1”>

<DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO Welcome!

/CARD>

WML WML

Deck

<WML>

<CARD NAME=“Card1”>

<DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO Welcome!

</CARD>

<CARD NAME=“Card2”>

<DO TYPE=“ACCEPT”>

<GO URL=“/submit?N=$(N)&S=$(S)”/>

</DO>

Enter name: <INPUT KEY=“N”/>

Choose speed:

<SELECT KEY=“S”>

<OPTION VALUE=“0”>Fast</OPTION>

<OPTION VALUE=“1”>Slow</OPTION>

<SELECT>

</CARD>

</WML>

Card

CARD NAME=“Card1”>

<DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO Welcome!

/CARD>

Navigazione <DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO

WML WML

Deck

<WML>

<CARD NAME=“Card1”>

<DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO Welcome!

</CARD>

<CARD NAME=“Card2”>

<DO TYPE=“ACCEPT”>

<GO URL=“/submit?N=$(N)&S=$(S)”/>

</DO>

Enter name: <INPUT KEY=“N”/>

Choose speed:

<SELECT KEY=“S”>

<OPTION VALUE=“0”>Fast</OPTION>

<OPTION VALUE=“1”>Slow</OPTION>

<SELECT>

</CARD>

</WML>

Card

CARD NAME=“Card1”>

<DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO Welcome!

/CARD>

Navigazione <DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO

Variabili <DO TYPE ACCEPT >

<GO URL=“/submit?N=$(N)&S=$(S

</DO>

(9)

WML WML

Deck

<WML>

<CARD NAME=“Card1”>

<DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO Welcome!

</CARD>

<CARD NAME=“Card2”>

<DO TYPE=“ACCEPT”>

<GO URL=“/submit?N=$(N)&S=$(S)”/>

</DO>

Enter name: <INPUT KEY=“N”/>

Choose speed:

<SELECT KEY=“S”>

<OPTION VALUE=“0”>Fast</OPTION>

<OPTION VALUE=“1”>Slow</OPTION>

<SELECT>

</CARD>

</WML>

Card

CARD NAME=“Card1”>

<DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO Welcome!

/CARD>

Navigazione <DO TYPE=“ACCEPT”>

<GO URL=“#Card2”/>

</DO

Variabili <DO TYPE ACCEPT >

<GO URL=“/submit?N=$(N)&S=$(S

</DO>

Elementi di input

p

<SELECT KEY=“S”>

<OPTION VALUE=“0”>Fast</OPTION>

<OPTION VALUE=“1”>Slow</OPTION>

<SELECT>

Un esempio Un esempio

Il browser del terminale mobile:

GATEWAY

Mobile Phone

BSS Mobile Phone

Pagine WML

Operatore di rete Mobile

Service Provider

Internet

Architettura WAP

Il WAP Gateway effettua una codifica delle pagine WML per minimizzare l’occupazione di banda.

HTML

HTML vs vs WML WML

Differente utilizzo del canale:

Internet

<HTML>

<HEAD>

<TITLE>NNN Interactive</TITLE>

<META HTTP-EQUIV="Refresh" CONTENT="1800, URL=/index.html">

</HEAD>

<BODY BGCOLOR="#FFFFFF"

BACKGROUND="/images/9607/bgbar5.gif" LINK="#0A3990"

ALINK="#FF0000" VLINK="#FF0000" TEXT="000000"

ONLOAD="if(parent.frames.length!=0)top.location='http://nnn.com';">

<A NAME="#top"></A>

<TABLE WIDTH=599 BORDER="0">

<TR ALIGN=LEFT>

<TD WIDTH=117 VALIGN=TOP ALIGN=LEFT>

<HTML

>

<HEAD

>

<TITLE

>NNN Interactiv e</TITL E>

<META HTTP- EQUIV=

"Refresh"

CONTE NT="180 0, URL=/in dex.html"

>

HTTP/HTML

Wireless network

<WML>

<CARD>

<DO TYPE="ACCEPT">

<GO URL="/submit?Name=$N"/>

</DO>

Enter name:

<INPUT TYPE="TEXT" KEY="N"/>

</CARD>

</WML>

01001101 00111101 10010011 01101101 11010100 10011010

WAP

Content encoding

(10)

WML, Elementi del linguaggio WML, Elementi del linguaggio

Tabelle

Immagini

Input

Utente Selezioni

In pratica, il Wml supporta molti elementi presenti nell’HTML.

La dinamicità delle pagine HTML:

La dinamicità delle pagine HTML:

JavaScript JavaScript

Per sua natura il codice HTML è statico. Non è possibile controllare le azioni dell’utente all’interno della pagina web.

Per ovviare a questo inconveniente è stato introdotto un particolare linguaggio di script lato client capace di controllare gli elementi e gli eventi ad essi associati all’interno della pagina HTML: JavaScript.

JavaScript JavaScript

Si inserisce all’interno della pagina HTML con il tag SCRIPT oppure si connette alla pagina tramite l’attributo SRC, che specifica l’URL dal quale prelevare il codice.

<script language=“JavaScript” src=http://www.unisi.it/file1.js>

E’ processato direttamente dal browser.

E’ possibile definire delle funzioni e richiamarle in seguito al manifestarsi di determinati eventi.

Interagisce con tutti gli elementi attivi all’interno della pagina: form, input, button, ecc.

Pagine HTML File JavaScript

Client Internet Server Web

JavaScript JavaScript

Il server web dovrà ospitare anche i file Java Script.

(11)

<html>

<head>

<title>titolo</title>

</head>

<body>

<script language="JavaScript">

function controlla(){

if (frmDati.txtNome.value==""){

alert("Inserire almeno un valore.");

return false;

} else{

return true;

} }

</script>

<form action="invio.asp" method="post“

name="frmDati“ onSubmit=“return controlla();”>

Nome:

<input name="txtNome" type="text“

size="20" maxlength="20">

<input name="cmdConf" type=“submit“

value="Conferma“>

</form>

</body>

</html>

JavaScript

JavaScript nella pagina HTML nella pagina HTML

<html>

<head>

<title>titolo</title>

</head>

<body>

<script language="JavaScript">

function controlla(){

if (frmDati.txtNome.value==""){

alert("Inserire almeno un valore.");

return false;

} else{

return true;

} }

</script>

<form action="invio.asp" method="post“

name="frmDati“ onSubmit=“return controlla();”>

Nome:

<input name="txtNome" type="text“

size="20" maxlength="20">

<input name="cmdConf" type=“submit“

value="Conferma“>

</form>

</body>

</html>

JavaScript

JavaScript nella pagina HTML nella pagina HTML

<html>

<head>

<title>titolo</title>

</head>

<body>

<script language="JavaScript">

function controlla(){

if (frmDati.txtNome.value==""){

alert("Inserire almeno un valore.");

return false;

} else{

return true;

} }

</script>

<form action="invio.asp" method="post“

name="frmDati“ onSubmit=“return controlla();”>

Nome:

<input name="txtNome" type="text“

size="20" maxlength="20">

<input name="cmdConf" type=“submit“

value="Conferma“>

</form>

</body>

</html>

JavaScript

JavaScript nella pagina HTML nella pagina HTML

<html>

<head>

<title>titolo</title>

</head>

<body>

<script language="JavaScript">

function controlla(){

if (frmDati.txtNome.value==""){

alert("Inserire almeno un valore.");

return false;

} else{

return true;

} }

</script>

<form action="invio.asp" method="post“

name="frmDati“ onSubmit=“return controlla();”>

Nome:

<input name="txtNome" type="text“

size="20" maxlength="20">

<input name="cmdConf" type=“submit“

value="Conferma“>

</form>

</body>

</html>

JavaScript

JavaScript nella pagina HTML nella pagina HTML

(12)

<html>

<head>

<title>titolo</title>

</head>

<body>

<script language="JavaScript">

function controlla(){

if (frmDati.txtNome.value==""){

alert("Inserire almeno un valore.");

return false;

} else{

return true;

} }

</script>

<form action="invio.asp" method="post“

name="frmDati“ onSubmit=“return controlla();”>

Nome:

<input name="txtNome" type="text“

size="20" maxlength="20">

<input name="cmdConf" type=“submit“

value="Conferma“>

</form>

</body>

</html>

JavaScript

JavaScript nella pagina HTML nella pagina HTML

<html>

<head>

<title>titolo</title>

</head>

<body>

<script language="JavaScript">

function controlla(){

if (frmDati.txtNome.value==""){

alert("Inserire almeno un valore.");

return false;

} else{

return true;

} }

</script>

<form action="invio.asp" method="post“

name="frmDati“ onSubmit=“return controlla();”>

Nome:

<input name="txtNome" type="text“

size="20" maxlength="20">

<input name="cmdConf" type=“submit“

value="Conferma“>

</form>

</body>

</html>

JavaScript

JavaScript nella pagina HTML nella pagina HTML

<html>

<head>

<title>titolo</title>

</head>

<body>

<script language="JavaScript">

function controlla(){

if (frmDati.txtNome.value==""){

alert("Inserire almeno un valore.");

return false;

} else{

return true;

} }

</script>

<form action="invio.asp" method="post“

name="frmDati“ onSubmit=“return controlla();”>

Nome:

<input name="txtNome" type="text“

size="20" maxlength="20">

<input name="cmdConf" type=“submit“

value="Conferma“>

</form>

</body>

</html>

JavaScript

JavaScript nella pagina HTML nella pagina HTML JavaScript JavaScript

Il tipico impiego del javascript è il controllo dei dati inseriti in un form da un utente.

Altri utilizzi riguardano la grafica delle pagine, ad esempio cambiare l’aspetto di una immagini quando ci si passa sopra con il mouse (roll- over).

Il Java Script può interagire con altri “Oggetti” presenti nella pagina HTML, quali: Applet Java, ActiveX Control, etc…

(13)

eXstensible

eXstensible Markup Markup Language Language : : XML XML

E’ un linguaggio di mark-up ideale per applicazioni distribuite;

Mantiene la descrizione e la presentazione dei contenuti su due piani distinti;

Fornisce un linguaggio ad hoc, XSL, per la trasformazione da un formato ad un altro.

SMART WIZARD LNT MSQL REGULUS- GETRONICS FIREWALL

CC\HD ServerISO CC\HD

MADRID

TARGETIZE CC\HD

LONDRA ROBOTIKER CC\HD

SIENA TRAVELFUSIO

N

eXstensible

eXstensible Markup Markup Language Language : XML : XML

Sistema Distribuito

Un sistema distribuito è costituito da un insieme di

elementi (hardware, software) fisicamente separati tra loro e che comunicano tramite una rete di comunicazione.

SMART WIZARD LNT MSQL REGULUS- GETRONICS FIREWALL

CC\HD ServerISO CC\HD

MADRID

TARGETIZE CC\HD

LONDRA ROBOTIKER CC\HD

SIENA TRAVELFUSIO

N

eXstensible

eXstensible Markup Markup Language: XML Language : XML

Sistema Distribuito

<?xml version="1.0"?>

<CATALOGO>

<PIANTA BESTSELLER="SI">

<NOME>

<COMUNE>Viola</COMUNE>

<BOTANICO>Sanguinaria canadensis</BOTANICO>

</NOME>

<CRESCITA >

<ZONA>Toscana</ZONA>

<LUCE>Poca Luce</LUCE>

</CRESCITA>

<INFOVENDITA>

<PREZZO>€ 3.00</PREZZO>

<DISPONIBILITA>15/07/02</DISPONIBILITA>

</INFOVENDITA>

</PIANTA>

</CATALOGO>

Un documento XML

Un documento XML

(14)

XML e la presentazione dei contenuti:

XML e la presentazione dei contenuti:

XSL XSL

Processore XSLT

Documento

XML HTML

WML

XML Foglio di

stile

XSL

XSL XSL XML e la presentazione dei contenuti: XSL XML e la presentazione dei contenuti: XSL

<xsl:for-each select="CATALOGO/PIANTA">

<TR>

<xsl:apply-templates/>

</TR>

</xsl:for-each>

</TABLE>

</BODY>

</HTML>

</xsl:template>

<xsl:template match="NOME">

<TD><xsl:value-of select="COMUNE"/></TD>

<TD><xsl:value-of select="BOTANICO"/></TD>

</xsl:template>

<xsl:template match="CRESCITA">

<TD><xsl:value-of select="ZONA"/></TD>

<TD><xsl:value-of select="LUCE"/></TD>

</xsl:template>

XML e la presentazione dei contenuti: XSL XML e la presentazione dei contenuti: XSL

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"

href="mystyle.xsl"?>

<CATALOGO>

<PIANTA BESTSELLER="SI">

<NOME>

<COMUNE>Viola</COMUNE>

<BOTANICO>Sanguinaria canadensis</BOTANICO>

</NOME>

<CRESCITA >

<ZONA>Toscana</ZONA>

<LUCE>Poca Luce</LUCE>

</CRESCITA>

<INFOVENDITA>

<PREZZO>€ 3.00</PREZZO>

<DISPONIBILITA>15/07/02</DISPONIBILITA>

</INFOVENDITA>

</PIANTA>

<xsl:for-each select="CATALOGO/PIANTA">

<TR>

<xsl:apply-templates/>

</TR>

</xsl:for-each>

</TABLE>

</BODY>

</HTML>

</xsl:template>

<xsl:template match="NOME">

<TD><xsl:value-of select="COMUNE"/></TD>

<TD><xsl:value-of select="BOTANICO"/></TD>

</xsl:template>

<xsl:template match="CRESCITA">

<TD><xsl:value-of select="ZONA"/></TD>

<TD><xsl:value-of select="LUCE"/></TD>

</xsl:template>

XML e la presentazione dei contenuti: XSL XML e la presentazione dei contenuti: XSL

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"

href="mystyle.xsl"?>

<CATALOGO>

<PIANTA BESTSELLER="SI">

<NOME>

<COMUNE>Viola</COMUNE>

<BOTANICO>Sanguinaria canadensis</BOTANICO>

</NOME>

<CRESCITA >

<ZONA>Toscana</ZONA>

<LUCE>Poca Luce</LUCE>

</CRESCITA>

<INFOVENDITA>

<PREZZO>€ 3.00</PREZZO>

<DISPONIBILITA>15/07/02</DISPONIBILITA>

</INFOVENDITA>

</PIANTA>

<xsl:for-each select="CATALOGO/PIANTA">

<TR>

<xsl:apply-templates/>

</TR>

</xsl:for-each>

</TABLE>

</BODY>

</HTML>

</xsl:template>

<xsl:template match="NOME">

<TD><xsl:value-of select="COMUNE"/></TD>

<TD><xsl:value-of select="BOTANICO"/></TD>

</xsl:template>

<xsl:template match="CRESCITA">

<TD><xsl:value-of select="ZONA"/></TD>

<TD><xsl:value-of select="LUCE"/></TD>

</xsl:template>

(15)

Il linguaggio Java: gli oggetti Il linguaggio Java: gli oggetti

Java è un linguaggio di programmazione orientato agli “oggetti”.

L’oggetto è l’unità minima di programmazione. La funzione di un oggetto è quella di rappresentare un “concetto” del problema che il programma deve risolvere.

Un oggetto è costituito da due parti: Interfaccia ed Implementazione.

Implementazione Interfaccia

L’interfaccia rappresenta tutto ciò che è visibile ed utilizzabile esternamente:

funzionalità e dati di un oggetto. Le funzionalità sono chiamate metodi ed i dati attributi.

L’implementazione è costituita dagli algoritmi che realizzano le funzionalità esposte nell’interfaccia, e da tutto ciò che non deve essere visibile esternamente

Gli oggetti appartenenti ad uno stesso programma possono comunicare tra di loro tramite un meccanismo detto a “scambio di messaggi”:

Comunicazione tra oggetti Comunicazione tra oggetti

Interfaccia Implementazione

Oggetto A

Interfaccia Implementazione

Oggetto B

Implementazione Interfaccia

Oggetto C A comunica con B;

B comunica con C;

E’ possibile cambiare l’implementazione senza modificare l’interfaccia di un oggetto e senza influenzare la comunicazione con gli altri oggetti.

Vantaggi della programmazione ad Vantaggi della programmazione ad

oggetti oggetti

Interfaccia Implementazione

Oggetto B

E’ possibile cambiare l’implementazione senza modificare l’interfaccia di un oggetto e senza influenzare la comunicazione con gli altri oggetti.

Vantaggi della programmazione ad Vantaggi della programmazione ad

oggetti oggetti

Interfaccia Implementazione

Oggetto A

Interfaccia Implementazione

Oggetto B

(16)

E’ possibile cambiare l’implementazione senza modificare l’interfaccia di un oggetto e senza influenzare la comunicazione con gli altri oggetti.

Vantaggi della programmazione ad Vantaggi della programmazione ad

oggetti oggetti

Interfaccia Implementazione

Oggetto A Nuova Implementazione

per l’oggetto A

Interfaccia Implementazione

Oggetto B

La caratteristica fondamentale che ha decretato il successo di Java è la “portabilità”.

Per portabilità si intende la possibilità di eseguire un programma su qualsiasi piattaforma (Sistema Operativo + CPU). Questo è possibile perché il codice compilato di un programma Java, ha un formato detto byte-code e non è un codice macchina.

La portabilità del codice La portabilità del codice

Linguaggi tradizionali (C, Pascal, ecc):

A=10;

b=20;

print(“Hello World”) Codice Sorgente (scritto dal programmatore)

Compilatore (dipende dal Sistema Operativo)

010010010 010010010 010001001 010001001

010001000 Codice Macchina (eseguito dalla CPU)

La portabilità del codice Java La portabilità del codice Java

A=10;

b=20;

print(“Hello World”) Codice Sorgente (scritto dal programmatore)

Compilatore (Non dipendente dal Sistema Operativo)

010010010 010010010 010001001 010001001 010001000

Byte-Code (Codice binario intermedio)

La portabilità del codice Java La portabilità del codice Java

Il Byte-Code non è un codice eseguibile, ma deve essere interpretato da un apposito modulo detto “Java Virtual Machine”

A=10;

b=20;

print(“Hello World”) Codice Sorgente (scritto dal programmatore)

Compilatore (Non dipendente dal Sistema Operativo)

010010010 010010010 010001001 010001001 010001000

Byte-Code (Codice binario intermedio)

(17)

Java byte

Java byte - - code e code e Virtual Machine Virtual Machine

Piattaforma

Windows Piattaforma

Linux

Piattaforma Unix Byte-Code

JVM per Linux JVM per

Windows

JVM per Unix

111110010 111000010 001001001 010100111 010001111

0100111100 0100111100 1100010010 0100010010 0100010001 010010010

010010010 010001001 010001001 010001000

010010010 010010010 010001001 010001001 010001000

Le Le Applet Applet Java Java

Sono particolari applicazioni Java incorporate nelle pagine Web.

Vengono scaricate dai siti internet come le pagine Web, ed il fatto di essere scritte in Java garantisce la loro compatibilità con qualsiasi piattaforma client.

Internet\

Client Server

Richiesta Applet

Risposta Applet

Le possibili aree d’impiego:

• Animazioni grafiche.

• Trasmissione di dati utente criptati verso Web Server.

• Accesso a particolari periferiche, ad esempio Lettori di Smart Card.

• …

Esecuzione delle

Esecuzione delle Applet Applet Java Java

Le applet Java vengono eseguite all’interno del browser web. Tali Browser incorporano una apposita Java Virtual Machine.

Browser Web Pagina HTML

Applet

JVM

Java 2 Micro Edition

Una svolta decisiva nell’evoluzione dei terminali mobili è stata data dall’introduzione di una nuova piattaforma, univoca per tutti i dispositivi, che si avvale del linguaggio JAVA: il J2ME (Java 2 Micro Edition).

Sul sito internet della Sun è pubblicata una lista aggiornata contenente l’elenco dei terminali mobili sui quali è implementata la piattaforma J2ME. Questo elenco nel mese di Agosto 2002 conteneva circa 80 dispositivi, mentre nel Novembre 2003 ne contava più di 130, testimoniando l’integrazione pressoché totale di questa tecnologia in ogni GSM di ultima generazione.

E’ evidente quindi come l’introduzione di una piattaforma per lo sviluppo di applicazioni unica per tutti i dispositivi di ogni marca e modello rappresenta una prospettiva estremamente interessante in primo luogo per i produttori.

(18)

Fin dalla sua introduzione la tecnologia J2ME è stata utilizzata quasi esclusivamente per la creazione di giochi, ed i moderni terminali con display grafico stanno decretando il pieno successo di tale settore.

In realtà una delle caratteristiche più interessanti del J2ME è quella di essere in grado di sfruttare le potenzialità di connessione alla rete offerte dal GSM: esistono precise classi JAVA che si occupano proprio della creazione e della gestione di connessioni ad internet tramite rete GPRS.

Grazie a tale peculiarità il J2ME si presta particolarmente alla

realizzazione di servizi nei quali è previsto lo scambio di informazioni con un Server remoto.

Java 2 Micro Edition

Una Applicazione Java per terminali mobili si chiama MIDLET

Java 2 Micro Edition

HttpView

Esempio di una midlet che si collega ad un server e scarica una pagina html.

Java 2 Micro Edition

Esempio di una midlet che si collega ad un server Gis e scarica una mappa.

Generazione di pagine WEB(html/wml) Dinamica

Molto spesso è necessario generare le informazioni da trasferire al Client in maniera dinamica. Ad esempio si può generare una pagina

Html/WML contenente l’elenco dei prodotti disponibili in magazzino, oppure realizzare pagine differenti in funzione dell’utente che vi accede.

Per realizzare pagine dinamicamente è necessaria una “qualche

tecnologia” lato server, che permetta di inserire all’interno delle pagine stesse delle istruzioni che vengono elaborate dal server prima di restituire la pagina al Client.

Queste Tecnologie, quindi, permettono di realizzare quelle che si chiamano Web Application.

Alcuni esempi sono: ASP, Perl, PHP, JSP, etc…

(19)

Richiesta

Risposta Internet

Base di dati.

<wml>

<card id=“Card1”>

</card>

</wml>

Istruzioni da elaborare.

Le istruzioni da elaborare possono richiedere al server di interrogare la base di dati, estrarre particolari informazioni e formattare i dati recuperati in una tabella.

Generazione di pagine WEB(html/wml) Dinamica

<wml>

<card id=“Card1”>

</card>

</wml>

Per realizzare pagine dinamicamente è necessaria una “qualche tecnologia” lato server, che permetta di inserire all’interno delle pagine stesse delle istruzioni che vengono elaborate dal server prima di restituire la pagina al Client.

Richiesta

Risposta Internet

Base di dati.

<table columns=“2”>

<tr>

<td>Prodotto</td>

<td>Prezzo</td>

</tr>

<tr>

<td>Pen Drive</td>

<td>49,50 €</td>

</tr>

- - -

</table>

Questo potrebbe essere il risultato dell’elaborazione realizzata lato server.

Generazione di pagine WEB(html/wml) Dinamica

Fabio Burroni Fabio Burroni

Dipartimento di Ingegneria dell’Informazione Dipartimento di Ingegneria dell’Informazione

Università degli Studi di Siena Università degli Studi di Siena

burronif

burronif@@unisiunisi..itit

Riferimenti

Documenti correlati

Per valutare gli effetti dell’ inquinamento atmosferico sulla diffusione di COVID-19 e sulla prognosi dei casi bisogna ricordare che la diffusione dei nuovi casi nelle epidemie

Il modello Life Course integra i dati provenienti dagli studi epidemiologici che hanno valutato gli effetti sulla salute dei comportamenti, i dati degli studi longitudinali che

Nel corso degli anni, queste survey sono state anche l’ occasione per mettere alla prova la qualità della ri- levazione dei determinanti più consolidati, come la prevalenza

Sono stati inclusi 7 studi osservazionali condotti in 6 paesi diffe- renti (Francia, Italia, Spagna, Svezia, UK, USA) che confrontava- no dati prescrittivi prima e dopo l’

Uno studio prospettico di coorte che ha seguito 1.037 nati nel 1972-73 in Florida fino a 38 anni e che ha effettuato una valutazione neu- ropsicologica a 13 anni, prima

Gli esi- ti presentati derivano quindi da due osservazioni (la prima e la terza) in gran parte indipendenti. Il numero di persi al follow-up è elevato: dei 149 partecipanti

Gli autori hanno quindi ipotizzato che l’ esposizione al PM du- rante la gravidanza possa influire sulla lunghezza telomerica alla nascita; infatti oggi sempre più autori credono

Come ri- portano Sheehan e colleghi nell’ introduzione dello studio AVI- CA, numerosi studi osservazionali hanno in seguito dimostrato che il rischio di asma può essere