PDA

View Full Version : Java package e jar


vittorio130881
24-11-2014, 20:09
Ciaoa tutti scusate la domanda banale ma mi spiegate il legame tra jar e package? Ho letto sul libro chei package sono cartelle del sistema operativo. Quando faccio import java.lang.* sto importando tutte file .class o jar?jar sono degli zip piu o meno ma posso importarli con un import? Se mi sono confuso accetto chiarimenti grazie!!!

Daniels118
25-11-2014, 07:56
Un file jar può contenere più package. Non solo, un file jar può contenere anche altre "risorse", per esempio delle immagini.
Un package è un insieme di classi, raggruppate all'interno di una cartella (ed eventualmente sottocartelle), tipicamente compressa in un file jar.
Importare un package con la parola "import" serve solo a rendere visibili le sue classi senza dover scrivere il qualificatore completo; l'utilizzo della parola "import" non include di fatto alcun file all'interno del programma.
La vera e propria inclusione dei package avviene alla creazione dell'archivio jar.
Alcuni package fanno parte del nucleo di java e vengono distribuiti all'atto dell'installazione della JVM; il package java.lang ad esempio non deve essere incluso nel jar di un'applicazione, perché è già presente su tutte le JVM.
Inoltre, solo per il package java.lang, l'import è implicito e di conseguenza non necessario.

vittorio130881
25-11-2014, 08:18
Grazieeee

vittorio130881
25-11-2014, 08:21
Quindi se ho un jar per usare le classi al suo.interno o.importo un package che possiede al suo interno o metto nel classpath lintero jar. Sto leggendo de sio java. Ho capito bene?

Daniels118
25-11-2014, 09:39
Se hai un jar devi per forza inserirlo interamente nel classpath (a meno di non volerlo unzippare per estrarre solo alcune classi, ma è una cosa sconsigliabile), poi puoi decidere di importare l'intero package, uno o più subpackage o classi specifiche. Puoi anche non importare nulla e fare riferimento alle classi anteponendovi il nome del package, per esempio:
nome.del.package.NomeDellaClasse variabile = new nome.del.package.NomeDellaClasse();

vittorio130881
25-11-2014, 10:01
grazie daniels.
sei stato gentilissimo