Java (lunghetto)

Massimo Masson blug@lists.linux.it
Wed, 31 Jul 2002 17:31:55 +0200


Marco Bisetto wrote:

>
> Qualcun'altro si trova in difficolta` con Java? Si tratta di un
> discorso un po' generale, tanto per capire.
>
> Java era stato proposto come panacea per tutti i mali di
> compatibilita` tra piattaforme diverse, ecc. ecc. E invece mi pare che
> sia una vera pizza farlo funzionare.

Non esagererei, ne in un verso ne nell'altro. Ha tante cose buone, ma
probabilmente non è proprio perfetto.
E' abbastanza backward compatibile con i suoi precedenti rilasci, ma tutto
sommato alcune cose obsolete o deprecate ci sono, e non potrebbe essere
altrimenti. Pensa anche solo al sistema di gestione degli eventi che dalla
1.0 alla 1.1 (mi pare...) è stato stravolto, ma decisamente migliorato. Chi
ha sviluppato usando pesantemente certe features, o riscrive parti
sostanziose o si adatta a non sfruttare caratteristiche avanzate. Chi invece
comincia dopo, sicuramente usa le opportunità migliori ma non fa più .class
che girino su vm "vecchie".
E quindi proliferano le installazioni di jvm...

[...]
>
> D'altro canto, pare che il runtime environment della sun non funzioni
> correttamente su tutti i kernel.

Vero. E' quello che dicevo con Micky alcuni post fa. Il problema si dovrebbe
poter aggirare impostando la famosa variabile d'ambiente
"LD_ASSUME_KERNEL=2.2.5", in quanto mi pare di aver capito che i kernel
successivi utilizzino metodologie di allocazione della memoria (vado a
memoria senza nemmeno un pizzico di ricerca in internet... speriamo bene...)
che alle ultime jvm non piacciono proprio.
D'altronde, fin dall'infanzia java ha alcuni punti "critici", che possono
piacere o meno, ma che sono comunque potenzialmente problematici.
Penso in primis alla garbage collection, che a me proprio non piace, e che
quando parte rallenta tutto, ma veramente tutto. D'altronde un codice java
ha mediamente un new ogni tre statements...
Poi anche la gestione dell'interfaccia grafica. AWT è una bella idea, ma è
veramente un minimo comune a tutte le piattaforme e quindi molto scarno.
Swing è decisamente bello, ma (relativamente) poco integrato con le
piattaforme native e _certamente_ molto lento (mi pare che con la 1.4.0
abbiano risolto i problemini di refresh che vedevo prima).
Da questo punto di vista peraltro ci sono anche alternative interessanti, ad
esempio SWT (Standard Widget Toolkit) fornito con Eclipse di IBM, che usa
widget nativi ed emula solo quello che non c'è, rendendo omogenee le
piattaforme. Un po' alla wxWindows, insomma...

> Non mi e` molto chiaro se sia possibile far funzionare bene java e i
> programmi che lo utilizzano. Qualcuno di voi ci e` riuscito?

Non capisco esattamente cosa intendi.
Ti posso però dire questo: fino ad inizio anno ero entusiasta di java, e
tutto sommato lo apprezzo ancora molto.
Però mi sono reso conto che non è la soluzione definitiva a tutti i
problemi. Ed il "write once, run anywere" lo prenderei comunque con le
pinze, anche se ci si va abbastanza vicino.

In particolare, però, da quando ho scoperto Python, confesso che
l'accoppiata Python (90%) e C/C++ (il restante ... 20%) mi da _molta_ più
soddisfazione, e tutto sommato è quasi altrettanto multi-piattaforma (pur
non dichiarandosi tale :) )

Molto dipende, IMHO, da quello che devi/vuoi fare...

Max