Les évolutions concernant la lisibilité, concision du langage
- Quelques extensions syntaxiques du langage.
- Méthodes par défaut.
- Méthodes static dans interface.
- La représentation des constantes numériques.
Travaux pratiques
La simplification/généralisation d’un programme existant à l’aide des nouveautés syntaxiques de java.
Les évolutions concernant le typage du langage
- L’autoboxing/unboxing.
- Les generics.
- Les types énumérés.
- L’inférence de type.
Travaux pratiques
La manipulation avancée des generics et des enum.
L’introduction de la programmation fonctionnelle
- Les interfaces fonctionnelles.
- Les librairies d’interfaces fonctionnelles prédéfinies.
- Les lambda expressions.
- Les streams java 8.
Travaux pratiques
La création/utilisation des lambda-expressions, des streams.
L’introduction de la modularité
- Les modules.
- L’accessibilité vs la lisibilité.
- L’évolution du chargement des classes.
- Les évolutions concernant la métaprogrammation.
Travaux pratiques
La construction d’une application modulaire. La migration vers la prise en compte des modules.
Les évolutions du modèle de threads
- L’introduction des Callable<T>, Future<T> et des ExecutorService.
- Le modèle fork/join.
- Les nouvelles classes de synchronisation.
Travaux pratiques
La mise en œuvre des concepts « multithread » dans une application simple
L’évolution de la JVM
- La compilation.
- Le Garbage Collector.
- Le chargement des classes.
- La gestion du temps et des dates.