4. Des versions régulières
- SE tous les 2 ans
- EE tous les 2 ans
Une règle du jeu claire
Sur la route de Java
Une règle du jeu claire
- Un contenu prévu mais pas impératif
- Un report des contenus en retard
4
5. Objectifs
- Simplification
- Productivité
- Moderniser le language
- Moderniser la plateforme
S’adapter aux usages
Sur la route de Java
- Cloud
- Embarqué
- Internet des objets
- Cycles courts
5
6. Java est partout
Sur la route de Java
Mac OS X Linux ARM Java Card
6
HTTP://WWW.APPLE.COM/ HTTP://WWW.RASPBERRYPI.ORG/
10. Evolution du language
- Closure façon java
- Limité à la notion d’interface fonctionnelle
- Implémentation par défaut d’une méthode dans une interface
- Refonte des API
- Parallélisation
SE8 : λ
Impact profond dans la plateforme
- Introduction de nouveautés dans le bytecode
Pour en savoir plus
- http://cr.openjdk.java.net/~briangoetz/lambda/sotc3.html
10
22. SE8 : Nashorn
Ajout d’un language dynamique
- Valide « invoke dynamic »
- Ajoute une implémentation performante de JS
- ECMA Script 262
- Remplace rhino
Fait parti du projet « Multi Language VM »
22
- Continuera sur SE9
24. Besoin de Refonte de l’API
- Non intuitive
- Cause de bug
- Pas de sémantiques ex: pas de durée
- …
SE8 : Date
24
25. BEURK !!!
SE8 : Date
int year = 2013 - 1900;
int month = 3 - 1;
Date date = new Date(year, month, 19, 10, 50);
TimeZone zone = TimeZone.getTimeZone("Asia/Hong_Kong");
Calendar cal = new GregorianCalendar(zone);
cal.setTime(date);
25
DateFormat fm = new SimpleDateFormat("yyyy/MM/dd HH:mm Z");
fm.setTimeZone(zone);
Date calDate = cal.getTime();
String str = fm.format(calDate);
System.out.printf("La date est %sn", str);
26. Refonte
- L’ancienne API est intégrée
- java.util.Date, java.util.Calendar, …
- Sémantique claire
- Instant, durée, année, jour du mois, … seconde de la minute,
…
- Manipulation naturelle
- Ex : Ajout entre les types, accès direct aux éléments d’une
SE8 : Date
- Ex : Ajout entre les types, accès direct aux éléments d’une
date
- Immuable et threadsafe
- Déjà disponible (RI)
- https://github.com/ThreeTen/threeten
26
29. Œuf coque
SE8 : Date
int tempsCuisson = 3 * 60 * 1_000;
long fin = System.currentTimeMillis() + tempsCuisson;
//boucle d'attente
...
if(System.currentTimeMillis()>fin){
//c'est prêt
29
//c'est prêt
} ...
Duration tempsCuisson = Duration.ofStandardMinutes(3);
Instant fin = Instant.now().plus(tempsCuisson);
//boucle d'attente
...
if(Instant.now().isAfter(fin)){
//c'est prêt
} ...
30. Détecter une date
SE8 : Date
Calendar cible = Calendar.getInstance();
cible.set(DAY_OF_MONTH, 31);
cible.set(MONTH, DECEMBER);
Calendar aujourdhui = Calendar.getInstance();
if ( aujourdhui.get(MONTH) == cible.get(MONTH)
&&
30
&&
aujourdhui.get(DAY_OF_MONTH) == cible.get(DAY_OF_MONTH)) {
// c'est le jour J
}
MonthDay cible = MonthDay.of(12, 31);
if(cible.equals(MonthDay.now())){
// c'est le jour J
}
32. Annotations de type
- Renforcer le typage
- Documenter, renforcer les contrôles à la compilation
- Pouvoir placer des annotations sur toute utilisation de type
- Ajout de plugins pour le compilateur
- Détection de bug
- Plusieurs plugins existent
- http://types.cs.washington.edu/checker-framework/
SE8 : Annotation
- http://types.cs.washington.edu/checker-framework/
32
33. Mettre des annotations partout
SE8 : Annotation de type
String myStr = (@NonNull String) myObject;
List<@Immutable T> myList ;
class Folder<F extends @Existing File> { ... }
33
@Immutable Date date = new Date(0);
date.setTime(70); // erreur de compilation
javac -processor MyChecker *.java
+AMÉLIORER LE CODE EN AJOUTANT DE LA VÉRIFICATION
38. Disparition du perm gen space
- Simplification du tuning
- Changement à chaud
- Mais un MetaSpace
Définition de profils pour la JVM
SE8 : OptimisationS
Définition de profils pour la JVM
- Limiter l’empreinte du runtime Java
- Convergence ME SE
- En attendant la modularisation
- http://openjdk.java.net/jeps/161
Flight Recorder
- Enregistreur de bord pour java
38
39. ça ne vous suffit pas ?
- Sumatra
- Utiliser la carte graphique pour les calculs
- Client http
- G1 amélioré
- Faire plus sans full GC
- Améliore l’inférence de type
- Chainage, à l’intérieur de l’appel d’une méthode
SE8
- Chainage, à l’intérieur de l’appel d’une méthode
- Encodages
- Crypto
- … plus de 40 points
- Sur plus de 70 dans le JEP (Jdk Enhancement Proposal)
39
40. Java EE7 Avril 2013
http://java.net/projects/javaee-spec/pages/Home
Java se8 Septembre 2013
http://openjdk.java.net/projects/jdk8/
Ressources
Java se9 2015
Java EE8 2015
40
MERCI