La programmazione al tempo di Internet:seminario su Java

Giuseppe Zito

Seminario tenuto al Dipartimento di Fisica di Bari il 15 Gennaio 1997.


Materiale usato al seminario disponibile.

Indice

Introduzione:puo' Java rimpiazzare Windows?


Nel numero di Gennaio 1997 sulla copertina di Byte campeggiava questo "strano" titolo: Puo' Java rimpiazzare Windows. Il titolo e' strano perche' Java e' un linguaggio di programmazione mentre Windows e' una piattaforma. Questo seminario cerchera' di spiegare come un nuovo linguaggio di programmazione di nome Java minaccia di sostituirsi alla piu' diffusa piattaforma attuale.

La struttura di questo seminario:si puo' insegnare Java in un'ora?


Questo seminario e' una ideale continuazione di un
seminario su Internet tenuto 2 anni fa e basato sull'HTML. Cioe' e' un aggiornamento su Internet e sui materiali interattivi aggiunti ad essa da Java.

Purtroppo Java a differenza dell'HTML e' un linguaggio di programmazione ed e' impossibile da insegnare in un'ora.Come sanno i programmatori di professione occorrono mesi se non anni. Ed allora? Questo seminario e' dedicato anche a chi non e' esperto di programmazione e l'approccio usato e' quello di un ingegnere che mostra come si costruisce un ponte o altra opera di ingegneria in un'ora usando dei modellini o dei pezzi lego. Anche chi non e' esperto potra' apprezzare come questa costruzione avvenga e magari dopo il seminario potra' cominciare a giocare con questi modellini iniziando magari una carriera di programmatore.

Questa parte in cui insegnero' a scrivere programmi in Java si basa su un applet (programma) di una certa complessita'. Ma per arrivare a questo ,che e' il cuore del seminario, ci sara' una breve introduzione "storica" e la spiegazione di come si fa ad utilizzare i materiali Java scritti da altri. Questa prima parte non richiede alcuna conoscenza di programmazione.

Un po' di storia:come mai Java e non Visual Basic (o C++ ,etc)?


Java e' un moderno linguaggio di programmazione,buono ma non certo eccezionale.Qui ne parliamo solo perche' dietro c'e' Internet.La fortuna di Java e' stata solo di trovarsi al posto giusto al momento giusto.

Circa 2 anni fa Internet aveva un problema,vedremo fra poco quale,e la Sun da parte sua aveva speso un sacco di soldi per questo nuovo linguaggio per "tostapani" o altri gadget, senza riuscire a ricavarne niente. Java poteva risolvere questo problema di Internet e Sun pensa bene di regalarlo alla rete. E' cominciata da allora la fortuna di Java.

Qual'e' il problema che Java ha risolto?


Il problema da risolvere 2 anni fa era quello di come rendere un ipertesto interattivo.Questo e' in teoria facile. Basta attaccare a un link un programma. Il problema su Internet e' che:
  1. Il computer remoto a cui vi collegate puo' essere diverso dal vostro e il programma non funziona percio' sul vostro computer.
  2. Come assicurarsi che in questo modo non carichiate un virus che cancelli il vostro disco(Internet e' la fabbrica dei virus)?
Questo problema e' stato dapprima risolto in maniera molto imperfetta con i cosiddetti CGI script:programmi che girano sul computer remoto eliminando i due problemi ma creandone due nuovi:
  1. Interattivita' insufficiente sui moderni computers:immaginate di dover mandare un modulo HTML per ogni rotazione che fate fare a un oggetto grafico.
  2. Carico fortissimo sul computer remoto(i computer attuali possono senza problemi inviare 100 documenti in un minuto, ma eseguire 100 programmi nello stesso tempo e' davvero problematico).
I programmi in Java eseguono sul vostro computer e risolvono i 2 problemi prima visti della indipendenza dalla piattaforma e della sicurezza in maniera brillante nel modo seguente:
  1. Il programma Java(applet) che caricate non e' compilato per una piattaforma specifica ma per la macchina virtuale Java.Esso viene eseguito da un interprete dentro Netscape.
  2. La protezione da virus avviene in questo stesso interprete che tra l'altro tiene il programma in una scatola di sabbia(sand box in inglese) come si fa coi bambini vivaci impedendogli di fare alcunche' di nocivo al vostro computer.

Internet il supermercato degli applet:come trovarli,come usarli.


Java ha realizzato il sogno della programmazione ad oggetti di avere dei programmi riutilizzabili. Spiego per chi non e' un programmatore, che la programmazione riguarda la soluzione di problemi col computer. Ma spesso la soluzione di un problema non richiede arcane abilita' di programmatore ma solo
fare una rapida ricerca su un motore come AltaVista ,trovare un applet gia' pronto e utilizzarlo seguendo queste regole. Internet e' diventata un supermercato di applet utilizzabili da parte di tutti qualsiasi sia il tipo di computer, cosi' come ora utilizzate immagini,suoni e altri materiali dalla rete.In questa tabella di motori di ricerca trovate alcune righe di risorse dedicate alla sola ricerca di applet. Come per il Web in generale anche per gli applet avete cataloghi di applet (il piu' famoso e' Gamelan) che classificano gli applet in maniera sistematica oppure potete utilizzare i normali motori. In quest'ultimo caso fate ricerche in pagine Web che hanno applet al loro interno.

Per utilizzare un applet non e' necessario copiarlo su proprio disco. Anzi non e' nemmeno consigliabile perche questo di solito vi puo' creare dei problemi. Solo se l'applet deve usare dei files sul vostro disco (ad es. un applet che anima una serie di gif) allora siete costretti a copiarlo(almeno per ora,per questioni di sicurezza, un'applet puo' accedere solo ai files sul computer di provenienza).

La programmazione taglia e incolla quando e' disponibile il sorgente


Di molti programmi e' disponibile anche il codice sorgente che potete copiare e ricompilare magari con modifiche per adattarlo alle vostre necessita'. Questo porta a quello che chiamo programmazione "taglia e incolla" le cui istruzioni do qui a beneficio di chi non sa come programmare.

Caricate il Java Development Kit sul vostro computer(e' questo il linguaggio ufficiale fornito gratis dalla Sun).Lo trovate in rete ma anche su parecchi CD allegati a libri e riviste.

Installatelo.

Ora fate partire un editor di testi (Wordpad o Notepad vanno benissimo). Tagliate il programma sorgente e incollatelo nella finestra di Wordpad.Salvatelo come file di testo nomeapplet.java.

Date il comando(dalla finestra MSDOS) javac nomeapplet.java

A questo punto create un piccolo HTML con l'unico comando:

<applet code=nomeapplet.class width= height= >
 </applet>

Caricate questo documento in Netscape(con Java abilitato) e il gioco e' fatto!

Prima provate senza modificare il programma. Quando vi siete familiarizzati con queste operazioni,cominciate a fare con l'editore di testi alcune semplici modifiche e sperate per il meglio! Vi ho detto che la programmazione e' difficile:un carattere in piu' o in meno e il programma non funziona.

Imparate Java in un'ora


Per "imparare" Java in un'ora applicate la programmazione "taglia e incolla" a
questa serie di circa 10 programmi scelti in modo da farvi rifare in pochissimo tempo il percorso che il programmatore fa in mesi o anni procedendo dalle cose piu' semplici a quelle piu' complesse. L'esempio piu' complesso che troverete e' l'applet che disegna il grafico di una serie di numeri dati a mano.

Non spaventatevi per la marea di nuovi termini introdotti. Specialmente la programmazione ad oggetti,da questo punto di vista, e' terribile. Due soli termini e' importante conosciate con esattezza:nel gergo Java un programma si chiama applicazione. Per questo motivo, un programma con interfaccia grafica che gira all'interno di Netscape si chiama applet o applicazioncina. Un applet ha di piccolo solo il nome perche' in genere e' molto piu' complicato e difficile da fare di un'applicazione. Per cominciare un'applicazione non ha bisogno di un html col comando <applet> per eseguire, ma basta il comando (scritto a mano in una finestra MSDOS):

 java nomeapplicazione

Tornando alla programmazione, ci sono 3 gradi complessita' che bisogna affrontare. Nel primo gradino abbiamo programmi(applicazioni) dove ci sono dei dati che vengono trattati da sottoprogrammi o subroutines.

Nel secondo gradino abbiamo sempre applicazioni fatte ora da "oggetti" che comunicano inviandosi dei "messaggi":e' la famosa programmazione ad oggetti.

Infine abbiamo nel terzo gradino gli applet che sono scritti in modo tale da funzionare all'interno di Netscape con una moderna interfaccia grafica che risponde ad azioni dell'utente come premere un pulsante.Detto questo, non spaventatevi e procedete a ritagliare i programmi che seguono.

Chi invece conosce il C o il C++ puo' essere interessato a queste informazioni. Da notare che non e' necessario conoscere C o C++ o qualsiasi altro linguaggio per imparare Java. Anzi al momento Java nelle universita' sta rimpiazzando i linguaggi suddetti come primo linguaggio da usare per imparare la programmazione.

Perche' Java interessa tanto i programmatori di professione?


Java,oltre a risolvere il problema di avere pagine interattive, ha introdotto un nuovo concetto che sta rivoluzionando il mondo della programmazione ed ha influenza anche sui normali programmi tipo word processor o foglio elettronico. Il concetto e' quello di avere dei programmi indipendenti dalla piattaforma che una volta scritti funzionano su ogni computer presente o futuro.Finora un lavoro enorme veniva fatto solo per adattare il programma scritto ad ogni nuovo computer.

Ora con Java abbiamo un'unica piattaforma. Java inoltre rende possibile una semplificazione dell'attuale PC e di conseguenza ne permette una costruzione a prezzi ridotti.In futuro avremo PC senza dischi,CDROM e dischetti ma con il solo collegamento in rete e come sistema operativo Netscape o il suo equivalente. Avete bisogno di un word processor? Cliccate su un link e il programma viene caricato via rete.Lo usate e alla fine lo gettate via come ora fate con i documenti in rete.

L'evoluzione di Java


Come l'HTML, Java e' sottoposto a una veloce evoluzione.Il materiale qui presentato e' stato sviluppato con jdk 1.02 e poi modificato per il jdk 1.1.Ma esiste gia' un jdk 1.2 (rinominato Jdk 2 che pero' non e' ancora implementato nei browser). Quindi,in pratica, 3 Java diversi! Infatti nel passare dalla 1.02 alla 2 sono state fatte alcune modifiche e moltissime aggiunte. Tra queste la possibilita' per un oggetto di essere salvato su disco (in gergo serializzazione) assieme col suo stato . L'oggetto cosi' salvato puo' essere inviato a un qualsiasi computer in rete. Questo permette tutta una nuova serie di applicazioni inclusa la definizione degli Javabeans che sono dei componenti Java pensati per essere usati a scatola chiusa per costruire applicazioni complesse con sistemi di sviluppo visuali. O ancora la gestione di base di dati distribuite e il richiamo di metodi su un computer remoto. E' stato introdotto un nuovo modo di gestire gli eventi. Al posto di awt (che e' il minimo indispensabile per sviluppare interfacce grafiche) si puo' usare "swing" molto piu' completa. E cosi' via...

Alternative a Java ovvero cos'e' questo dotNet (.Net) e perche' ormai compare dappertutto


Le principali alternative a Java sono ActiveX e Shockwave.Activex e' la proposta Microsoft per avere pagine interattive. Activex non e' un linguaggio come Java ma una specifica di "componenti" che possono essere realizzati usando qualsiasi linguaggio(da questo punto di vista esso andrebbe confrontato con i Javabeans). Esso e' stato introdotto per questioni di "efficienza" anche se
Java non sembra essere tanto inefficiente.Il problema maggiore con Activex e' che funziona solo su macchine Wintel. Inoltre sembra avere maggiori problemi di sicurezza rispetto a Java.

Un'altra alternativa e' la tecnologia Shockwave di Macromedia utilizzabile attraverso "plugin". Questa soluzione ha lo svantaggio di essere proprieta' esclusiva di Macromedia e per poter creare delle pagine interattive dovete comprare l'apposito programma(Director). Negli ultimi anni Macromedia ha immesso sul mercato un nuovo programma chiamato Flash per produrre animazioni di rete. Questo programma ha avuto un'enorme successo e inoltre essendo le specifiche dei file Flash standard , e' possibile produrre materiali Flash anche con altri programmi disponibili gratis.
Anche la Microsoft con l'iniziativa .NET sta cercando di riacquistare il territorio delle applicazioni online dove Java regna ora incontrastata. Facendo questo 5 anni dopo l'introduzione di Java puo' beneficiare delle lezioni imparate con Java e cercare di non ripetere gli stessi errori.
Ha reinventato Java che ora si chiama C# (C sharp), la macchina virtuale Java (CLR- Common Language Runtime) e il byte-code (formato MSIL). Non solo C# ma tutti i linguaggi Microsoft(Vb, C++,JScript) hanno ora un compilatore MSIL. Ogni linguaggio con compilatore MSIL puo' creare componenti che possono eseguire su CLR magari utilizzando componenti di altri linguaggi. A cosa serve tutto questo? A permettere in futuro a telefonini, palmari, computer, dispositivi intelligenti (tutti con software Microsoft) di scambiarsi dati e programmi tra di loro. Come Java anche .NET vuole realizzare un sistema operativo di rete.
Chi vincera' tra i due? Al momento attuale (2002) .NET e' ancora qualcosa su cui stanno lavorando migliaia di persone ma senza prodotti concreti. Java invece e' ormai una tecnologia matura. Purtroppo essa e' nelle mani di Sun mentre Microsoft con .NET ha avuto la furbizia di far diventare subito C# uno standard e basare tutto il resto su standard acquisiti (come XML). Il risultato e' che anche il mondo Linux si sta muovendo a realizzare un .NET sulle proprie macchine... Vedremo come andra' a finire...

Quando si parla di Java viene subito fuori il discorso su Javascript.Ebbene Javascript (a parte il nome) non ha niente a che fare con Java e con l'argomento di questo seminario.Se proprio volete saperne di piu' su Javascript leggete qui.

VRML non e' invece un'alternativa a Java perche' permette solo di costruire pagine 3D e mondi virtuali.Ne parliamo perche' nel futuro di VRML Java e' importante. Infatti nella versione 2 di VRML e' possibile associare a "hot spots" VRML (i punti sensibili ) di un mondo 3D degli applet Java. Questo permettera' la creazione di, per esempio, giochi 3D di rete.

Conclusione


Anche se Java non si imporra', due nuovi concetti rivoluzionari sono stati da esso introdotti,cioe':
  1. Un'unica piattaforma universale su cui sviluppare i programmi una volta per tutte.
  2. Internet come immenso serbatoio di programmi a cui attingere quando servono, senza bisogno di avere sul proprio Pc "mostri" come Windows95 o Office97.
Questi 2 concetti sono ormai stati acquisiti e saranno in un modo o nell'altro realizzati.La professione di programmatore e' stata per sempre cambiata da Internet.Ma anche altre professioni che usano i programmi di computer come quella degli
insegnanti di fisica hanno subito intravisto le possibilita' offerte da Java e stanno sviluppando un materiale immenso in rete.

Ultimo aggiornamento: