Newsgroup: it.comp.java
Titolo: Write Once and Run Away?? (Portabilita'??)

Ciao a tutti
Altra piccola questione...
In questo momento sto lavorando ad un progetto di un
architettura client - server su Web tramite applet Java
e mi farebbe molto piacere che le mie Applet funzionino 
nel modo piu' "coerente" possibile su ogni macchina...
Sto testando su:
WIN NT
 - MS VM
 - JDK VM
WIN 95
 - JDK VM
AIX
 - IBM VM
HP-UX
 - HP VM
LINUX
 - Linux VM
e dopo questi test mi chiedo se il famoso slogan
"Write Once, Run Anywhere" non sia da rivedere...
Le differenze (non grafiche.. quelle le capisco e le
sopporto fino all'uscta di una version stabile delle
JFC) di comportamento del programma mi stupiscono ogni 
volta...
Eventi che vengono intercettati da una VM si e non dall'altra,
programmi che partono una volta ogni quattro, comportamenti
pseudo-casuali da parte delle scroll-bar... insomma, forse
pretendo troppo, ma le VM non dovevano essere scritte tutte
seguendo le specifiche della Sun per essere considerate
piattaforme valide??
Voi che ne pensate?
Saluti  
-- 
---------------------------------------------------------
 Fabio Insaccanebbia      
 E-mail: 
in...@juliet.sci.univr.it
 
in...@easynet.it
---------------------------------------------------------

 piattaforme valide??
L'anno scorso fui responsabile del team che realizzo' alcune
applicazioni Java presentate poi a SMAU96, per una societa'
di software.
Siccome la portabilita' era ed e' effettivamente la caratteristica
piu' notevole di Java, volevamo dimostrarla facendo girare
le applicazioni su diverse piattaforme contemporaneamente (lo so,
lo so, e' marketing.. ma che ci si puo' fare? ;-) ); nella
realizzazione,
incontrammo alcuni problemi simili ai tuoi.
Posso fare solo qualche considerazione:
1. Java, *mediamente* richiede che si pensi in modo "pulito".
Cosa strana per un oggetto di moda, e' dotato di una notevole
qualita', ma richiede che chi ne fa uso sia altrettanto.. notevole,
soprattutto in termini di progettazione. Quindi sfruttane a fondo
le caratteristiche (distribuzione del codice su molte classi,
GUI integrata, etc), ma evita come la peste "trucchi" e porcherie
varie nel codice spicciolo - di norma vengono rifiutate da altre
JVM. Usa, applica e fai applicare i modelli teorici e tecnici corretti -
mai come in Java gli "accrocchi" si traducono velocemente in
disastri.
2. In media, Java e' *estrememamente* piu' portabile di qualunque
cosa abbia mai visto (e, non so perche', nel mio lavoro mi sono
capitati una quantita' di porting.. :) ). Cio' non toglie che
considerare
una buona mezza giornata per l'adattamento di  ogni classe ad un
comune denominatore di funzionamento non sia una stima
irragionevole ;^). Rispetto alle giornate-uomo necessarie in altri
contesti, e' comunque un tempo trascurabile.
3. Attenzione che Sun supporta solo le versioni Win32, Solaris e, se
non erro, MacOS - quindi le altre possono essere meno aggiornate
o errate.
4. Porta pazienza. L'ambiente e' nuovo, recentemente arricchito di
una serie di funzionalita' che gli forniscono una potenza decisamente
vasta e quindi necessita ancora di un po' di tuning. Del resto, i buoni
affari si fanno con le novita', no?  In effetti, gli unici problemi
"veri"
(non dovuti a impostazioni approssimate o ad analisi malfatte) che
riscontrammo l'anno passato (con JDK1.0.2 e versioni di JVM nei
vari browser non updated o semplicemente bacate) erano alla fin
fine le &  nei menu (che sotto solaris venivano visualizzate.. come &)
e la differente gestione del multithreading nella versione WIN32 e
Solaris.
Detto questo, il mio parere e' che, con un po' di buon senso, di
competenze, di incavolamenti e fatica costruire applicazioni
complesse (non applet da effetto pagina www) e portabili e' molto
piu' facile con Java che con qualunque altra cosa -  e il risultato di
solito merita lo sforzo.
--
dr. Cristiano Sadun - Software Engineering and Consulting
***********Remove NOSPAM from address to reply***********
*********************************************************
"God is Real - unless declared Integer"