I vari tipi di I/O


    Sinteticamente un programma al computer e' strutturato nel modo seguente:

  1. vengono date delle variabili (o dati iniziali). I dati iniziali possono essere immessi dall'utente ("input") oppure stabiliti dal programma (cioè dal programmatore),
  2. i dati iniziali vengono trattati, manipolati, da "sottoprogrammi" (o "subroutines", o "metodi", o ancora "funzioni")
  3. il risultato di queste operazioni viene trasmesso all'utente ("output")


    In genere il programmatore si occupa soprattutto della fase 2); le fasi di "input" e "output" (I/O = input/output) sono gestite, tramite istruzioni standard, dal sistema. Però, al fine di interagire al meglio con l'utente, è indispensabile conoscere le modalità di I/O (input/output) offerte dal sistema.
Java offre tre modalità "principali" di interazione con l'utente:
  1. console
  2. applicazione "standalone" con supporto grafico
  3. applet

Cerchiamo di spiegare questi termini.

Console:

Supponiamo di essere in un sistema operativo Windows (:-(
Una console è una finestra con una riga di commando MS-DOS (chiamata "shell" sotto Linux). Per aprire una tale finestra fare: start -> programmi -> prompt di MS-DOS.
A questo punto compare sullo schermo una finestra di questo tipo:


Voi potete dialogare con il programma solo attraverso questa finestra. Però questo dialogo avverrà solo attraverso stringhe di caratteri stampate sullo schermo (niente immagini o suoni). Per esempio un dialogo ideale, per un programma che calcola l'area di un rettangolo, potrebbe essere:

>inserisci i lati del rettangolo

> 3 5

> l'area del tuo rettangolo vale 15

Non è estremamente stimolante, ma ha il suo fascino!
Ricordiamoci che negli anni '80-'90 (intendo 1980 e primi anni del '90), questo era l'unico (praticamente) I/O (input/output) disponibile.

Applicazione "standalone" (con supporto grafico)

Letteralmente, standalone = che sta per conto suo, che non ha bisogno di risorse esterne.

Un tale programma si costruisce da se' il proprio supporto grafico. Per esempio:



Un'applicazione standalone e' un programma "completo" (con le sue finestre, il suo "look and feel", le sue funzionalita', ecc...) che gira sul vostro computer. Un tale programma può leggere e scrivere sul vostro "file-system" (cioe' puo' leggere e scrivere files sul vostro computer). Questo da' grande liberta', ma dal punto di vista della sicurezza, pone alcuni problemi non inidifferenti (e se uno mi scrive un virus nel mio computer?)

Applets

La parola applet (= piccola aplicazione , piccolo programma) e' ormai automaticamente abbinato alla parola "Java". Le applet java sono piccoli programmi eseguibili nei browsers. Un browser e' un'applicazione capace di interpretare i files .html. Per esempio Interner Explorer e' un browser; ma ne esistono parecchi altri; Netscape (il padre di tutti i browser), Opera, ecc... Anzi, non e' neanche tanto difficile, fabbricarsi il prorprio browser.
Il funzionamento di un'applet puo' essere schematizzato nel modod seguente: visito il sito Y e capito su una pagina (http://www.Y.app.html) contenente l'applet "App.class". Quando il mio browser fa richiesta di visualizzare la pagina (http://www.Y.app.html), il server che gestisce tale pagina, mi spedisce il file "http://www.Y.app.html" e il file "App.class". Questi files vengono poi eseguiti dal MIO computer. Il programma "App.class" viene eseguito dal mio computer e visualizzato nella finestra del browser. Tale programma e' del tipo applicazione standalone, ma con la restrizione che puo' essere (eseguito) visualizzato SOLO all'interno di un browser.

In particolare, contrariamente ad un'applicazione "standalone", un'aplet java non puo' ne' leggere, ne' scrivere files (sul mio computer).

L'impostazione di un'applet e' assai diversa, dal punto di vista del codice, dall'impostazione di un'applicazione (un'applet ha un metodo "init", mentre un'applicazione ha un metodo "main"; e' comunque possibile creare dei programmi "ibridi", che possono girare sia come applicazioni (standalone") che come applet).

Esempio di una (semplice) applet java che gira nel browser Inetrnet Explorer:






Conclusione:

Ogni metodo (console, applicazione, applet) ha i suoi preggi e i suoi difetti. Sembra pero' chiaro, che per lo sviluppo di programmi "desktop" (da tavolo, cioe' che non fanno intervenire Internet o qualsiasi rete), lo sviluppo di "applicazioni" (standalone) sia quello piu' appettibile: in quel ambito si possono creare programmi veri e propri, che non sono costretti a girare in una finestra DOS (con tutte le limitazioni che questo comporta), ne' in un browser (con, ancora una volta, serie restrizioni, specie sulla sicurezza).
Se invece vogliamo esportare il nostro lavoro su Internet, allora l'unica possibilita', e' quella di sviluppare applets.

Detto cio', inizieremo col studiare programmi "da console" perche', didatticamente, sono quelli piu' semplici ed inoltre sono storicamente all'origine della programmazione.