Post

Visualizzazione dei post con l'etichetta compilazione

Modalità di Import

DOMANDA: Che differenza c'è tra l'import completo esplicitando il nome della classe e l'ometterlo utilizzando il wildcard "*" (asterisco)? import java.io.*; import java.io.BufferedReader; RISPOSTA: A discapito di quanto possa sembrare, il file .class non avrà differenze né di grandezza , né di velocità di esecuzione . Infatti l' import indica al compilatore soltanto dove andare a cercare le classi che utilizziamo. La prova scientifica di quanto affermato è possibile averla ricavando il checksum md5 di una classe scritta con gli import espliciti ed una con il  wildcard "*" . Il risultato sarà identico. Quindi l'unica differenza tra le due modalità di importare sta nella velocità di compilazione (perché ci metterà del tempo in più per trovare la classe all'interno del package indicato con l'asterisco). In ogni caso parliamo di tempi ridottissimi e quindi trascurabili per i medi progetti. Concludendo, gli unici

La "Compilazione" Java

Immagine
DOMANDA: Java è un linguaggio interpretato o compilato? RISPOSTA: In realtà Java è un linguaggio ibrido , sia compilato che interpretato . Diamo un'occhiata al processo globale: Fasi della compilazione 1.  Il primo step è il file .java che viene inviato al compilatore Java (javac) che lo trasforma in un file .class 2.  Il file .class  contiene il  Bytecode , un codice intermedio tra il compilato e il file in chiaro ed è comprensibile a tutte le Java Virtual Machine ( JVM ) installate sui diversi dispositivi (ricordiamo che la JVM è specifica per l'architettura su cui è installata). Se provate ad aprire con il Blocco Note (o un qualunque editor di testo) un file .class vi renderete conto che il file è in parte intellegibile, in parte no. 3.  La Java Virtual Machine internamente ha un Compilatore Just In Time ( JIT ) che si occupa di interpretare il Bytecode trasformandolo in codice comprensibile al calcolatore. Tale operazione non è svo