Originariamente inviato da MItaly
@MdE2005: Commenti di questo genere hanno come unico sbocco possibile un flame war, che porta alla chiusura immediata della discussione
Originariamente inviato da MdE2005
con il pesante, lento e inefficiente Java (in realtà non si tratta di un vero e proprio linguaggio di programmazione, come certamente capirai..)
Caro MItaly, ho speso pochissime parole per esprimere sinteticamente (per non stravolgere il tema principale del post, a cui ho fornito il mio modesto contributo) alcuni concetti riguardo Java, tra l’altro condivisi da numerosissimi esperti (non solo comuni practioners ma anche chief developer di aziende operanti a livello internazionale).

Tralascio l’aspetto puramente stilistico, ovviamente soggetto a personali e non dimostrabili considerazioni, mi limiterò ad illustrare e a motivare la mia *allergia* a Java e tutto ciò che la circonda: attenzione, non ho parlato di ‘idiosincrasia’ bensì di ‘allergia’ il che presuppone, per definizione, almeno un contatto tra il soggetto (me) e l’antigene (Java): nonostante mi occupi di ben altri settori IT/TLC, qualche tempo fa ho ricevuto una gentile richiesta da un caro amico, ossia quella di scrivere un software destinato all’utilizzo su dispositivo mobile, un cellulare (non cito la marca) di ultima generazione; gli unici due strumenti a disposizione erano il SymbianC++ e Java Mobile Edition e ho dovuto scegliere necessariamente il secondo per rispondere adeguatamente (ed in tempi rapidi..) alle specifiche dell’applicazione richieste. In definitiva, non considero Java un linguaggio propriamente elegante né affascinante come alcuni paradigmi più “esotici”.

Il motivo principale della diffusione di Java, sia a livello enterprise-server che mobile, è essenzialmente di tipo “commerciale”: il mercato nel mondo mainstream da sempre (o quasi) ha sempre preferito software creato rapidamente, ai costi minori, e che potesse essere “venduto” il più possibile, a scapito della correttezza progettuale del software e dei requisiti in termini di sicurezza di funzionamento: termini come crash, bug, fatal error, patch, aggiornamenti sono il pane quotidiano nel lato software mainstream mentre sono praticamente assenti (per fortuna) nei sistemi embedded critici, e ciò deriva dalla diversa impostazione progettuale, formale e logica e dalle diverse prestazioni richieste in questi mondi IT estremamente contrapposti.
Per chi non lo sapesse, il compilatore Java traduce il programma sorgente in una rappresentazione speciale, la Java bytecode, un linguaggio macchina di una macchina virtuale Java (JVM) (e quindi non di una specifica CPU): già viene meno uno tanti dei concetti principali a proposito dello sviluppo di una CPU, quello del codesign, in quanto è stato inventato prima che nascessero chip in grado di eseguirlo
La JVM è gravata da una mostruosa lentezza (non percepibile per semplici applicazioni web o interfaccia utente), nonché corredata da una Abstract Window Toolkit (AWT) quasi primordiale; in termini prestazionali (velocità d’esecuzione, produzione di codice nativo etc) è addirittura più lento del baraccone .NET e ovviamente imparagonabile al più low-level degli HLL (High-Level Language), il C.
L’aspetto che deve maggiormente preoccupare riguarda l’assenza di progettazione interna della JVM e di Java in generale, con incongruenze veramente evidenti analizzate e spiegate anche da personaggi del calibro di Stroustrup, Meyer, Agrawal, ‘luminari’ nel campo dell’IT e in specifico dei linguaggi di programmazione (Stroustrup ha creato il C++ e Meyer il linguaggio Eiffel); non è il luogo né il momento giusto per spiegare l’importanza fondamentale di un’adeguata e consona progettazione, concetto base per qualsiasi tipo di ingegneria e valido quindi anche per i settori informatico, elettronico e TLC.

I link seguenti mostrano più o meno quanto esposto in questo post, evidenziando varie problematiche legate a Java descritte da esperti nel campo dei linguaggi di programmazione in attività presso aziende internazionali o a livello accademico.


http://www.geocities.com/tablizer/javacrit.htm

Arizona - Sumatra

Java -blogspot

Why Java is slow

Quora

http://digital-library.theiet.org/ge...ifs=yes&ref=no

University of Maryland