Visualizzazione stampabile
-
Vorrei farti notare un paio di cose, dato che hai detto di aver programmato in C# e anche io, per lavoro, programmo in C#:
Primo, che il linguaggio del C# è per molti aspetti assolutamente indentico al Java, di cui è infatti figlio diretto: C# discende da J++ che è la "versione Microsoft" del java. Dovrai solo sostituire alcune keywords (invece del simbolo : per derivare dovrai usare la parola "extends", tipo "public class Nomeclasse extends Baseclass", e invece di Using c'è Imports) e non avrai le classi del .NET a disposizione, ma la sintassi è la stessa.
Secondo, che il C# è pesante tanto quanto il Java, perché anche il C# gira su Virtual Machine: tutti i linguaggi .NET si compilano sempre in Intermediate Language, che è fatto in modo molto simile al Bytecode di Java, e l'IL appunto viene interpretato dalla MVM (Microsoft Virtual Machine) su Windows o da Mono su altri sistemi, esattamente come il Java è interpretato dalla JVM (Java Virtual Machine).
Il Java era estremamente pesante fino a qualche anno fa, ma da un paio d'anni a questa parte la JVM ha ottenuto delle ottimizzazioni veramente efficaci, anche copiando alcune soluzioni adottate da Microsoft con il C# e il .NET, quindi le sue prestazioni sono molto migliori di quello che comunemente si crede.
Certo non raggiungerà mai i livelli del C++, perché comunque c'è una Virtual Machine in mezzo.
-
Quote:
Originariamente inviato da
LoZeno
Vorrei farti notare un paio di cose, dato che hai detto di aver programmato in C# e anche io, per lavoro, programmo in C#:
Primo, che il linguaggio del C# è per molti aspetti assolutamente indentico al Java, di cui è infatti figlio diretto: C# discende da J++ che è la "versione Microsoft" del java. Dovrai solo sostituire alcune keywords (invece del simbolo : per derivare dovrai usare la parola "extends", tipo "public class Nomeclasse extends Baseclass", e invece di Using c'è Imports) e non avrai le classi del .NET a disposizione, ma la sintassi è la stessa.
Secondo, che il C# è pesante tanto quanto il Java, perché anche il C# gira su Virtual Machine: tutti i linguaggi .NET si compilano sempre in Intermediate Language, che è fatto in modo molto simile al Bytecode di Java, e l'IL appunto viene interpretato dalla MVM (Microsoft Virtual Machine) su Windows o da Mono su altri sistemi, esattamente come il Java è interpretato dalla JVM (Java Virtual Machine).
Il Java era estremamente pesante fino a qualche anno fa, ma da un paio d'anni a questa parte la JVM ha ottenuto delle ottimizzazioni veramente efficaci, anche copiando alcune soluzioni adottate da Microsoft con il C# e il .NET, quindi le sue prestazioni sono molto migliori di quello che comunemente si crede.
Certo non raggiungerà mai i livelli del C++, perché comunque c'è una Virtual Machine in mezzo.
Come saprai (mi riferisco a LoZeno) ci sono delle sostanziali differenze tra Java e C#.
In primis il fatto che un oggetto passato per riferimento, in Java non può essere reistanziato (o meglio ha effetto solo sul metodo che riceve l'oggetto mentre per il chiamante l'istanza rimane la stessa), mentre in C# perpretra la nuova istanza anche al chiamante.
Successivamente c'è il confronto di stringhe che è totalmente diversa perchè il simbolo "=" confronta le istanze e non il valore contenuto in una property standard. Quindi in java scrivere stringa1 = stringa2 darà SEMPRE false, mentre in C# dipende dal contenuto.
E questo sono le due macro differenze che mi sono venute in mente al volo.
Ce ne sono anche altre.
La prima è mooooolto subdola ed è il motivo per cui è moooolto complesso fare un porting Java di un'applicazione scritta in C#.
Inoltre la CLR (sia di .NET che di Mono) e la JVM hanno un JIT-compiler che lavora in modo diverso.
Aggiungo anche che qui si parla di DVM e non di JVM che è ancora diversa.
Livelli di Benchmark sono stati esposti e dimostrano la supremazia della CLR Mono compilata su Android rispetto alla DVM.
Si spera che Dalvik Turbo migliori la gestione e permetta livelli di performance degni di nota ;).
Non sto denigrando la Dalvik, ma è un mero confronto.
E le perfomance di C# e Java dipendono dall'implementazione della CLR/JVM sull'architettura in oggetto di analisi. Su Windows e Linux, a parità di hardware (test sui due OS in dual boot), la JVM ha performance differenti ;).
Su windows è un relitto e ovviamente microsoft ha sviluppato, con .NET, una virtual machine (la CLR appunto) moooooooolto più performante della JVM sulla stessa architettura (windows appunto).
-
Ringrazio per le precisazioni. Allora mi metto con il java. Adesso ho trovato alcuni manuali generici per il java ed è un buon punto di inizio roftl
E poi ho già in mente come sarà il mio primo gioco. Una roba semplice ma molto metallara :D