Parliamo ancora una volta delle feature che verranno nella versione 7 di Java e stavolta tocca alle nuove API inerenti il
Date/Time. Un gruppo di esperti ha lavorato sui dettagli della
JSR 310; lo scopo di questo lavoro è portare ad una nuova definizione e concezione dei metodi nativi in Java per la gestione del tempo.
Oggi, in Java conosciamo e usiamo fondamentalmente due classi per tale scopo:
Date e
Calendar, presenti nel package
java.util.
Con la nuova versione, la doppia rappresentazione e memorizzazione del datetime nella classe Calendar in millisecondi da una specifico momento e la data in modo umano (giorno, mese, anno ecc.) scompare, lasciando posto solo alla prima soluzione. Inoltre vengono introdotti nuovi interessanti concetti, che arricchiscono ulteriormente il linguaggio.
Per il core del linguaggio si è preso spunto da una libreria di terze parti:
Joda Time. I nuovi concetti, che verranno introdotti, sono elencati di seguito prendendo come riferimento
un articolo di
Jesse Farnham e la
JSR 310. Ricordando che il tempo viene visto come un insieme discreto di nanosecondi successivi da una data standard - tale concetto viene detto
Discrete Timeline - ecco alcune novità:
- instants rappresentano i nanosecondi che sono passati da una determinata data (1 gennaio 1970, 00:00 UTC)
- partials rappresentano indicazioni temporali non specifiche di tempo, che possono coincidere con più di un istante nella Discrete Timeline. Ad esempio, 17 giugno è una data, ma senza specificare l'anno non è una informazione precisa di un istante;
- durations rappresentano la misura in nanosecondi di intervalli di tempo;
- periods simile al precedente, ma stavolta la notazione usata è quella più leggibile all'essere umano (giorno, mese, anno...)
- intervals rappresentano la misura in nanosecondi di intervalli di tempo delimitati da due istanti.
Per scoprirne di più o vedere qualche esempio, il rimando è all'
articolo menzionato o direttamente alla
JSR 310 nella quale c'è già disponibile una bozza del
javadoc relativo ai nuovi concetti.