[Linux-Biella] Java e flame [Era: certificazione ISO 9001 Agenzia delle Entrate]
Emanuele Aina
em a nerd.ocracy.org
Mar 25 Set 2007 16:39:36 CEST
Paul TT evidenziò:
>> Ne avevo già parlato un mesetto fa coi Daniele (Mastro e Brevi) parlando
>> di C#, citando anche questi due articoli:
>> http://www.25hoursaday.com/CsharpVsJava.html e
>> http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java
>>
> il quale se lo leggi tutto, non da un vero giudizio pro per uno o
> l'altro, ma ne evidenzia solo le differenze. poi se tu vuoi puntare il
> dito sulle differenze in negativo per kiava, livero di farlo...
Infatti questo era il mio punto: Java è rimasto fermo per troppo tempo e
i suoi difetti non sono stati corretti, cosa che ha dato un vantaggio a
.NET/C#.
Per questo, allo stato attuale, dipingere Java come il miglior ambiente
disponibile mi sembra decisamente sbagliato.
Chiunque usi Java può usare .NET/Mono/C# sentra troppi traumi. Usando
IKVM non deve neppure buttare via il codice Java.
>> ...
>> VM. .NET è decisamente più moderna con supporto diretto per linguaggi
>> dinamici e generics a livello di VM. Orribile l'interoperabilità con
>> librerie native (JNI) e altri linguaggi.
>
> niente di legato a una sola piattaforma e' piu' moderno. e .net non esiste.
Non ho capito.
>> Librerie. Gran parte delle librerie Java, sia ufficiali che di terze
>> parti, soffrono solitamente della sindrome del framework totalmente
>> interdipendente, con migliaia di interfacce e "componenti" impossibili
>> da sostituire a causa di interdipendenze. Dalla libreria di I/O (tre
>> classi per aprire un file?) a CORBA (che è orribile già di per sè).
>>
> impossibili da sostituire in che senso scusa? non capisco...
Hai tre componenti: A, B e C.
A usa B e C.
Tu provi a sostituire B con myB. Non funziona perché A fa assunzioni su
B che non sono più vere con myB. Oppure devi implementarti da zero una
cinquantina di metodi, quando vorresti invece cambiare solo il
comportamento di un paio di questi.
Boh, magari sono solo io a essere sempre molto sfortunato.
> corba non e' in kiava, o mi sono perso io un pezzo?
La parte di libreria standard per usare CORBA da Java.
>> Per quanto non abbia in particolare simpatia ne' Java ne' .NET e Mono,
>> ritengo questi ultimi tecnicamente migliori.
>
> eh, la teoria non basta. anchio li ritengo migliori tecnicamente,
> peccato che non valga la pena usarli.
Perché?
Io mi sono trovato meglio con Mono/.NET/C# che con Java.
>>> - esempi di "vecchiaia di istruzioni della VM" (?!?)
>>>
>> Vedi sopra.
>>
>> Credo che Java sia rimasto fermo per troppo tempo prestando il fianco a
>> .NET, il quale ha colto l'occasione dignitosamente.
>
> mah, obiettivamente considerando la vm del do diesis, e' sperabile che
> abbia un qualcosina in piu' visto che e' stata fatta perche' sun ha
> rotto le palle a m$ perche non distribuisse la sua (di m$) versione di
> kiava, orrenda, bucata e non funzionante.
Ad esempio i generics di .NET sono implementati nella VM, quelli di Java
sono fatti da magia del compilatore: per questo certe cose in Java non
si possono fare, in .NET sì.
Nella VM di .NET stanno aggiungendo il DLR, Dynamic Language Runtime,
per qupportare meglio i linguaggi dinamici (Python, Ruby). In Java si
sono accorti da neanche un anno che esiste Jython (e JRuby) ma non
sembra che ci credano molto.
>> Swing è poco bella esteticamente (ovviamente per me) e risulta essere
>> sempre male integrata nell'ambiente in quanto non usa le librerie
>> native. L'API è orrida in quanto ogni widget richiede un thread,
>> oggettivamente un pessima idea. Oltretutto è solitamente molto lenta, da
>> cui la diffusa percezione della lentezza di Java, nonostante la velocità
>> di HotSpot.
>>
> pero' ha il vantaggio di essere presente distribuita da sun per
> veramente moooolti sistemi operativi, per cui non devi farti le piste a
> installare e provare altre vm, visto che le prova gia' il mondo per te ;P
Ok, ma è bruuuuuuutta! (Sia esteticamente che come API)
Se devi garantire la portabilità su piattaforma strane per cui c'è il
supporto Swing o non si ha la possibilità di investire in usabilità,
allora è una buona scelta.
Se si scrive un programma in Java per farlo girare solo su Windows,
MacOSX e Linux allora secondo me non lo è.
Probabilmente sono troppo schizzinoso.
>> Proprio per questi motivi Eclipse usa una sua libreria, SWT, in grado di
>> usare le interfacce native, direi con buoni risultati.
>
> la swt non e' niente male, vero. ma se la usi devi poi
> fornirla/installarla in piu', indi secondo me conviene usare cmq swing
> per multipiattaforma. ma qui imho
Proprio questo è il punto: dovrebbero sostituire SWT a Swing, ma sono
stati troppo fermi negli ultimi tempi.
>>>> > Non parliamo poi di tutti quei programmi in C o C++ che hanno memory
>>>> > leak - se ne trovano ancora persino in software sotto osservazione
>>>> > continua a livello mondiale come le glibc o Apache... figurati negli
>>>> > altri. Problemi simili in Java non ne hai
>>>>
>>>> Nei sistemi con garbage collector ci possono comunque essere memleak,
>>>> basta dimenticare dei riferimenti in un hash (ed è una cosa abbastanza
>>>> comune).
>>>>
>>> Non capisco a cosa ti riferisca: fammi un esempio.
>>>
>>> In Java non ho certo di questi problemi. Mi posso "dimenticare" quello
>>> che voglio, il garbage collector è quello più sofisticato presente per
>>> qualsiasi linguaggio di programmazione, e deallocherà il mio hash non
>>> appena esco dallo scope in cui l'ho utilizzato.
>>>
>> A me è capitato questo:
>> - ho un hashtable con dentro tanti oggettini
>> - l'hashtable vive per tutta l'esecuzione del programma
>> - aggiungo progressivamente voci all'hashtable
>> - dimentico di togliere le voci non più usate, che però avranno sempre
>> il riferimento dell'hashtable a tenerle in memoria
>>
>> Un memory leak con GC.
>>
> io uso cmq la vm di ibm, che trovo decisamente piu' stabile da quel
> punto di vista, e che e' totalmente compatibile con la sun's
Non c'entra nulla la VM usata. L'errore è del programmatore (io), la VM
non può fare alcuna magia. Resta il fatto che sia un memory leak.
--
Buongiorno.
Complimenti per l'ottima scelta.
Maggiori informazioni sulla lista
Linux