SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
LINGUAGGI DI PROGRAMMAZIONE


Un linguaggio di programmazione è un linguaggio formale, dotato di un lessico, di una sintassi e di
una semantica ben definiti, utilizzabile per il controllo del comportamento di una macchina formale o di una
implementazione di essa (tipicamente, un computer) ovvero per la programmazione di questa attraverso la
scrittura di un programma sotto forma di codice.

Si distinguono linguaggi di basso livello (orientati al linguaggio macchina, assembler) e di alto livello
(orientati all’uomo).



Quindi si possono ottenere dei programmi in modo:




            •    DIRETTO                                                   il programma viene scritto in binario




            •    ASSEMBLATO               (assembly + assemblatore + linker)




ASSEMBLATORE: è un programma che riceve un intero programma sorgente (file in ascii) in input e
restituisce in output il programma oggetto (in binario).
LINKER (o collegatore) :

- risolve i riferimenti esterni (es: le Librerie)
- predispone i segmenti permettendo all’utente di ottenere un programma rilocabile
- crea il file eseguibile .exe
•   COMPILATO               (linguaggio di alto livello – compilato – assemblatore – collegato)



Un esempio di linguaggio compilato è il Pascal, il programma viene scritto utilizzando quel
linguaggio e successivamente compilato cioè tradotto in un file.asm (compatibile con il processore
utilizzato ) che poi per diventare eseguibile seguirà gli stessi passaggi descritti nella modalità
assemblata.
Compilazione e assemblaggio attualmente avvengono spesso in un passaggio unico per evitare
tappe inutili.



    •   INTERPRETATO

                                                 il programma è interpretato linea per linea,

                                                 quindi non esistono il file.asm e il file.obj e

                                                 i cicli non possono essere implementati visto la
                                                 particolare modalità di traduzione.


                                                 Un esempio di linguaggio interpretato è il BASIC
                                                 dove l’unico controllo esistente è il “go to”.
                                                 Esso è stato utilizzato per molti anni nonostante lo
                                                 svantaggio dei cicli perché l’interprete richiedeva
                                                 16K di ram e con i pc IBM dotati di 64K di ram era la
                                                 soluzione più comoda (contro circa 600K utilizzati
                                                 dai compilatori Pascal).



Il maggior vantaggio della interpretazione è senz’altro l’essere svincolati da una piattaforma
(combinazione di architettura hardware e sistema operativo) particolare, al prezzo di una minore
efficienza rispetto alla compilazione che è sicuramente più veloce, ma risulta scomoda per l’assenza
di un’intercompatibilità.

    •   PIATTAFORMA e LINGUAGGIO JAVA

Il programma sorgente scritto in java viene compilato in un linguaggio intermedio ibrido chiamato
byte code e poi interpretato dalla Java Virtual Machine, ossia un’interprete di basso livello che emula
una CPU.
In questo modo il programma diventa eseguibile da qualsiasi computer avente la propria JVM
installata.

    •   PIATTAFORMA .NET

Analogamente alla piattaforma java il programma sorgente viene compilato in un linguaggio
intermedio chiamato Portable Executable FIle e interpretato dalla Common Language Runtime che
concettualmente è molto simile a una virtual machine.
Questo componente deve essere eseguito prima di poter lanciare i programmi .Net, una volta in
memoria si preoccupa di richiamare i moduli di cui si ha bisogno e li compila con il JIT.
PIATTAFORMA JAVA E .NET




Una soluzione intermedia fra compilazione e interpretazione è quella adottata dai linguaggi Java e Python,
con il byte code e in Visual Basic e.NET di Microsoft con il P-code.
In tutti e due questi casi il codice sorgente dei programmi non viene compilato in linguaggio macchina, ma in
un codice intermedio "ibrido" destinato a venire interpretato al momento dell'esecuzione del programma: il
motivo di questo doppio passaggio è di avere la portabilità dei linguaggi interpretati ma anche, grazie alla
pre-compilazione, un interprete più semplice e quindi più veloce.
Tuttavia il codice intermedio è più facile sia da interpretare che da compilare: per questo motivo sia per Java
che per i linguaggi .NET sono stati sviluppati i compilatori JIT (Just In Time), che al momento del lancio di un
programma Java, VB o .NET compilano “al volo” (cioè durante l’esecuzione del programma stesso) il codice
intermedio e mandano in esecuzione un normale codice macchina nativo, eliminando completamente la
necessità dell'interprete e rendendo i programmi scritti in questi linguaggi veloci quasi quanto i normali
programmi compilati.




IN BREVE..


Il Programma sorgente viene compilato in un linguaggio intermedio ibrido (es: byte code) una volta per tutte



Il linguaggio intermedio viene interpretato da una Virtual Machine (VM) ossia un interprete di basso livello
che emula una CPU




La portabilità su una CPU diversa è garantita dall’esistenza della VM per quella specifica CPU
Architettura Java


“Write Once, Run Anywhere” è il motto che la Sun utilizza per identificare Java.

Già da questa si intuisce l’obiettivo di questo linguaggio: rendere il codice scritto indipendente dalla
piattaforma. In Java è possibile scrivere un programma in ambiente Linux ed eseguirlo in ambiente
Windows, senza apportare alcuna modifica al codice sorgente.

Per ottenere questa indipendenza viene utilizzata la seguente architettura:




Quindi l’utente scrive il proprio codice in Java e il file prodotto viene compilato, in questa maniera viene
creato un codice intermedio indipendente dalla macchina denominato byte code.

La “virtual machine”, il componente fondamentale della struttura che è differente per ogni sistema
operativo, si occupa di rendere effettivamente portabile il codice. Quando un programma viene eseguito,
prima viene caricata la “virtual machine” la quale chiama ed esegue il byte code di cui si ha bisogno ed
utilizzando una compilazione Just In Time (JIT) si preoccupa di tradurre in linguaggio macchina le istruzioni
del programma.

 Per eseguire il medesimo programma su di un sistema operativo diverso basta assicurarsi che sulla
macchina di destinazione sia presente una “virtual machine” appropriata, copiare sulla macchina il byte
code del programma ed eseguirlo. In questa semplice maniere viene mantenuta la portabilità del codice.
Architettura .Net


Il prodotto Microsoft parte da un presupposto diverso, invece di puntare sulla portabilità del codice (anche
se non è esclusa questa possibilità) punta sulla possibilità di lasciare la libertà al programmatore di usare il
linguaggio di programmazione da lui preferito. Questa scelta secondo Microsoft permette di creare
programmi molto velocemente perché per utilizzare questa piattaforma non è necessario imparare alcun
nuovo linguaggio. Altri, invece, vedono questa libertà come una nota negativa che a lungo porta a scrivere
codice più confuso, più difficile da leggere e da mantenere.

Il sistema è il seguente:




Si scrive il proprio codice nel linguaggio preferito, il file così generato deve essere compilato con un
compilatore per il linguaggio prescelto che sia compatibile con le specifiche .Net. Questa compilazione
genera un codice intermedio molto simile al byte code di Java che in questo caso viene chiamato “portable
executable file”, la creazione di questo codice intermedio permette quindi di nascondere il tipo di
linguaggio utilizzato. Nel caso della programmazione ad oggetti si può anche passare come argomento di un
metodo oggetti scritti in altri linguaggi. Questa interoperabilità tra linguaggi è possibile proprio perché tutti
i compilatori generano codice coerente tra loro. Quando viene richiamato dal nostro programma un
metodo esterno non si ha la necessità di sapere in che linguaggio è stato scritto poiché sappiamo che
sicuramente è stato compilato seguendo delle regole comuni, di conseguenza tutto il codice .Net è
utilizzabile da tutti i linguaggi .Net.

Una volta compilato il proprio programma, per poterlo eseguire, bisogna utilizzare il “common language
runtime” che concettualmente è molto simile alla “virtual machine”.
Questo componente deve essere eseguito prima di poter lanciare i programmi .Net, una volta in memoria si
preoccupa di richiamare i moduli di cui si ha bisogno e li compila con il JIT.
Confronto




Dal punto di vista architetturale i due framework sono molto simili, Java ha enfatizzato l’indipendenza dalla
macchina mentre .Net ha enfatizzato l’indipendenza dal linguaggio.

Con piccole aggiunte queste due caratteristiche sono ottenibili da entrambi i concorrenti; infatti, nel caso
di Java esistono dei progetti funzionanti che permettono l’indipendenza dal linguaggio e dal punto di vista
di .Net è possibile ottenere l’indipendenza dalla piattaforma.
Riferimenti:
          •    Spiegazioni in classe

          •    http://it.wikipedia.org/wiki/Piattaforma_Java

          •    http://it.wikipedia.org/wiki/Microsoft_.NET

          •    https://docs.google.com/viewer?
               a=v&q=cache:mO_2CMAmlNEJ:microservo.altervista.org/Collaborazioni/Confronto
               %2520java
               %2520net.doc+principio+di+funzionamento+.net+java&hl=it&gl=it&pid=bl&srcid=ADGEESh
               tRgLhhRk0SllNRKLCPpPbvaqAHehK9SsvEXeNGE7x0tOmGhNDkwvrzTIuqhcuwbrmu3KJXt2P
               Qqv1qLzBb7STLyF0lhFrbprkm7ryde7nC1Z-
               r5BcRbDdEvoLrEfcOXmIGroU&sig=AHIEtbSJPxSodPkx0Sc1wmJ8Mwv9EOugcw



      Martina De Stefani III E

Contenu connexe

Similaire à Linguaggi di programmazione

Linguaggio Java
Linguaggio JavaLinguaggio Java
Linguaggio Java
GSamLo
 
Capitolo 7 elementi di programmazione c-c++
Capitolo 7   elementi di programmazione  c-c++Capitolo 7   elementi di programmazione  c-c++
Capitolo 7 elementi di programmazione c-c++
Giovanni Della Lunga
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
Fabio Cozzolino
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
jampslide
 

Similaire à Linguaggi di programmazione (20)

Conferenza Pymaemo
Conferenza PymaemoConferenza Pymaemo
Conferenza Pymaemo
 
Evoluzione degli strumenti di sviluppo Microsoft
Evoluzione degli strumenti di sviluppo MicrosoftEvoluzione degli strumenti di sviluppo Microsoft
Evoluzione degli strumenti di sviluppo Microsoft
 
GNU Linux Programming introduction
GNU Linux Programming introductionGNU Linux Programming introduction
GNU Linux Programming introduction
 
Iced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java liberaIced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java libera
 
Linguaggio Java
Linguaggio JavaLinguaggio Java
Linguaggio Java
 
Java sul tuo Mac
Java sul tuo MacJava sul tuo Mac
Java sul tuo Mac
 
Capitolo 7 elementi di programmazione c-c++
Capitolo 7   elementi di programmazione  c-c++Capitolo 7   elementi di programmazione  c-c++
Capitolo 7 elementi di programmazione c-c++
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
T1 introduzione
T1 introduzioneT1 introduzione
T1 introduzione
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con Java
 
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
 
5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazione
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
 
Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)
 
Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19
 
Link. javascript ajax
  Link. javascript ajax  Link. javascript ajax
Link. javascript ajax
 

Dernier

Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 

Dernier (19)

Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 

Linguaggi di programmazione

  • 1. LINGUAGGI DI PROGRAMMAZIONE Un linguaggio di programmazione è un linguaggio formale, dotato di un lessico, di una sintassi e di una semantica ben definiti, utilizzabile per il controllo del comportamento di una macchina formale o di una implementazione di essa (tipicamente, un computer) ovvero per la programmazione di questa attraverso la scrittura di un programma sotto forma di codice. Si distinguono linguaggi di basso livello (orientati al linguaggio macchina, assembler) e di alto livello (orientati all’uomo). Quindi si possono ottenere dei programmi in modo: • DIRETTO il programma viene scritto in binario • ASSEMBLATO (assembly + assemblatore + linker) ASSEMBLATORE: è un programma che riceve un intero programma sorgente (file in ascii) in input e restituisce in output il programma oggetto (in binario). LINKER (o collegatore) : - risolve i riferimenti esterni (es: le Librerie) - predispone i segmenti permettendo all’utente di ottenere un programma rilocabile - crea il file eseguibile .exe
  • 2. COMPILATO (linguaggio di alto livello – compilato – assemblatore – collegato) Un esempio di linguaggio compilato è il Pascal, il programma viene scritto utilizzando quel linguaggio e successivamente compilato cioè tradotto in un file.asm (compatibile con il processore utilizzato ) che poi per diventare eseguibile seguirà gli stessi passaggi descritti nella modalità assemblata. Compilazione e assemblaggio attualmente avvengono spesso in un passaggio unico per evitare tappe inutili. • INTERPRETATO il programma è interpretato linea per linea, quindi non esistono il file.asm e il file.obj e i cicli non possono essere implementati visto la particolare modalità di traduzione. Un esempio di linguaggio interpretato è il BASIC dove l’unico controllo esistente è il “go to”. Esso è stato utilizzato per molti anni nonostante lo svantaggio dei cicli perché l’interprete richiedeva 16K di ram e con i pc IBM dotati di 64K di ram era la soluzione più comoda (contro circa 600K utilizzati dai compilatori Pascal). Il maggior vantaggio della interpretazione è senz’altro l’essere svincolati da una piattaforma (combinazione di architettura hardware e sistema operativo) particolare, al prezzo di una minore efficienza rispetto alla compilazione che è sicuramente più veloce, ma risulta scomoda per l’assenza di un’intercompatibilità. • PIATTAFORMA e LINGUAGGIO JAVA Il programma sorgente scritto in java viene compilato in un linguaggio intermedio ibrido chiamato byte code e poi interpretato dalla Java Virtual Machine, ossia un’interprete di basso livello che emula una CPU. In questo modo il programma diventa eseguibile da qualsiasi computer avente la propria JVM installata. • PIATTAFORMA .NET Analogamente alla piattaforma java il programma sorgente viene compilato in un linguaggio intermedio chiamato Portable Executable FIle e interpretato dalla Common Language Runtime che concettualmente è molto simile a una virtual machine. Questo componente deve essere eseguito prima di poter lanciare i programmi .Net, una volta in memoria si preoccupa di richiamare i moduli di cui si ha bisogno e li compila con il JIT.
  • 3. PIATTAFORMA JAVA E .NET Una soluzione intermedia fra compilazione e interpretazione è quella adottata dai linguaggi Java e Python, con il byte code e in Visual Basic e.NET di Microsoft con il P-code. In tutti e due questi casi il codice sorgente dei programmi non viene compilato in linguaggio macchina, ma in un codice intermedio "ibrido" destinato a venire interpretato al momento dell'esecuzione del programma: il motivo di questo doppio passaggio è di avere la portabilità dei linguaggi interpretati ma anche, grazie alla pre-compilazione, un interprete più semplice e quindi più veloce. Tuttavia il codice intermedio è più facile sia da interpretare che da compilare: per questo motivo sia per Java che per i linguaggi .NET sono stati sviluppati i compilatori JIT (Just In Time), che al momento del lancio di un programma Java, VB o .NET compilano “al volo” (cioè durante l’esecuzione del programma stesso) il codice intermedio e mandano in esecuzione un normale codice macchina nativo, eliminando completamente la necessità dell'interprete e rendendo i programmi scritti in questi linguaggi veloci quasi quanto i normali programmi compilati. IN BREVE.. Il Programma sorgente viene compilato in un linguaggio intermedio ibrido (es: byte code) una volta per tutte Il linguaggio intermedio viene interpretato da una Virtual Machine (VM) ossia un interprete di basso livello che emula una CPU La portabilità su una CPU diversa è garantita dall’esistenza della VM per quella specifica CPU
  • 4. Architettura Java “Write Once, Run Anywhere” è il motto che la Sun utilizza per identificare Java. Già da questa si intuisce l’obiettivo di questo linguaggio: rendere il codice scritto indipendente dalla piattaforma. In Java è possibile scrivere un programma in ambiente Linux ed eseguirlo in ambiente Windows, senza apportare alcuna modifica al codice sorgente. Per ottenere questa indipendenza viene utilizzata la seguente architettura: Quindi l’utente scrive il proprio codice in Java e il file prodotto viene compilato, in questa maniera viene creato un codice intermedio indipendente dalla macchina denominato byte code. La “virtual machine”, il componente fondamentale della struttura che è differente per ogni sistema operativo, si occupa di rendere effettivamente portabile il codice. Quando un programma viene eseguito, prima viene caricata la “virtual machine” la quale chiama ed esegue il byte code di cui si ha bisogno ed utilizzando una compilazione Just In Time (JIT) si preoccupa di tradurre in linguaggio macchina le istruzioni del programma. Per eseguire il medesimo programma su di un sistema operativo diverso basta assicurarsi che sulla macchina di destinazione sia presente una “virtual machine” appropriata, copiare sulla macchina il byte code del programma ed eseguirlo. In questa semplice maniere viene mantenuta la portabilità del codice.
  • 5. Architettura .Net Il prodotto Microsoft parte da un presupposto diverso, invece di puntare sulla portabilità del codice (anche se non è esclusa questa possibilità) punta sulla possibilità di lasciare la libertà al programmatore di usare il linguaggio di programmazione da lui preferito. Questa scelta secondo Microsoft permette di creare programmi molto velocemente perché per utilizzare questa piattaforma non è necessario imparare alcun nuovo linguaggio. Altri, invece, vedono questa libertà come una nota negativa che a lungo porta a scrivere codice più confuso, più difficile da leggere e da mantenere. Il sistema è il seguente: Si scrive il proprio codice nel linguaggio preferito, il file così generato deve essere compilato con un compilatore per il linguaggio prescelto che sia compatibile con le specifiche .Net. Questa compilazione genera un codice intermedio molto simile al byte code di Java che in questo caso viene chiamato “portable executable file”, la creazione di questo codice intermedio permette quindi di nascondere il tipo di linguaggio utilizzato. Nel caso della programmazione ad oggetti si può anche passare come argomento di un metodo oggetti scritti in altri linguaggi. Questa interoperabilità tra linguaggi è possibile proprio perché tutti i compilatori generano codice coerente tra loro. Quando viene richiamato dal nostro programma un metodo esterno non si ha la necessità di sapere in che linguaggio è stato scritto poiché sappiamo che sicuramente è stato compilato seguendo delle regole comuni, di conseguenza tutto il codice .Net è utilizzabile da tutti i linguaggi .Net. Una volta compilato il proprio programma, per poterlo eseguire, bisogna utilizzare il “common language runtime” che concettualmente è molto simile alla “virtual machine”. Questo componente deve essere eseguito prima di poter lanciare i programmi .Net, una volta in memoria si preoccupa di richiamare i moduli di cui si ha bisogno e li compila con il JIT.
  • 6. Confronto Dal punto di vista architetturale i due framework sono molto simili, Java ha enfatizzato l’indipendenza dalla macchina mentre .Net ha enfatizzato l’indipendenza dal linguaggio. Con piccole aggiunte queste due caratteristiche sono ottenibili da entrambi i concorrenti; infatti, nel caso di Java esistono dei progetti funzionanti che permettono l’indipendenza dal linguaggio e dal punto di vista di .Net è possibile ottenere l’indipendenza dalla piattaforma.
  • 7. Riferimenti: • Spiegazioni in classe • http://it.wikipedia.org/wiki/Piattaforma_Java • http://it.wikipedia.org/wiki/Microsoft_.NET • https://docs.google.com/viewer? a=v&q=cache:mO_2CMAmlNEJ:microservo.altervista.org/Collaborazioni/Confronto %2520java %2520net.doc+principio+di+funzionamento+.net+java&hl=it&gl=it&pid=bl&srcid=ADGEESh tRgLhhRk0SllNRKLCPpPbvaqAHehK9SsvEXeNGE7x0tOmGhNDkwvrzTIuqhcuwbrmu3KJXt2P Qqv1qLzBb7STLyF0lhFrbprkm7ryde7nC1Z- r5BcRbDdEvoLrEfcOXmIGroU&sig=AHIEtbSJPxSodPkx0Sc1wmJ8Mwv9EOugcw Martina De Stefani III E