Sto per finire di imparare il c++, fra poco passerò a java, vorrei sapere tutte le differenze che esistono tra i 2 linguaggio visto che il secondo è un'evoluzione del primo...
Ciao grazie
Sto per finire di imparare il c++, fra poco passerò a java, vorrei sapere tutte le differenze che esistono tra i 2 linguaggio visto che il secondo è un'evoluzione del primo...
Ciao grazie
Le principali differenze sono:
- ogni classe deve estendere (ereditare) un'altra classe (detta superclasse): ovviamente esiste una classe "origine" da cui tutte le altre ereditano, chiamata, con grande fantasia, "Object"
- ogni classe estende una e una sola altra classe. Niente ereditarieta' multipla, con tutti i problemi che ne conseguono... Puo' pero' "implementare" delle interfacce, che sono particolari classi astratte
- il compilatore java non produce eseguibili nativi per la piattaforma che usi (cioe' non produce un programma eseguibile per Windows, se lavori sotto Windows) ma compila in un particolare formato chiamato bytecode che viene eseguito dalla cosiddetta Java Virtual Machine. Puoi vedere la JVM come un emulatore di "processore Java", un potenziale (per quanto ne so ancora non ne esistono in realta') processore in grado di eseguire i programmi in bytecode. L'utilizzo della JVM permette di eseguire il tuo programma su qualsiasi sistema per il quale sia stata sviluppata la JVM.
- niente utilizzo di puntatori. Tu scrivi il programma, al resto pensano il compilatore e la Java Virtual Machine.
Altro ora non mi viene...
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.
Aggiungerei: ci sono alcune feature particolari del C che non sono presenti in Java.
Ad esempio non si possono specificare i parametri di default.
E per quanto ne so, non si puo' fare l'overload degli operatori, mentre e' consentito quello delle funzioni, ovviamente.
Ah!!! Le versioni precedenti di Java non avevano i template, tant'e' vero che esiste una versione non ufficiale che li supportava. Dalla versione 1.5 in poi sono stati introdotti sotto il nome di Generic: non sono cmq la stessa cosa del C++ e
soprattutto non hanno lo stesso utilizzo.
Java ha alcune caratteristiche che inizialmente sembrano limitarlo. In realta' spinge solamente a utilizzare correttamente il paradigma OOP.
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.
Prego!!!
P.S. I membri statici ovviamente ci sono sempre!!!
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.
Java non è un evoluzione di C++, ha la stessa sintassi ma non è una sua "evoluzione", si può parlare di evoluzione tra C e C++ ma non con Java.
Anche se dedek ha detto praticamente tutto il fondamentale aggiungo quello che credo manchi, come introduzione ci sono
Funzioni di C++ non supportate da Java
Funzioni uniche per Java
Funzioni condivise
Parecchie funzioni di C++ sono state appositamente tolte, senza ripetere quelle già dette ecco quelle che mancano:
- Java non ha strutture e unioni, sono ritenute ridondanti
- Java non supporta il sovreccarico degli operatori, sono solo un
zuccherino sintattico che potrebbe creare ambiguità
- Java non ha preprocessore, visto che in C++ queste direttive sono
meno importanti di C i progettisti hanno pensato che era ora di
eliminarli
- Java non esegue conversioni di tipo automaticamente, tutto deve
avvenire con cast espliciti
- Java non ha variabili o funzioni globali, tutto è in una classe
con conseguente scop limitato
- Java non ha distruttori ma finalize()
- Javanon ha typedef
- Java non ha unsigned
- Java esclude goto
- Non c'è delete, memoria totalmente automatica
- In Java TUTTI gli oggetti sono solo per riferimento, si deve sempre
usare nuw come si si creasse in C++ un puntatore ad esso
Poi ci sono funzioni che solo Java ha
- Multithreading supportato a livello di linguaggio, con C++ devi
usare le funzioni native dell'OS o qualche astrazione di terzi
- C++ non ha una funzione che corrisponda perfettamente ai package di
Java
- Breack e continue accettano etichette come destinazione
- I char Java usano Unicode a 16 bit, simile a wchar_t di C++,
facilita la portabilità fra le lingue usate nei prog
- Java ha >>>, che sarebbe uno spostamento a destra senza segno
- Java ha il javadoc, un commento per generare la documentazione
usando /** */ e vari tag
- Il tipo String in Java è un tipi incapsulato, quando in Java
fai "ciao" verrà creato un tipo String, in C++ non verrà creato un
oggetto string ma un char*, inoltre le stringhe in C++ si possono
usare solo includento i relativi headers e namespaces
Funzioni gestite in maniera diversa:
- In Java true e false non sono come in C++ il relativo numerico di 0
e != 0
- Java obbliga l'intercettazione di una eccezione, in C++ puoi se lo
vuoi.
Spero di aver detto tutto, tanto sono in vacanza appena mi viene in mente qualcosa o lo trovo da qualche parte posto.
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
Ecco, mi sembrava di aver dimenticato una cosa fondamentale: in Java ci sono solo classi. Anche se a livello operativo, poi, non cambia nulla...- Java non ha variabili o funzioni globali, tutto è in una classe
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.