Sì, ma in una certa misura - è buono come un'opportunità educativa per vedere cosa sta succedendo sotto il cofano, ma probabilmente dovrebbe essere fatto con moderazione.
Può essere una buona cosa, come guardare il bytecode può aiutare a capire come il codice sorgente Java verrà compilato in bytecode Java. Inoltre, potrebbe dare alcune idee su quale tipo di ottimizzazioni verranno eseguite dal compilatore e forse alcune limitazioni alla quantità di ottimizzazione che il compilatore può eseguire.
Ad esempio, se viene eseguita una concatenazione di stringhe, javac
sarà ottimizzare la concatenazione in utilizzando un StringBuilder
ed eseguendo append
metodi per concatenare i String
s.
Tuttavia, se la concatenazione stringa è eseguita in un ciclo, un nuovo StringBuilder
può istanziare ad ogni iterazione, con conseguente possibile deterioramento delle prestazioni rispetto ad istanziare manualmente un StringBuilder
fuori del ciclo e solo eseguendo append
s all'interno del ciclo.
Sulla questione del JIT. La compilazione just-in-time sarà specifica per l'implementazione JVM, quindi non è molto facile scoprire cosa sta effettivamente accadendo al bytecode quando viene convertito nel codice nativo, e inoltre, non possiamo dire quali parti sono JITted (almeno non senza alcuni strumenti specifici di JVM per vedere che tipo di compilation JIT viene eseguita - non conosco nessun dettaglio specifico in quest'area, quindi sto solo speculando.)
Detto questo, la JVM sta eseguendo comunque il bytecode, il modo in cui viene eseguito è più o meno opaco per lo sviluppatore e, ancora, specifico per JVM. Potrebbero esserci alcuni trucchi delle prestazioni che una JVM esegue mentre un'altra no.
Quando si tratta di osservare il bytecode generato, si tratta di imparare cosa sta effettivamente accadendo al codice sorgente quando viene compilato in bytecode. Essere in grado di vedere i tipi di ottimizzazioni eseguite dal compilatore, ma anche capire che ci sono dei limiti al modo in cui il compilatore può eseguire le ottimizzazioni.
Detto questo, non penso che sia una buona idea diventare ossessionati dalla generazione di bytecode e provare a scrivere programmi che emetteranno il bytecode più ottimizzato. La cosa più importante è scrivere codice sorgente Java che sia leggibile e manutenibile da altri.
Ma Cole Trickle è diventato un autista migliore una volta venuto a conoscenza degli interni dell'auto. – Boune