Avec Java 8, publier en 2014, Java a fait une révolution puisque aucune autre version n’aura apporté autant de nouveautés et d’avancées fonctionnelles permet une écriture du code grandement facilitée et des performances nettement améliorées.
4. LA NAISSANCE DE JAVA
o Java est un langage conçu au début des années 90, une
époque ou trois langages se partagent le marché du
développement des applications d’entreprise : le C, le C++ et
le Cobol.
o Java a su apprendre des problèmes posés par le C++, et
chercher à les résoudre. Ainsi près de 70% des bugs des
applications C et C++ ont disparu.
5. JAVA 6
o Depuis Java 2, sorti en décembre 1998, Sun Microsystems
avait réussi à maintenir un rythme de sortie d’une version
majeure tous les deux ans.
o Et de fait, Java 6 a été publié en 2006:
Propose des évolutions de ses API
Une nouvelle JVM plus performante que la précédente
Propose une stabilisation des nouveautés, des améliorations de
performance.
6. Java 7
o Suite au situation financière très critique que Sun
Microsystems l’a reconnue, Java 7 n’a est publié que juillet
2011.
o Une version qui a eu du mal à convaincre le public:
Fonctionnellement étriquée
Apache Lucene, moteur de recherche Open source, ne fonctionne plus
Des problèmes de sécurité.
7. JAVA 8
• Mais avec Java 8, publier en 2014, Java a fait une révolution
puisque aucune autre version n’aura apporté autant de
nouveautés et d’avancées fonctionnelles permet une écriture
du code grandement facilitée et des performances nettement
améliorées.
9. DU POINT DE VUE TECHNIQUE
o Du point de vue purement technique, la principale nouveauté
est bien sûr l’arrivée des expressions lambda (une expression
qui facilite la programmation fonctionnelle et simplifie
beaucoup le développement).
10. DU POINT DE VUE CONCEPT
o Du point de vue des concepts:
La première grande évolution est l’arrivée d’une nouvelle API,
nommée stream, qui opère dans le domaine du traitement des
données.
Le second concept important concerne la programmation
asynchrone. Java 8 introduit un nouveau jeu d’interfaces et de
classes dans le domaine de la programmation concurrente,
dédié au lancement de tâches asynchrones.
11. 1. Lambda
o Les expressions lambda sont introduites en Java 8 et sont réputés
pour être la plus grande caractéristique de Java 8.
o Cette technique de programmation se traduit par une nouvelle
syntaxe introduite dans le langage et un nouveau mode d’exécution
pour le code porté par une expression lambda qui permet d’écrire
simplement du code complexé lui apporte ainsi plus de lisibilité et de
maintenabilité.
o Syntaxe de lambda experssion:
paramètre -> corps d'expression
13. 1. Lambda
o Les caractéristiques importante d'une expression lambda :
Zéro, un ou plusieurs paramètres :
() -> {return 45}
(int a, int b, ……, n) ->{do something }
14. 1. Lambda
Une déclaration de type facultatif: Pas besoin de déclarer le type d'un
paramètre. Le compilateur peut même s'inférence à partir de la valeur
entre paramètre
Parenthèses en option autour du paramètre: Dans le cas d’un seul
paramètre pas besoin de le mettre entre parenthèses. Pour des
paramètres multiples, les parenthèses sont requises.
15. 2. STREAMS
o Stream est une nouvelle couche abstraite introduite dans Java
8. Une utilisation de flux, qui vous permet de traiter les
données d'une manière déclarative similaire à des instructions
SQL.
o Exemple d'instruction SQL en JAVA:
max SELECT (salaire), employee_id, EMPLOYEE_NAME de l'employé
16. 2. STREAMS
o Autre préoccupation concerne l'efficacité : Pour exécuter le
programme sur les processeurs multi-core, un développeur
Java doit écrire le traitement de code parallèle qui peut être
assez d'erreurs.
o Et pour résoudre ces problèmes, Java 8 introduit le concept de
flux qui permet au développeur de traiter les données
déclaratives et utiliser l'architecture multicœur sans le besoin
d'écrire un code spécifique pour cela.
18. 3. Default Methods
• Permettent d'ajouter des nouvelles fonctionnalités à des
interfaces sans casser les classes qui implémente ces
interfaces.
19. 3. Default Methods
Ce Code montre la Classe MyClass
implémente la méthode
SaySomething() de L’InterfaceA.
Si on veut ajouter à L’InterfaceA une
methode SayHi() , nous allons être
face a un problème de
Compilation, cas on doit
Implémenter cette nouvelle
méthode aussi .
20. 3. Default Methods
En ajoutant le Mot-Clé Default avant le
modificateur d’accès, nous allons pas
être obliger d’implémenter la méthode
SayHi() dans MyClass .
Notez que nous devons
fournir l’implémentation de
toutes les méthodes qui utilise
le Mot-Clé Default.
21. 4. API DATE-TIME
o Avec Java 8, une nouvelle API Date-Time est introduit pour
couvrir les inconvénients suivants de l'ancienne API:
Le non thread-safe:
java.util.Date n’est pas capable de fonctionner correctement
lorsqu'il est exécuté simultanément au sein du même espace
d'adressage par plusieurs threads.
La nouvelle API date-time est immuable et ne dispose pas des
méthodes setter.
22. 4. API DATE-TIME
Une mauvaise conception: La date par défaut commence à partir
de 1900, le mois commence à partir de 1, et le jour commence à
partir de 0, donc pas d'uniformité.
Difficulté à la manipulation de fuseau horaire: Les développeurs
devaient écrire beaucoup de code pour traiter des questions de
fuseau horaire.
23. 4. API DATE-TIME
o Java 8 introduit cette nouvelle API sous le paquet java.time:
Local: Simplifie l’API date-time sans complexité de manipulation
de fuseau horaire.
Zonée: Spécialise l’API date-time de traiter des divers fuseaux
horaires.
24. 5. MOTEUR JAVASCRIPT NASHORN
o Avec Java 8, Nashorn, un moteur JavaScript amélioré
beaucoup est introduit, pour remplacer le Rhino existant.
o Nashorn fournit des performances 2 à 10 fois plus mieux, car il
compile directement le code en mémoire et passe le bytecode
au JVM.
26. JAVA 9 EN COUR
o Java 8 est arrivé il y a peu, il faudra encore quelques années
pour que les projets prennent cette version en compte.
o Mais le groupe java ont commencer à développer le java 9 et
des nouveaux concepts sont en cour de construction.
27. LES FUTURES CONCEPTS
o Parmi ces concepts en cite: La modularité :
Une application donnée ne sera plus polluée par des classes
qu’elle n’utilise pas.
Par exemple une application web qui utilise les API XML, mais
n’utilise pas Swing n’aura plus besoin de dépendre de ces classes.
Cela a comme conséquence que l’empreinte mémoire d’une petite
application Java va grandement diminuer et de même que son
temps initial de chargement.
Une expression lambda est caractérisée par la syntaxe suivante.
Voilà ce que nous allons normalement faire sans lambda expression et comme vous pouvez le voir ci-dessus, il y a beaucoup de code réutilisable. Il est vraiment pénible création de classes internes anonymes et mettre en œuvre un ensemble beaucoup de ses méthodes. Maintenant permet de réécrire le même code en utilisant l'expression lambda.
Donc, comme vous pouvez le voir ici, la lambda expression nous aide à écrire du code très simple et a également aidé supprimé toutes les classes internes anonymes, vous auriez dû créer
L'expression SQL ci-dessus renvoie automatiquement les détails de l'employé qui a le salaire maximal.
Ce Code montre la Classe MyClass implémente la méthode SaySomething() de L’InterfaceA .Si on veut ajouter à L’InterfaceA une methode SayHi() , nous allons être face a un problème de Compilation , cas on doit Implémenter Cette nouvelle Méthode aussi .
En ajoutant le Mot-Clé Default avant le modificateur d’accès, nous allons pas être obliger d’implémenter la méthode SayHi() dans MyClass .
Notez que nous devons fournir l’implémentation de toutes les méthodes qui utilise le Mot-Clé Default
Voici quelques-unes des classes importantes introduites dans le paquet de java.time