Bandiera inglese Bandiera italiana

jFive

jFive è una semplicissimo progetto Java composto da pochissimi files, avente l'unico scopo di offrire alcuni sorgenti (con poco codice e parecchia documentazione) utili per sperimentare e/o testare le funzionalità introdotte con Java SE 1.5, nota anche come "Java 5" o "Tiger". L'applicativo jFive è pensato per essere eseguito da consolle (i.e. da linea di comando, shell o consolle integrata nell'IDE).

All'interno del progetto jFive si trovano i seguenti componenti:

  • Un file di build per compilare il progetto usando ANT
  • I sorgenti Java, distribuiti tra 2 packages: root package e Java 5 Generics
  • Una directory docs che elenca le funzionalità dell'applicazione

Il file di build per ANT può essere ignorato, in quanto è possibile compilare il progetto usando un IDE qualsiasi (i.e. il progetto non contiene alcun file specifico per un determinato IDE).

Funzionalità principali

Il progetto è strutturato in tre sezioni:

La classe JavaTester contiene alcuni esempi relativi alla principali novità introdotte da Java 5, ovvero:

  1. Introduzione ai Generics
  2. Auto-boxing e Auto-unboxing
  3. La sintassi del nuovo ciclo for(int value : list)
  4. Utilizzo degli oggetti enum
  5. Import statico di campi e/o metodi (e.g. Math.PI -> PI)
  6. Output formattato in stile C (e.g. System.out.printf)
  7. Input formattato (e.g. l'oggetto scanner)
  8. Metodo con numero di argomenti variabile (varargs): metodo(Object ... args)

La classe GenericTester contiene alcuni esempi di utilizzo dei Generics:

  1. Creazione dei Generics e dei raw types
  2. Oggetti Generics nidificati o complessi
  3. Invocazione di metodi con argomento Generics
  4. Utilizzo di parametri "bounded" (e.g. <T extends CharSequence>)
  5. Utilizzo di parametri "bounded" multipli (e.g. <T extends A & B & C ... >)
  6. Implementazione di metodi basati sui Generics (e.g. <T extends Class<T>>)
  7. Generics ed ereditarietà (e.g. Child<A, B> estende Parent<A> solo se hanno lo stesso tipo)
  8. Il meccanismo di Type Inference

La classe WildcardsTester contiene esempi e commenti sull'utilizzo dei Wildcards, più alcune considerazioni finali di carattere generale e avanzato:

  1. Uso degli "upper bounded wildcards" nella firma dei metodi (e.g. A<? extends B> arg)
  2. Uso degli "unbounded wildcars" nella firma dei metodi (e.g. A<?> arg)
  3. Uso dei "lower bounded wildcars" nella firma dei metodi (e.g. A<? super B> arg)
  4. Esempio di utilizzo dei wildcars per gestire l'ereditarietà dei Generics (cfr. punto 7 del GenericTester)
  5. Esempio di debug di un errore dovuto alla cattura di un wildcard
  6. Discussione del meccansimo di Type Erasure durante la compilazione dei Generics
  7. Esempio di possibili problemi dovuto all'uso di Generics e dei varargs (cfr. punto 8 del JavaTester)
  8. Sintesi di alcune restrizioni nell'uso dei Generics

Tutto il materiale (JavaDoc e commenti inclusi) è in lingua inglese.

Download

JFive 1.0