Menu


Trascrizione diapositive

1. Package

  • Complessità: BASSA.


2. Cosa sono i package

  • I package permettono di creare una collezione di file Java che sono logicamente relazionati tra loro, in modo tale da consentire al programmatore di assegnare ad ogni file un determinato compito.
  • Ad esempio: nella circostanza per la quale un nostro ipotetico programma deve inevitabilmente fare uso di più classi, il package permette al programmatore di scrivere ogni classe in un file diverso, senza compromettere la funzionalità dell’applicazione.
  • Il vantaggio principale è quello di non dover fare uso di un singolo file per definire un progetto complesso.


3. Come usare i package

  • Per dichiarare l’appartenenza di una classe ad un determinato package, bisogna fare uso della parola chiave «package».
  • Le prime istruzioni di un file scritto in Java devono riguardare l’importazione di tutti i package, necessari per farlo interagire correttamente con gli altri file del progetto.
  • Se ad esempio dovessimo fare uso di una determinata classe per calcolare l’IMU(imposta sulla prima casa), in un progetto complesso che richiede la definizione di diverse altre classi (una per l’esportazione dei dati, un’altra per l’interfaccia grafica, etc.), bisognerà procedere nel seguente modo:

package imu;

public class Calcolatore {
…   
}



4. Come organizzare i file

  • Per organizzare i file in modo corretto, bisogna eseguire il seguente procedimento:
    - Creare una cartella con il nome del progetto che si desidera realizzare.
    - Adesso è necessario creare tre sottocartelle:
    • src: dove metteremo tutti i sorgenti.
    • build: dove metteremo tutti i file compilati.
    • docs: dove metteremo la documentazione generata con Javadoc.
    - A questo punto per generare un package:
    • Creare una cartella all’interno di src chiamata con il nome che intendiamo dare al package.
    • Infine all’interno della cartella appena generata è necessario includere i relativi file sorgente.


5. Accenno su MS-DOS

  • I comandi eseguiti da MS-DOS si dividono in due categorie:
    - Residenti
    - Transienti
  • Alla prima categoria appartengono tutte quelle funzioni che vengono caricate all’avvio del prompt dei comandi.
    Per questo motivo i comandi residenti possono essere eseguiti senza conoscere il percorso del comando stesso.
  • I comandi non residenti sono invece detti transienti in quanto vengono caricati in memoria centrale non automaticamente, ma solo quando è richiesta la loro specifica funzione, pertanto per richiamare un comando non residente è necessario conoscere il suo percorso.
  • I comandi residenti restano quindi in memoria dall’avviamento del sistema fino al suo spegnimento.
  • I comandi transienti restano invece solo per il tempo necessario ad eseguire la loro funzione.
  • La serie di comandi contenuti nella cartella bin (java, javac, javadoc, etc.) del JDK sono di tipo transiente, per gestire in modo pratico e veloce i package è necessario che divengano di tipo residente, per questo motivo è necessario agire sulle variabili d’ambiente del sistema operativo, come mostrato nel video oggetto della prossima slide.


6. Impostare le variabili d’ambiente

7. Compilare un package

  • Per compilare un determinato package è necessario:
    - Entrare tramite il prompt dei comandi nella cartella principale del progetto.
    - A questo punto se tutte le sotto-cartelle sono state create con il giusto criterio, sarà sufficiente eseguire il comando «javac –d "build" "src\NomePackage\*.java"», dove «NomePackage» è il nome stabilito per il package.
  • Una volta eseguito codesto comando, saranno generati all’interno della cartella «build», tutti i vari file (con relative cartelle) di «bytecode» in formato «.class».


8. Eseguire un package

  • Eseguire un programma contenuto in un package è un operazione molto semplice, infatti, sarà sufficiente posizionarsi nella cartella «build» ed eseguire il comando «java "nomepackage.Programma"», in cui «Programma» è l’unico file di «bytecode» che include il metodo «main()», punto di partenza di ogni applicazione scritta in Java.


9. I sotto-package

  • Abbiamo visto come devono essere compilati ed eseguiti i programmi scritti in Java che fanno uso dei cosiddetti package.
  • Non abbiamo tuttavia ancora accennato ad una eventuale realizzazione di sotto-package, che il programmatore per necessità o per scelta potrebbe dover dichiarare.
  • Un sotto-package non è altro che un package all’interno di un package principale; per crearlo si dovrà modificare la parte inerente alla dichiarazione di appartenenza della classe al package, tenendo presente il precedente esempio riguardante il calcolo IMU, occorrerà variare il codice sorgente nel seguente modo:

package imu;

public class Calcolatore {

}

Si trasforma in...

package imu.calcolo;

public class Calcolatore {

}

In questo modo la classe «Calcolatore» farà parte del package «calcolo» che è sotto-package del package principale «imu».



10. Eseguire un sotto-package

  • Supponendo che il file «Calcolatore.java» sia stato opportunamente modificato per fungere da sotto-package, che includa al suo interno il metodo «main()» e che sia stato compilato in modo corretto; potremmo mandare in esecuzione l’applicativo posizionandoci nella cartella «build» e lanciando il comando «java "packageprincipale.sottopackage. Calcolatore"», in cui «packageprincipale» è il package principale ed in cui «sottopackage» è il sotto-package di «packageprincipale».


11. Classpath

  • La variabile d’ambiente «CLASSPATH» viene adoperata per trovare le classi che il programma intende utilizzare.
  • Ad esempio se la nostra applicazione si trova in «C:\MiaApplicazione\build» ed ha la necessità di utilizzare classi presenti in «C:\ClassiJava», chiaramente la virtual machine non esplorerà tutte le cartelle del disco fisso per trovare le classi necessarie che servono a far funzionare l’applicazione.
  • È opportuno specificare la variabile di «CLASSPATH» ogni volta che è necessario eseguire un applicazione Java che fa uso di classi compilate che si trovano al di fuori della cartella base.
  • Nel caso del previo esempio, è possibile lanciare dalla cartella «build» il comando «java -cp "C:\ClassiJava"; Programma» in cui il file di bytecode principale «Programma.class» deve fare uso di classi compilate presenti in «C:\ClassiJava».


12. Archivio JAR

  • Un file JAR è un archivio compresso usato principalmente per distribuire raccolte di classi Java. Tali file sono concretamente come i package, e quindi talvolta associabili al concetto di libreria.
  • L'utilizzo di questi archivi ha molteplici benefici:
  • Compressione: con l'archiviazione si riesce a ridurre sensibilmente il numero di file arrivando anche ad un unico file JAR.
    Questo metodo, infatti, è largamente diffuso tra le applet Java, dato che diminuisce il tempo di caricamento e quindi il carico di rete e server.
  • Firma: All'interno di un file JAR è possibile salvare informazioni aggiuntive come ad esempio l'autore del pacchetto.
  • Estensione: essendo l'archivio visto come package dal linguaggio, può essere espanso e quindi generare da esso altri package, classi e interfacce.
  • Portabilità: i file compressi restano in tutto e per tutto uguali agli originali e quindi utilizzabili su tutte le piattaforme che possiedono la Java Virtual Machine (JVM).
  • Documentazione: il programma Javadoc è in grado di auto-documentare il contenuto di un archivio di tipo JAR.
  • Per generare un file JAR è necessario eseguire il comando
    «jar cvf Libreria.jar FileOCartella», in questo modo verrà generato
    un file di nome «Libreria.jar» con all’interno il file o la cartella specificata
    nel parametro «FileOCartella».