Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    670

    [JAVA] Import essenziali!

    Ciao a tutti
    Quando si scelgono le import da inserire in un programma, bisogna mettere tutte quelle che servono elencando uno per uno gli oggetti che vengono utilizzati nel programma...tipo
    codice:
    import javax.swing.JFrame;
    import javax.swing.JButton;
    o basta mettere:

    codice:
    import javax.swing.*;
    L'applicativo non risulta più pesante? Perchè nella seconda ipotesi sono portate tutte il resto delle librerie, o java quando compila nel .class si porta solo quello che gli serve?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    il compilatore non aggiunge niente che non venga usato. Se usi molti oggetti di un package (ottimo l'esempio di swing) tanto vale scrivere import javax.swing.*;
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    670
    Originariamente inviato da Andrea1979
    il compilatore non aggiunge niente che non venga usato. Se usi molti oggetti di un package (ottimo l'esempio di swing) tanto vale scrivere import javax.swing.*;
    Perfetto!
    Grazie mille

  4. #4

    Re: [JAVA] Import essenziali!

    Originariamente inviato da ombra
    Ciao a tutti
    Quando si scelgono le import da inserire in un programma, bisogna mettere tutte quelle che servono elencando uno per uno gli oggetti che vengono utilizzati nel programma...tipo
    codice:
    import javax.swing.JFrame;
    import javax.swing.JButton;
    o basta mettere:

    codice:
    import javax.swing.*;
    L'applicativo non risulta più pesante? Perchè nella seconda ipotesi sono portate tutte il resto delle librerie, o java quando compila nel .class si porta solo quello che gli serve?

    Grazie
    Me lo sono sempre chiesto anche io, ma sono propenso a pensare che l'applicativo non sia più pesante perchè i casi sono tre:
    -o gli import sono relativi a classi della jdk
    -o sono relativio a classi di librerie esterne incluse nel classpath
    -o sono classi del tuo prog in altri package.
    -Nel primo caso le classi della jdk devono comunque esserci tutte nella macchina in cui il programma deve girare e gli import che io sappia realizzano sempre un linking dinamico di quel codice con il tuo
    -Nel secondo se di una libreria hai bisogno anche di una sola classe allora devi includere comunque tutta la libreria nel classpath poco importa in che modo hai specificato gli import
    -nel terzo caso valgono pressapoco le stesse considerazioni del secondo
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Le dichiarazioni di import non hanno alcuna importanza in fase di esecuzione, ma solo in fase di compilazione, perche' il loro scopo e' unicamente quello di permettere al compilatore di risolvere i nomi di classe utilizzati nel codice in nomi completamente qualificati (i.e. comprensivi del package), in modo da sapere dove andarli a cercare all'interno del classpath.

    Detto questo, e' ovvio che l'utilizzo di una forma o l'altra di import e' irrilevante in termini di prestazioni di esecuzione .

    Ha invece peso al momento della compilazione. L'utilizzo delle wildcards ( es: javax.swing.* ) risparmia la digitazione di codice allo sviluppatore ( per quanto ormai gli import siano quasi sempre gestiti dall'IDE che si sta utilizzando ) ma obbliga il compilatore a dover "tenere a mente" piu' classi di librerie esterne quando si compila il proprio codice (nel caso dell'esempio, tutte le classi del package javax.swing ) al fine di risolvere i nomi di classe come descritto sopra.

    Al contrario, l'esplicitazione di tutti i singoli import (es: javax.swing.JFrame ) permette al compilatore di considerare le sole classi indicati nell'import per la risoluzione dei simboli.

    In questi termini, quest'ultimo approccio dovrebbe velocizzare e/o ridurre il footprint di memoria della fase di compilazione. Quanto si guadagni e' discutibile, soprattutto visto che dei tempi di compilazione all'utente finale non interessa una mazza ...

    Personalmente preferisco l'utilizzo degli import estesi, perche' cosi' solo guardando gli import si capiscono praticamente tutte le dipendenze esterne.
    S.O. : Ubuntu 5.04
    Lang : J2*E,PHP,tcl/tk

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.