<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Enrico Bianchi:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Il punto e` questo: cosa e` lento? Il tempo di esecuzione? La velocita` di programmazione? Altro? Inoltre, tutto questo su che macchina si e` provato? Per riprendere quello che hai detto piu` sotto, e` dire che Java e` lento senza portare motivazioni pratiche e non sensazioni che lo fa sembrare un discorso da volpe e uva (e tutto questo senza toccare il concetto di farragionoso, che anche quello meriterebbe una spiegazione che vada al di la delle sensazioni)</blockquote></div><br>
</div><div class="gmail_extra">Sia Java che Python sono linguaggi pre compilati con bytecode.<br></div><div class="gmail_extra">Entrambi hanno una virtual machine. L'interprete python è un VM come lo è il comando "java". L'unica differenza è che python compila i file e java no, ha bisogno di di un comando esplicito javac.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Detta sta ovvietà...</div><div class="gmail_extra"><br></div><div class="gmail_extra">La velocità/qualità di un programmatore non dipende dal linguaggio che usa. Vorrei sfatare un mito, ci sono programmatori java molto produttivi.</div><div class="gmail_extra"><br></div><div class="gmail_extra">La mia opinione sulla curva di apprendimento di python rispetto a java è che python è più semplice, il che lo rendo più veloce da imparare. Ma è una opinione e tale rimarrà. Anche perché ho imparato prima java di python e il libro: "Java Complete Guide" lo lessi in 3 giorni.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Il runtime, java carica le classi allo startup, tutte, e le mette in memoria nel perm gen heap. Il che rende "oggettivamente" più lento l'avvio di un programma java. Più librerie include, più memoria occupa, più è lento a caricare. Ma in effetti è parecchi rapido anche a caricare le classi.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Se con python hai dei processi da 50 MB, con java un processo ne ha minimo minimo 256M, e con javaEE 2 GB.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Lo sviluppo di applicativi java usano framework che caricano le configurazioni da XML e fanno parecchi uso di Dependency Injection, ossia tirano su un container che guarda configurazioni e annotazioni sul sorgente (il bytecode) e esegue delle inizializazioni degli oggetti.</div><div class="gmail_extra">Ossia se usi spring la tua applicazione ci metterà parecchi secondi per partire rispetto ad una che non ha un container.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Python invece carica le classi solo quando viene importato un modulo.</div><div class="gmail_extra">Se il modulo è presente nel python path ma non viene usato, non ce ne sarà traccia nella memoria.</div><div class="gmail_extra">E' sicuramente più rapido a partire, è sicuramente meno costoo in termini di memoria. Contro però ha che servono il 100% della copertura del codice per sapere quanto il processo occuperà di memoria per le classi. Con java è più facile fare i dimensionamenti.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Detto questo che cavolo fa l'applicativo?</div><div class="gmail_extra">E' un sito web?</div><div class="gmail_extra">E' un portale?</div><div class="gmail_extra">E' un applicativo web?</div><div class="gmail_extra">E' un server di stampa?</div><div class="gmail_extra">Un BPM?</div><div class="gmail_extra">Uno storage?</div><div class="gmail_extra">Un database?</div><div class="gmail_extra"><br></div><div class="gmail_extra">Che architettura è stata usata?</div><div class="gmail_extra">multithread?</div><div class="gmail_extra">asyncrono?</div><div class="gmail_extra">multiprocesso?</div><div class="gmail_extra"><br></div><div class="gmail_extra">Non sempre java vince "in velocità" su python,</div><div class="gmail_extra">non sempre java perde...</div><div class="gmail_extra"><br></div><div class="gmail_extra">Pensate anche alla scalabilità, magari un applicativo è velocissimo ma non scala... il che lo rende peggio che mai, arrivano più utenti, devi aumentare il carico e fallisci... e in quella fase chiudi l'azienda...</div><div class="gmail_extra"><br></div></div>