Perché Java ha un "cattivo rap" [chiuso]

6

Ho sentito molte persone parlare male di Java, specialmente quelle provenienti da C / C ++. C'è una ragione storica per cui? Perché le macchine erano troppo lente per eseguire la JVM senza ritardi?

    
posta gnat 27.09.2012 - 07:53
fonte

4 risposte

21

Per ogni lingua troverai persone che ne parlano male. È proprio così.

Java non fa eccezione.

    
risposta data 27.09.2012 - 09:11
fonte
16

I programmatori del clan dei "veri programmatori in codice binario" probabilmente odieranno Java fino alla fine dei tempi. Ma per il resto di noi, Java aiuta a portare a termine il lavoro velocemente e con una curva di apprendimento (leggermente più breve).

Le ore C / C ++ davano ai bravi programmatori il divertimento di poter giocare con la memoria nel modo desiderato. Java ha reso automatica la raccolta dei rifiuti, quindi è stato perso il divertimento. Anche quelle lingue compilate per codice macchina, e quindi è statisticamente più veloce a causa dell'assenza del processo JVM. Ma i tempi sono cambiati e con l'hardware di oggi questo è quasi impercettibile (a meno che tu non stia cercando di codificare video o qualcosa del genere). Inoltre, devo dire, c'è una certa soddisfazione aggiuntiva quando si tira fuori qualcosa (non banale) in C / C ++ dove-in si doveva fare tutta la gestione della memoria ecc. Nel modo più duro.

    
risposta data 27.09.2012 - 08:46
fonte
8

In generale, Java ha un brutto colpo perché è essenzialmente relativamente debole in entrambi i suoi punti di forza:

  • "Java è scritto una sola volta, distribuito ovunque": i programmi più grandi generalmente non funzionano in modo impeccabile su più piattaforme senza ulteriore lavoro. EDIT - Dopo alcune ricerche sembra che questo sia effettivamente migliorato un bel po 'dall'ultima volta che ho usato seriamente Java (buono su Java!) - gli articoli che posso trovare sono degli anni '90 ( link ). Un problema non specifico di Java che potrebbe essere erroneamente definito un difetto di Java è che diverse piattaforme spesso hanno solo paradigmi dell'interfaccia utente completamente diversi (es. Mouse vs. touch, tastiera o nessuna tastiera) ed è davvero difficile progettare un'applicazione che funzioni effettivamente bene su tutte le piattaforme possibili senza colpa della lingua.
  • "Java nasconde un sacco di cose che non devi sapere": i programmi più grandi spesso richiedono una conoscenza approfondita di come il linguaggio e la VM lavorino per modificare le cose per farle funzionare abbastanza velocemente per un uso reale (c'è un'intera pagina dedicata ad esso qui: link ). In realtà, questo può anche essere negativamente dal punto di vista teorico - un programma Java compilato JIT e / o una VM aggiornata possono avere ottimizzazioni specifiche dell'hardware che non erano disponibili al momento originale della scrittura del programma (si veda ad esempio link ).

Non vi è alcun difetto fatale con Java tranne che non è molto meglio in qualsiasi altra lingua rispetto ad altri linguaggi.

Tuttavia, ha una collezione impressionante di librerie disponibili su tutte le piattaforme, ed è ingenuo considerare la lingua solo senza le librerie. Come strumento per "portare a termine il lavoro" è MOLTO scopo generale "pronto all'uso" per coprire molte basi più che sufficienti per l'utilizzo nel mondo reale. È un coltellino svizzero avanzato, se vuoi (uno con un sacco di funzioni di sicurezza per evitare di ferirti).

Gli sviluppatori C ++ in particolare potrebbero non piacere a Java per altri motivi:

  • Java impone l'orientamento agli oggetti e "tutto è un oggetto" - gli sviluppatori C ++ multi-paradigma sono spesso allergici a essere limitati in questo modo (divulgazione completa: sono uno di quegli sviluppatori di C ++:)).
  • Come accennato in precedenza, uno sviluppatore Java esperto ha bisogno di conoscere anche gli interni per ottenere il massimo dalle cose (come sempre, in qualsiasi lingua), e uno sviluppatore C ++ è usato per effettivamente avere accesso a quegli interni, così sentono (a torto oa ragione) che potrebbero anche lavorare vicino al metallo se devono saperlo comunque.
risposta data 27.09.2012 - 09:07
fonte
2

Dal punto di vista dell'utente finale, molti programmi Java precedenti (in realtà la JVM) utilizzavano quantità enormi di memoria per i programmi più semplici. Spesso ben oltre i 100 MB per un semplice client FTP o simili. Soprattutto nei momenti in cui la maggior parte dei sistemi aveva da 256 a 512 MB di RAM, era semplicemente inaccettabile. E poiché i programmi Java erano abbastanza comuni nell'area desktop, molte persone arrivavano alla stessa conclusione sull'uso della memoria.

Inoltre, Java Runtime Environment ha una lunga storia di gravi problemi di sicurezza (anche adesso), quindi la reputazione è diminuita drasticamente con l'uso crescente di Java in pubblico.

Avvisi di sicurezza Java:

link (2009 - 2012) link (2006 - 2009) link (pre-2006)

Security Alerts

Oracle will issue Security Alerts for vulnerability fixes deemed too critical to wait for distribution in the next Critical Patch Update.

Per me, la dimensione di queste liste è semplicemente orrenda.

    
risposta data 27.09.2012 - 09:14
fonte

Leggi altre domande sui tag