Les nouveautés du JDK 1.8
Les nouveautés
Time
L'API time est l'une des fonctionnalitées les plus attendus depuis de nombreuse années. Il aura fallut plus de 10 ans avant que java se décide à ajouter cette API au JDK.
Deux conceptions du temps est impémentées :
- Temps machine (entier augmentant depuis le premier janvier 1970)
- Temps humain (plusieurs champs, jour - mois - année, ...)
- Immuable et Thread Safe. Toutes les classes sont immuables, c'est à dire qu'elles creer des objets qui ne peuvent être modifiés. Et Thread Safe signifie qu'il n'y a pas de problèmes de concurrence.
- Chaînable. Pour une meilleur lisibilité du code, les méthodes sont chaînables
- Clarté. Chaque méthode défini clairement ce qu'elle fait
- Extensibilité. On peut utiliser d'autre calendrier, autre que le calendrier ISO-8601. Et même creer son propre calendrier.
java.time.Instant : Temps Machine
La classe java.time.Instant représente un point relatif à l'epoch (représente la date initial à partir de laquelle est mesuré le temps par les systèmes d'exploitation).
Elle dispose de plusieurs ENUM comme :
- Instant.EPOCH -> 1970-01-01T00:00:00Z
- Instant.MIN -> -1000000000-01-01T00:00:00Z
- Instant.MAX -> +1000000000-12-31T23:59:59.999999999Z
- Instant.now() -> 2014-01-15T20:40:27.093Z
java.time.Duration : Temps Machine
La classe java.time.Duration représente une durée. Comme Instant, la classe Duration est immuable, toutes les méthodes renvoient une nouvelle instance.
- Duration.ZERO représente 0
- .plusDays(long x) ajoute x jours à la durée (plusHours, plusNanos,...)
- .minusDays(long x) retire x jours à la durée (minusHours, minusNanos,...)
java.time : Temps Humain
- LocalDate.MIN -> -999999999-01-01
- LocalDate.MAX -> +999999999-12-31
- LocalDate.now() -> 2014-01-15
- LocalTime.now() -> 22:09:46.553
- LocalTime.NOON -> 12:00
- LocalTime.MIDNIGHT -> 00:00
- LocalDateTime.now() -> 2014-01-15T22:10:49.852