Vogliamo discutere per l'ennesima volta della velocità di esecuzione di Java? Va bene.

Evidentemente non ti è chiaro quello che ho scritto: Java, per come è stato progettato, NON intende competere in velocità con C,C++ o qualunque altro linguaggio nativo. È chiaro che l'esecuzione di un programma compilato in linguaggio macchina sarà sempre più veloce dell'interpretazione di un bytecode (sebbene con i JIT la situazione sia migliorata).

Tuttavia, sempre rigorosamente IMHO, oltre alla velocità esistono altri parametri che caratterizzano un linguaggio di programmazione.

Anzitutto il fatto che Java è stato sviluppato da un'entità centrale (Sun) garantisce la standardizzazione addirittura fino al punto che sono definite alcune regole per scrivere un codice più leggibile: se scarichi l'ambiente di sviluppo dal sito della Sun hai già tutto il necessario senza dover rincorrere in Internet libreria grafiche o altro.

Proprio il bytecode che secondo te tanto rallenta Java gli garantisce il "write once, run anywhere", ovvero la possibilità di eseguire il bytecode su qualunque computer con una macchina virtuale e quindi di essere perfettamente multipiattaforma. Questa caratteristicha può essere di particolare importanza come di nessuna: dipende dal tipo di applicazione che si sviluppa. Personalmente all'università mi trovo a lavorare con sistemi operativi molto diversi tra loro ed effettuare il porting ogni volta sarebbe davvero un lavoro lungo e periglioso. :metallica

Java è all'avanguardia per quanto riguarda le tecniche di programmazione: a partire dal paradigma totalmente orientato agli oggetti. La scrittura e il mantenimento di programmi scritti in Java sono operazioni nettamente più facili rispetto al C e anche al C++. Soprattutto la gestione di progetti complessi è facilitata dalla divisione in package e, ovviamente, dalla programmazione ad oggetti.
Java elimina, rispetto al C++, aspetti difficili da gestire come: l'istruzione goto, i puntatori (pericolosissimi se usati incautamente), le direttive del prepocessore, l'ereditarietà multipla, la deallocazione della memoria dinamica, il sovraccaricamento di operatori (che talvolta rende il debugging un incubo!), etc.

Nel campo della programmazione server-side Java si sta imponendo sempre di più: Servlet, Jsp, Java-Beans (con la gestione a thread dei client) offrono prestazioni neanche confrontabili con i CGI scritti nel tanto veloce C, sono perfettamente portabili e scalabili.

Java offre il multithreading senza doversi appoggiare al sistema operativo e una libreria standard GIGANTESCA con classi che coprono moltissimi ambiti della programmazione: dal package per le reti all'internazionalizzazione; dalle interfaccie grafiche alla gestione delle collezioni. Tutto codice (e lavoro) scritto da professionisti di alto livello.

Credi che anche per la più misera applet serva un mainframe? Liberissimo di credelo ( ), ma perfavore trovami anche un solo fesso che sarebbe disposto a scaricare un .exe come alternativa... le applet non si sono rivelate utili come nei pronostici della Sun per la necessità della virtual machine sul browser, ma sono indiscussamente l'unica soluzione realmente sicura per l'esecuzione di programmi sul client!

Insomma, riassumendo, con il mio messaggio non volevo dire che la scelta di Java per un S.O. è auspicabile (sebbene... :quipy: ), ma che dipende dall'applicazione da scrivere. Evidentemente un videogioco in 3D scritto in Java non avrà le migliori prospettive, ma molti progetti (soprattutto se orientati al networking) probabilmente avranno vita più facile.

Personalmente non voglio fermarmi a Java e non credo che sia la soluzione a tutto, ma perfavore smettiamo di denigrare Java solo perchè essendo semi-compilato non raggiunge la velocità del codice compilato.

Ma poi se servono tutte queste prestazioni e la velocità è l'unico parametro perchè non ci mettiamo tutti a programmare in assembly? Ti assicuro che è molto più performante di C e di C++ messi insieme :mavieni: ...