Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    [c++ e Java] Differenze

    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

  2. #2
    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.

  3. #3
    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.

  4. #4
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    GRAZIE, Semplice e chiaro...
    Ciao

  5. #5
    Prego!!!

    P.S. I membri statici ovviamente ci sono sempre!!!
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  6. #6
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    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)

  7. #7
    - Java non ha variabili o funzioni globali, tutto è in una classe
    Ecco, mi sembrava di aver dimenticato una cosa fondamentale: in Java ci sono solo classi. Anche se a livello operativo, poi, non cambia nulla...
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  8. #8
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    grazie a tutti!!!
    Ciao...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.