Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    148

    [java e c]indipendenza

    "java è un linguaggio indipendente dalla piattaforma"
    ma questo perchè in fase di compilazione produce il file.class che può essere eseguito da ogni piattaforma che ha la JVM senza aver bisogno del codice sorgente?

    invece un'applicazione scritta in linguaggio C di cosa ha bisogno per essere eseguita in un'altra piattaforma? quando compilo non viene prodotto ugualmente un codice che può essere eseguito senza aver bisogno del sorgente?


    chi mi sa spiegare bene o dirmi dove trovare le differenze di questi due linguaggi sotto questo punto di vista?

    Grazie!

  2. #2
    Il Java viene compilato in bytecode, un codice intermedio che può essere eseguito su qualunque macchina (sia essa Windows, Linux, Machintosh o quel che ti pare) grazie alla Java Virtual Machine. Il C invece viene compilato in codice nativo, eseguibile solo su una particolare piattaforma (o Windows o Linux o Machintosh o AS400 o ...).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    148
    "Il C invece viene compilato in codice nativo, eseguibile solo su una particolare piattaforma (o Windows o Linux o Machintosh o AS400 o ...)."

    cioè se io compilo un'applicazione scritta in linguaggio C sotto Windows, il codice prodotto non riesco ad eseguirlo sotto (ad esempio) Linux?

  4. #4
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    vedila così: in java è la JVM che interfaccia in tempo reale (leggi "traduce") il bytecode (class) universale per la particolare architettura su cui gira. Insomma Bytecode unico per tutte le piattaforme ma JVM specifica per ogni piattaforma.
    Nel C invece la compilazione genera direttamente codice interpretabile dalla singola macchina e quindi, una volta compilato, non può girare su altre architetture, ma non ha bisogno di un ambiente runtime come un Virtual Machine.

    codice:
                       
                          |-------JVM windows-->esecuzione w32
    sorgente java->class->------- JVM linux------>esecuzione linux
                          |-------JVM OSX------>esecuzione 0SX
                          |-------JVM symbian-->esecuzione symbian
    
                |-------compilatore+linker windows-->esecuzione w32
    sorgente C->--------compilatore+linker linux----->esecuzione linux
                |-------compilatore+linker OSX------>esecuzione 0SX
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  5. #5
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Originariamente inviato da naide
    "Il C invece viene compilato in codice nativo, eseguibile solo su una particolare piattaforma (o Windows o Linux o Machintosh o AS400 o ...)."

    cioè se io compilo un'applicazione scritta in linguaggio C sotto Windows, il codice prodotto non riesco ad eseguirlo sotto (ad esempio) Linux?
    Tutto esatto.
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  6. #6
    Esatto. La compilazione genera un codice in binario che varia a seconda del sistema operativo.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    148
    Grazie a tutti!!!!

    adesso è tutto moooolto più chiaro!

  8. #8
    Aggiungo che ovviamente da una parte (C) hai lo svantaggio di avere poca portabilità ma elevatissime prestazioni.
    Dall'altra (Java, Python, Ruby e tutti gli interpretati) basse prestazioni ma elevatissima portabilità (e, rispetto a C, anche una ben più elevata produttività).
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.