Come Java è un linguaggio indipendente dalla piattaforma
I programmi per computer sono strettamente correlati a hardware e sistema operativo specifici. Ad esempio, le applicazioni Windows non possono essere eseguite sul sistema operativo Mac. Le applicazioni Mac non possono essere eseguite sul sistema operativo Android e così via.
Alcune applicazioni sono comuni a tutti i sistemi operativi, come MS Word, quindi dovrebbe essere scritto separatamente per tutti i sistemi operativi?
Per affrontare questa diversità di piattaforme, tali applicazioni dovrebbero essere scritte in modo indipendente per tutte le piattaforme. Java fornisce un modo per scrivere applicazioni indipendenti dall'hardware e dai sistemi operativi. Pertanto, è chiamato linguaggio di programmazione indipendente dalla piattaforma.
Il significato di indipendente dalla piattaforma è che il codice compilato java (codice byte) può essere eseguito su tutti i sistemi operativi.
Un programma è scritto in un linguaggio leggibile dall'uomo. Può contenere parole, frasi, ecc. che la macchina non comprende. Affinché il codice sorgente sia compreso dalla macchina, deve essere in un linguaggio compreso dalle macchine, tipicamente un linguaggio a livello di macchina. Quindi, ecco che arriva il ruolo di un compilatore. Il compilatore converte il linguaggio di alto livello (linguaggio umano) in un formato compreso dalle macchine. Pertanto, un compilatore è un programma che traduce il codice sorgente di un altro programma da un linguaggio di programmazione in codice eseguibile.
Questo codice eseguibile può essere una sequenza di istruzioni della macchina che possono essere eseguite direttamente dalla CPU o può essere una rappresentazione intermedia interpretata da una macchina virtuale. Questa rappresentazione intermedia in Java è laCodice byte Java.
· Cos'è una piattaforma e cos'è un linguaggio indipendente dalla piattaforma?
· Compilazione di un codice
· Come viene eseguito un programma in JAVA?
· JVM (Java Virtual Machine)
· Che ruolo giocano la compilazione e l'interpretazione nell'indipendenza dalla piattaforma?
· In che modo Java garantisce l'indipendenza dalla piattaforma?
· Perché Java non è completamente indipendente dalla piattaforma?
· Conclusione
Cos'è una piattaforma e cos'è un linguaggio indipendente dalla piattaforma?
La piattaforma può essere definita come una combinazione distinta di hardware, sistema operativo e software che fornisce un ambiente per l'esecuzione dei programmi .
L'indipendenza dalla piattaforma si riferisce all'indipendenza del programma dal sistema operativo del sistema. Adotta la metodologia "Write Once Run Anywhere (WORA)".
Compilazione di un codice
Ogni volta che scriviamo codice, aderiamo alla sintassi di un linguaggio di programmazione, che è generalmente leggibile. Sono incluse alcune parole, nomi di variabili, frasi, nomi di metodi, ecc. Tutti loro sono considerati come letteratura che gli esseri umani possono leggere e comprendere.
Di conseguenza, un computer esegue un compilatore per trasformare il codice sorgente in codice leggibile dalla macchina, noto anche come linguaggio a livello di macchina. Il compilatore crea il codice a livello di macchina in un determinato formato in modo che la CPU possa facilmente comprenderlo ed eseguirlo senza errori.
A meno che entrambi i computer non eseguano lo stesso sistema operativo, non possiamo eseguire il codice che è stato sviluppato su una macchina in un'altra quando un linguaggio a livello di macchina differisce da ciascun sistema operativo. Molti sviluppatori e programmatori pensano che questo sia inaccettabile. Tuttavia, Java semplifica le cose e include una correzione per questo.
Come viene eseguito un programma in JAVA?
In Java, il compilatore converte il programma in bytecode, che non è codice eseguibile. La JVM (Java Virtual Machine) esegue quindi il codice byte in fase di esecuzione. Il codice sorgente Java viene compilato in bytecode quando utilizziamo il compilatore javac .
Il bytecode risultante non è eseguibile dalla macchina e qualsiasi altra piattaforma o sistema operativo può eseguirlo. ma richiede un interprete per essere eseguito su un computer. Quando eseguiamo il suo programma o file, otteniamo un file .class , che è un file non eseguibile. La JVM funge da interprete e, di conseguenza, esegue il Bytecode. JVM è senza dubbio indipendente dalla piattaforma. Simile a come varia a seconda dell'ambiente circostante. Ad esempio, MAC e Linux hanno una JVM diversa da Windows. Supporta la portabilità come una delle sue caratteristiche principali poiché il bytecode portatile del suo codice lo rende indipendente dalla piattaforma.
Il bytecode viene salvato sul disco con l'estensione del file .class . Quando il programma deve essere eseguito, il bytecode viene convertito, utilizzando il compilatore just-in-time ( JIT ). Il risultato è un codice macchina che viene quindi inserito nella memoria ed eseguito.
Il codice Java deve essere compilato due volte per essere eseguito:
- I programmi Java devono essere compilati in bytecode.
- Quando il bytecode viene eseguito, deve essere convertito in codice macchina.
Il compilatore crea un file OS-dependent.exe quando viene utilizzato C o C++ (questi linguaggi non sono indipendenti dalla piattaforma). Questo file.exe non verrà eseguito quando proviamo a eseguirlo su un sistema operativo diverso poiché dipende da quel sistema operativo e non è compatibile con esso.
JVM (macchina virtuale Java)
La JVM, un componente del compilatore Java, trasforma i file .java in file .class. La funzione chiave nel codice sorgente si chiama JVM quando compiliamo il codice Java.
JVM (Java Virtual Machine) funge da motore di runtime per eseguire applicazioni Java. JVM è quello che chiama effettivamente il metodo principale presente in un codice java. JVM fa parte di JRE (Java Runtime Environment).
Le applicazioni Java sono chiamate WORA (Write Once Run Anywhere). Ciò significa che un programmatore può sviluppare codice Java su un sistema e può aspettarsi che venga eseguito su qualsiasi altro sistema abilitato per Java senza alcuna modifica. Tutto questo è possibile grazie a JVM.
Quando compiliamo un file .java , i file .class (contiene byte-code) con gli stessi nomi di classe presenti nel file .java vengono generati dal compilatore Java. Questo file .class va in vari passaggi quando lo eseguiamo. Questi passaggi insieme descrivono l'intera JVM.
In Java, il punto principale qui è che la JVM dipende dal sistema operativo, quindi se stai utilizzando Mac OS X avrai una JVM diversa rispetto a se stai utilizzando Windows o qualche altro sistema operativo. Questo fatto può essere verificato provando a scaricare la JVM per la tua particolare macchina: quando provi a scaricarla, ti verrà fornito un elenco di JVM corrispondenti a diversi sistemi operativi e ovviamente sceglierai qualunque JVM sia destinata al sistema operativo che stai correndo. Quindi possiamo concludere che JVM è dipendente dalla piattaforma ed è il motivo per cui Java è in grado di diventare "Indipendente dalla piattaforma".
Punti importanti:
- Nel caso di Java, è la magia di Bytecode che lo rende indipendente dalla piattaforma .
- Ciò si aggiunge a un'importante caratteristica del linguaggio JAVA chiamata portabilità . Ogni sistema ha la propria JVM che viene installata automaticamente quando viene installato il software jdk. Per ogni sistema operativo è disponibile una JVM separata in grado di leggere il file .class o il codice byte.
- Un punto importante da notare è che mentre JAVA è un linguaggio indipendente dalla piattaforma, JVM è dipendente dalla piattaforma. JVM diverse sono progettate per sistemi operativi diversi e il codice byte è in grado di funzionare su sistemi operativi diversi.
Per ottenere l'indipendenza dalla piattaforma, combina sia la compilazione che l'interpretazione. Quando un programma viene compilato in Java, viene trasformato in bytecode, spesso noto come file .class, piuttosto che in codice macchina. Ora, questo bytecode è qualcosa che lo distingue dal codice macchina con le sue caratteristiche poiché può essere spostato/portabile su un'altra piattaforma, ma Java no. Quel bytecode può essere eseguito su una Java Virtual Machine.
In che modo Java fornisce l'indipendenza dalla piattaforma?
Nella maggior parte dei linguaggi di programmazione, un compilatore (o interprete) genera codice che può essere eseguito su una specifica macchina di destinazione . Ad esempio, se compili un programma C++ su una macchina Windows, il file eseguibile può essere copiato su qualsiasi altra macchina ma funzionerà solo su altre macchine Windows ma mai su un'altra macchina (ad esempio, un Mac o una macchina Linux). Una piattaforma è determinata dalla macchina di destinazione (insieme al suo sistema operativo). Per i linguaggi precedenti, i progettisti di linguaggi dovevano creare una versione specializzata del compilatore (o interprete) per ogni piattaforma. Se hai scritto un programma che desideri rendere disponibile su più piattaforme, tu, come programmatore, dovresti fare un bel po' di lavoro aggiuntivo. Dovresti creare più versioni del tuo codice sorgente per ogni piattaforma.
Java è riuscito a eliminare il problema della piattaforma per i programmatori di alto livello (come te) perché ha riorganizzato la sequenza compile-link-execute a un livello sottostante del compilatore. I dettagli sono complicati ma, essenzialmente, i progettisti del linguaggio Java hanno isolato quei problemi di programmazione che dipendono dalla piattaforma e hanno sviluppato mezzi di basso livello per riferirsi astrattamente a questi problemi. Di conseguenza, il compilatore Java non crea un file oggetto, ma crea invece un file bytecode che è, essenzialmente, un file oggetto per una macchina virtuale . Infatti, il compilatore Java è spesso chiamato compilatore JVM (per Java Virtual Machine).
Di conseguenza, è possibile scrivere un programma Java (su qualsiasi piattaforma) e utilizzare il compilatore JVM (chiamato javac) per generare un file bytecode (i file bytecode utilizzano l'estensione .class). Questo file bytecode può essere utilizzato su qualsiasi piattaforma (che ha installato Java). Tuttavia, il bytecode non è un file eseguibile. Per eseguire un file bytecode, devi effettivamente invocare un interprete Java (chiamato java). Ogni piattaforma ha il proprio interprete Java che risolverà automaticamente i problemi specifici della piattaforma che non possono più essere rimandati. Quando il bytecode richiede operazioni specifiche della piattaforma, l'interprete Java si collega al codice appropriato specifico della piattaforma.
Come con i linguaggi interpretati, è possibile far funzionare più velocemente i programmi Java compilando il bytecode in un eseguibile; lo svantaggio è che tali eseguibili funzioneranno solo sulla piattaforma in cui è stato creato.
Perché Java non è completamente indipendente dalla piattaforma?
Chiaramente Java non può essere eseguito su una piattaforma che non dispone di una JVM. Quindi, nel senso più letterale della parola, Java non è indipendente dalla piattaforma. Ma allo stesso tempo, la tua definizione di indipendenza dalla piattaforma non è utile. Nessun linguaggio possibile potrebbe mai essere veramente indipendente dalla piattaforma, perché alcuni aspetti della piattaforma dovrebbero essere in grado di analizzare il linguaggio. E date tutte le piattaforme possibili, alcune non saranno necessariamente in grado di analizzarlo.
Quindi, dato che molte, molte piattaforme eseguono una JVM e che il codice Java può essere eseguito su qualsiasi JVM con lo stesso significato, Java dipende dalla piattaforma.
Conclusione
Java è uno dei linguaggi di programmazione più famosi e ampiamente utilizzati. È un linguaggio di programmazione indipendente dalla piattaforma . Java non richiede la riscrittura dell'intero codice per tutte le diverse piattaforme. Supporta l'indipendenza dalla piattaforma utilizzando il bytecode Java e la Java Virtual Machine . Il compilatore Java javac converte il codice del programma in codice byte. Questo codice byte è indipendente dalla piattaforma e può essere eseguito su qualsiasi sistema operativo JVM. JVM interpreta il codice byte in codice macchina e il programma viene eseguito.
Grazie per aver letto. Buon apprendimento
Sostieni la nostra pubblicazione seguendola
Come bilanciare un lavoro a tempo pieno e studi part-time? Avvio del tuo mercato NFT con soluzioni di piattaforma NFT white-label Java opzionale e uno dei due: gestione di valori nulli e rappresentazione di due possibili valori Come ottenere il massimo dalla tua vita: una guida personale Callable vs Runnable vs Future in Java Spring 3.0 e le sue funzionalità La maggior parte Domanda di intervista basata su Java8 Stream più frequente - Parte finale Le 8 principali leggi da «Le 48 leggi del potere» di Robert Greene: Rosemary - Come piantarlo e quali vantaggi ha
![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































