Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info

La page est créée Amandine Blanc
 
CONTINUER À LIRE
Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info
Java
   8MIGRATION ET
ENJEUX STRATÉGIQUES
   EN ENTREPRISE

      MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE   1
Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info
TABLE DES MATIÈRES
             P.04_ Avant-propos
             P.05_ Un peu d’histoire
             P.12_ Java Everywhere
             P.18_ Les nouveaux concepts de Java 8
             P.30_ La migration vers Java 8
             P.39_ Java 9 : Le futur est déjà là
             P.46_ Conclusion

2   JAVA 8
Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info
SOAT
                              en quelques mots
Nous favorisons         Société d’expertise et de conseil en informatique,
                        SOAT est spécialisée sur les technologies Java-JEE,
depuis toujours         Microsoft, Web, Mobile et accompagne les entre-
l’émulation             prises dans leur transformation agile.
technologique
                        Au quotidien, ce sont plus de 350 collaborateurs
et le partage           de talents qui interviennent à toutes les étapes
des connaissances       de vos projets IT de manière adaptée à vos besoins
entre nos consultants   et vos budgets.

                        Nous vous soutenons également dans vos choix
                        technologiques, la conception de vos architectures,
                        la réalisation et l’évolution de vos SI ainsi que sur
                        des domaines d’expertise pointus, tels que votre
                        stratégie web ou mobile, votre migration vers le
                        cloud computing ou encore la réalisation d’objets
                        connectés.

                        Blog, conférences, communautés techniques, livres
                        blancs, veille technologique… nous favorisons depuis
                        toujours l’émulation technologique et le partage des
                        connaissances entre nos consultants. Cette
                        démarche de capitalisation ancrée dans les gènes
                        de notre société, participe à la diffusion des savoirs.

                        Allier savoir-faire et savoir-être reste notre défi au
                        quotidien pour rendre notre organisation toujours
                        plus performante et épanouissante.

                           MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE        3
Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info
AVANT-PROPOS
Java s’est imposé, depuis plus de 15 ans,         modernes. Aucune autre version de Java
comme le langage incontournable des               n’aura apporté autant de nouveautés et
systèmes d’information modernes. Il est           d’avancées fonctionnelles.
présent à tous les étages des grandes
                                                  L’objectif de ce livre blanc n’est pour autant
architectures, de la base de données aux
                                                  pas d’en faire un catalogue exhaustif, mais
interfaces utilisateur.
                                                  de mettre en relief les points majeurs qui
Pourtant, Java a traversé une zone de             impacteront le développement de nos
turbulence depuis le rachat de Sun                applications de gestion et la migration
Microsystems par Oracle. Alors que Sun            vers cette nouvelle version.
avait réussi à maintenir un rythme de sortie
                                                  Après un rapide aparté sur le contexte
d’une version majeure tous les deux ans,
                                                  historique et la genèse de Java 8, nous
Oracle ne parviendra pas à tenir ces délais
                                                  parlerons de la présence de Java dans
pour la version 7 et peinera à gagner la
                                                  les différents environnements. Nous
confiance de la communauté open source.
                                                  nous attacherons ensuite à expliciter les
Pire, à l’attente s’est ajoutée la déception,     nouveaux concepts de Java 8 et à montrer
Java 7 a en effet eu du mal à convaincre          en quoi les expressions lambdas et l’API
le public. Fonctionnellement étriquée et          Stream représentent une avancée majeure
n’intégrant pas les lambdas expressions,          de la plateforme, en ouvrant de nouvelles
cette nouvelle version a déçu et ses              opportunités pour écrire des applications
problèmes de sécurité, dont la presse IT et       simples et performantes.
le grand public se sont faites l’écho, ont fini
                                                  Reste à savoir quelle stratégie adopter
d’entacher sa réputation.
                                                  pour migrer vers Java 8 en toute sécurité
Après cette période de flottement, tout           et en parvenant à diminuer au maximum
l’enjeu pour Java 8 était de rendre au langage    sa dette technique ? Nous vous ferons part
ses lettres de noblesse et de le remettre au      des meilleures pratiques sur le sujet avant
premier plan des langages objets actuels.         d’aborder le futur de Java, autrement dit
                                                  nos prévisions pour sa version 9.
Les efforts fournis par Oracle pour mettre
au point cette nouvelle version ont été
conséquents, et le résultat est au rendez-
vous. Avec Java 8, Java est de nouveaux
sur les rails et capable d’intégrer les
dernières évolutions des langages

4    JAVA 8
Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info
JAVA 8 - MIGRATION ET ENJEUX

                                                                 UN PEU D’HISTOIRE
    STRATÉGIQUES EN ENTREPRISE

             1e Partie

                 
Un peu d’histoire
      • Pourquoi a-t-on adopté Java ?
          • Java et performances
   • Pourquoi continuer à utiliser Java ?
       • Une version attendue 6 ans
    • Oracle rachète Sun Microsystems
             • La sortie de Java 7

            MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE   5
Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info
     Un peu d’histoire

          Dans quel but Java a-t-il été conçu ? Quels étaient
               les objectifs de ses créateurs et pourquoi
              ce langage a-t-il rencontré un tel succès ?

Java est un langage conçu au début des              Dans quel but Java a-t-il été conçu ?
années 90, dans un environnement infor-             Quels étaient les objectifs de ses
matique en pleine effervescence. La plupart         créateurs et pourquoi ce langage a-t-il
des grands principes sont écrits : langage          rencontré un tel succès ?
impératif, objet, fonctionnel, même s’ils
seront encore amenés à évoluer.                     A l’époque, trois langages se partagent le
                                                    marché du développement des applications
La différence entre langage interprété              d’entreprise : le C, le C++ et le Cobol. Le C
et compilé a été quantifiée, les projets            est très populaire dans la mesure où il a été
prennent de l’ampleur et l’on se rend bien          utilisé pour écrire Unix et qu’il est tout natu-
compte que la gestion des bases de code             rellement adopté par Linux. Le Cobol s’avère
source, la production des livrables et le dé-       l’un des langages favoris pour le développe-
ploiement en production restent probléma-           ment des applications de gestion, bien qu’il
tiques. A cela s’ajoute l’arrivée d’Internet qui,   arrive en fin de vie. Et concernant la partie
on le pressent bien, va changer les choses et       objet, le langage le plus populaire est le C++,
amener des problématiques nouvelles.                construit sur ce qui a fait le succès du C,
                                                    en y introduisant la notion d’objet dont les
                                                    applications complexes ont besoin.

6    JAVA 8
Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info
     Un peu d’histoire

Pourquoi a-t-on adopté Java ?
Java arrive donc tardivement, sur un                Par ailleurs, le C++ souffre, tout comme le C,
marché déjà mature et bien couvert par              d’un défaut irrémédiable : on ne peut pas
des produits solidement établis. Quelles            vérifier que le pointeur au travers duquel on
sont alors les raisons de son succès ?              écrit a été correctement fixé vers une zone de
                                                    mémoire réservée. Java décide donc de vérifier
Les premières raisons que l’on peut avancer         systématiquement ce type d’écriture, interdit
sont assez évidentes. Tout d’abord Java est         l’arithmétique sur les pointeurs et s’assure que
construit sur une syntaxe simple, issue du C        l’on ne peut pas écrire au-delà de la limite d’un
et du C++, ce qui permettra aux développeurs        tableau ou d’une chaîne de caractères.
de l’adopter facilement et rapidement. Ensuite,
Java est un langage objet et se place donc          Ainsi près de 70% des bugs des applications C
immédiatement en concurrence avec C++,              et C++ ont disparu comme par enchantement.
en apportant de la valeur à ce langage.             Certes moins riche et plus contraignant, Java
                                                    est apparu comme un langage plus sûr, dans
La valeur choisie par ses concepteurs               lequel on écrit moins de bugs.
se situe à deux niveaux :
                                                    Le second niveau concerne le fonctionnement
Le premier niveau consiste, non pas à               des applications elles-mêmes. Alors que le
enrichir les fonctionnalités du C++, mais à         C et le C++ sont des langages compilés, qui
les appauvrir. Cela peut paraître paradoxal         s’exécutent directement sur le processeur des
mais du point de vue de la programmation            ordinateurs, Java fait le pari de l’interprétation.
objet, Java est en réalité moins riche que          Le compilateur Java génère un bytecode,
le C++. Comment cet amoindrissement                 interprété dans une machine virtuelle qui se
des fonctionnalités peut-il apporter tant de        charge de surveiller les écritures interdites et
succès ? La raison en est toute simple : si Java    de gérer la mémoire.
est moins riche, il est aussi moins complexe et
donc plus simple à utiliser.                        A la différence du C et du C++, il n’est pas
                                                    nécessaire en java de libérer la mémoire
Java a en effet su apprendre des problèmes          que l’on réserve explicitement, puisque c’est
posés par le C++, et a su les résoudre. Le C++      la machine virtuelle, équipée d’un garbage
a du mal à spécifier l’héritage multiple, ce qui    collector, qui s’en charge. La fuite de mémoire,
pose des problèmes à l’exécution et que l’on        l’un des problèmes les plus récurrents et
détecte à la compilation. Java a d’entrée de jeu    préjudiciables des langages natifs, s’en trouve
interdit l’héritage multiple et a ainsi résolu de   ainsi réglé.
manière radicale la question.
                                                    La seule présence de cette machine
                                                    virtuelle, réglant les nombreux problèmes
                                                    des langages compilés nativement, a
                                                    largement contribué au succès fulgurant
                                                    de Java.

                                   Java a su apprendre des problèmes
                                   posés par le C++, et a su les résoudre

                                       MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE                7
Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info
     Un peu d’histoire

Java et performances
Utiliser une machine virtuelle constitue          Pourquoi Java est-il plus rapide qu’un
un véritable pari sur l’avenir et peut            langage compilé ?
de prime abord apparaître comme un
handicap, car Java est lent, beaucoup plus        Pour une raison simple : le compilateur C
lent que ses concurrents.                         ou C++ opère avec pour seule information
                                                  le code à compiler et les options qu’on
Les détracteurs de Java s’appuient                lui fournit. Le compilateur just in time de
précisément sur cet argument : la lenteur et      Java observe dans un premier temps la
le fait que le garbage collector laisse tout de   façon dont le code est exécuté et met en
même passer des fuites de mémoire. Or les         œuvre des optimisations issues de cette
détracteurs se trompent lorsqu’ils stipulent      observation.
que Java ne pourra jamais être plus rapide
que le C++, dans la mesure où il est un           Il est capable de supprimer des parties de
langage interprété.                               code qui ne font rien, d’inliner des appels
                                                  de méthodes avec une profondeur bien
En décembre 1998, Java 2 sort et en 1999,         supérieure à ce que l’on fait en C++ et de
Sun dote la plateforme d’une nouvelle             retirer des synchronisations inutiles.
machine virtuelle : Hotspot, qui permet           S’il détecte que la version compilée d’un
une compilation just in time. Le bytecode         code ne s’exécute pas de façon optimale, il
est alors compilé en code natif, ce qui           est capable de refaire cette compilation en
assure au langage des performances                l’améliorant.
comparables au C++.
                                                  Les raisons pour lesquelles Java a connu un
Ce compilateur just in time a fait l’objet        tel succès il y a 15 ans sont toujours valides
de très nombreux investissements et               aujourd’hui, et l’on adopte encore Java pour
améliorations, offrant à Java une rapidité        des raisons similaires.
d’exécution supérieure à C++ depuis près de
10 ans. Dans certains contextes, Java s’est       La gestion de la mémoire par un garbage
même avéré plus rapide que le C, ce qui           collector a également fait l’objet de
n’est pas une moindre performance.                nombreuses attentions et de grandes
                                                  améliorations. Désormais, utiliser un
                                                  garbage collector est plus performant
                                                  que le pattern alloc / free des C et C++.

8    JAVA 8
Java 8MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE - IT News Info
     Un peu d’histoire

Pourquoi continuer à utiliser Java ?
Java a su s’imposer comme l’un des                Même en ces temps de pénurie, le nombre
meilleurs langages de programmation               de développeurs Java reste le plus élevé
pour les applications de gestion depuis           de tous, ce qui constitue une garantie de
plus de 15 ans.                                   maintenabilité pour les projets existants.

Le langage en lui-même est performant,            Cela dit, l’industrie du développement
supporté par des machines virtuelles rapides      évolue, et Java, vieux de 20 ans, avait
et efficaces. Si la plateforme Java EE a pu       besoin d’un sérieux dépoussiérage. Après
être plus controversée jusqu’en version 4,        une période un peu trouble, revisiter les
l’écosystème Java est sans aucun doute l’un       principales API du langage et même au-delà,
des plus riches que l’on puisse trouver. Le       les principaux patterns d’utilisation du
nombre de projets Open source grandit             langage, était devenu une nécessité.
chaque jour, rendent des services dans tous
les domaines applicatifs et à tous les étages
de nos applications.

Une version attendue 6 ans
Depuis Java 2, sorti en décembre                  Java 7 devait donc sortir en 2008, avec
1998, Sun Microsystems avait réussi à             une évolution importante : les lambda
maintenir un rythme de sortie d’une               expressions. Mais à l’époque, Sun
version majeure tous les deux ans. Et de          Microsystems était dans une situation
fait, Java 6 a été publié en 2006.                financière très critique. Depuis l’éclatement
                                                  de la bulle Internet en 2000, l’entreprise
Comme il se fait régulièrement dans notre         avait perdu de son aura auprès des
industrie informatique, le choix de Sun           serveurs informatiques hébergeant des sites
Microsystems était le suivant :                   Internet. En quelques années, ses ventes
                                                  se sont écroulées, sa valeur en bourse a
• Une sortie majeure propose des évolutions      considérablement chuté et en avril 2009,
  du langage et de ses API                        l’entreprise se fait racheter par Oracle.
• La sortie suivante propose une stabilisation
  des nouveautés, des améliorations de            Les conséquences pour le développement
  performance mais sans évolution majeure         de Java seront lourdes : les investissements
                                                  ne seront plus à la hauteur, Java va
C’est précisément ce qu’il s’est passé : les      cruellement manquer de main d’œuvre, la
types paramétrés (génériques) ont été             gouvernance connaîtra une longue période
introduits en Java 5, ce qui a représenté une     de flottement et la communauté ne saura
évolution majeure. Suite à cette version,         plus très bien dans quelle direction aller.
arrive Java 6, sans grand bouleversement
mais avec une nouvelle JVM plus
performante que la précédente.

                                    MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE               9
     Un peu d’histoire

Oracle rachète Sun Microsystems
Le rachat de Sun Microsystems                     a été exacerbée par le départ précipité de
par Oracle dure plus longtemps                    James Gosling, créateur du langage et icône
que prévu, et finalement la version 7             du monde Java.
de Java ne sort pas.
                                                  La blogosphère réagit très mal à ce rachat, le
Lorsque la procédure de rachat arrive enfin à     JCP s’enflamme après la démission de Doug
son terme, Oracle se retrouve propriétaire de     Lea, professeur à l’université d’Osego et père
Java et annonce très clairement que la société    des API concurrentes en Java.
aura besoin d’un langage de développement
robuste, performant et pérenne, comme             Oracle se retrouve face à une décision
socle de ses produits. Oracle est donc là pour    difficile à prendre. Nous sommes en 2010,
reprendre les investissements et donner une       il n’y a toujours pas eu de version
direction claire aux développements.              majeure de Java depuis 2006 et toute la
                                                  communauté attend avec impatience les
Mais la réalité a été quelque peu différente.     lambda expressions dans Java 7. Mais
Alors que Sun jouissait d’une excellente image    Java 7 est toujours en chantier et ses
dans les communautés Open source, Oracle          fameuses lambda expressions ne sont
arrive sur un terrain hostile, dont la méfiance   absolument pas prêtes.

     Sun jouissait d’une excellente image dans les communautés
          Open Source, Oracle arrive sur un terrain hostile

10   JAVA 8
    Un peu d’histoire

La sortie de Java 7
Qu’adviendra-t-il alors de Java 7 ? Oracle      Il est clair qu’Oracle prend un réel risque
s’est retrouvé face à un choix délicat :        avec cette nouvelle annonce, et Java aussi.
soit sortir rapidement une version 7
mais incomplète et sans les lambdas,            La date de sortie sera une dernière fois
soit attendre la finalisation des lambdas       décalée. Oracle a dû en effet concentrer ses
mais retarder la sortie de la version 7.        efforts sur les correctifs dont Java 7 avait
C’est la première des deux options              besoin, au détriment des développements
qui sera finalement choisie et l’on sait        sur Java 8.
rétrospectivement que ce fut le bon
choix. L’attente aurait été trop longue et      La sortie de Java 8 en mars 2014, avec ses
néfaste pour l’avenir de Java.                  très attendues lambda expressions,
                                                a été toutefois bien accueillie. Entre-temps
Java 7 est enfin publié en juillet 2011.        les choses se sont améliorées avec la
Mais les ennuis vont rapidement s’enchaîner.    communauté. Malgré quelques premiers
Insuffisamment testée, la nouvelle              faux pas dans sa communication, Oracle
version présente des défaillances ;             a su donner des gages de confiance à la
elle doit être patchée peu de temps après       communauté Open source. Doug Lea est
sa sortie.                                      revenu au JCP, qui s’est remis au travail dans
                                                la sérénité.
Apache Lucene, moteur de recherche Open
source, ne fonctionne plus et des failles       Outre les expressions lambda, de nombreuses
concernant la sécurité du langage sont          évolutions ont été ajoutées aux classes
décelées. Cette information, rapidement         existantes ainsi que de nouvelles API venant
relayée dans la presse IT et grand public,      enrichir le spectre fonctionnel dans de
aura évidemment un effet dévastateur sur        nombreux domaines. L’un des domaines
l’opinion.                                      dans lequel brillent ces API est sans aucun
                                                doute le traitement des données. Traiter
Pourtant, Java 7 n’est pas une si mauvaise      des données jusqu’en Java 7 passe par
version. Le langage évolue dans le sens de      l’utilisation des collections et du pattern
la simplification de certains patterns qui en   iterator. Ce pattern, écrit il y a plus de 20
avaient réellement besoin et quelques API       ans, est resté au cœur de nos applications
sont optimisées avec l’arrivée d’une nouvelle   de gestion depuis 1998. Avec Java 8, il
API I/O très intéressante. Reste que ces        devient presque obsolète et est remplacé
nouveautés déçoivent et ne sont pas à la        par l’API Stream. L’écriture du code est ainsi
hauteur d’une attente déjà trop longue.         grandement facilitée et ses performances
                                                sont nettement améliorées.
Java 8 est donc rapidement annoncé,
avec une date de sortie et la promesse
de lambda expressions intégrées. Mais
l’annonce est encore une fois mal accueillie.
La communauté est très sceptique : la date
sera-t-elle encore repoussée ? Le périmètre
fonctionnel va-t-il être maintenu ?

                                    MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE         11
JAVA 8 - MIGRATION ET ENJEUX
JAVA EVERYWHERE

                                   STRATÉGIQUES EN ENTREPRISE

                                            2e Partie

                                              
                                Java Everywhere
                                                 • Portabilité
                                     • Java 8 et les objets connectés
                                        • Java 8 et les applications
                                            graphiques natives
                                  • Java 8 et les serveurs d’entreprise
                                             • Java 8 et le cloud
                                  • Java 8 et les applications mobiles

                  12   JAVA 8
 Java Everywhere

Portabilité
Depuis sa création, Java est compatible             croît à une vitesse vertigineuse avec l’arrivée
avec la quasi-totalité des processeurs et           des objets connectés, ce qui rend encore
des OS, ce qui dans les années 90 était             plus pertinente la portabilité de Java.
nécessaire puisque l’on développait sous            Comme Java est, par essence, un langage
Windows et que l’on déployait sur Unix              de réseau, il s’intègre parfaitement
puis sous Linux.                                    dans un environnement distribué et
                                                    apparaît comme un langage de choix pour
Si ce point n’est évidemment pas remis en           programmer tous les devices qui peuplent
cause, le contexte a cependant changé. La           notre quotidien.
diversité des plateformes de déploiement

Java 8 et les objets connectés
Les analystes nous prédisent que d’ici              objets peupleront notre quotidien en 2020,
10 ans, nous utiliserons au quotidien               et qu’ils génèreront 40% de données que les
une demi-douzaine d’objets connectés                serveurs Internet auront à traiter, contre 11%
en moyenne.                                         aujourd’hui.

Tous les domaines sont touchés : la domotique,      Java 8 est au centre de ces enjeux et apporte
l’automatique industrielle, les objets personnels   les réponses techniques dont les développeurs
(montres, lunettes, capteurs médicaux), les         ont besoin. Le langage apporte en effet la
véhicules personnels et professionnels. Sans        notion de profil et peut être déployé de façon
compter bien sûr les téléphones et tablettes.       optimale sur l’ensemble de ces devices. Des
                                                    API spécifiques permettent d’enrichir les
                                                    fonctionnalités réseau et de les aligner sur
De quoi ces objets ont-ils besoin ?                 les besoins spécifiques de ces plateformes
                                                    particulières.
1. D e fiabilité, car ils sont allumés en
   permanence.                                      Pour les devices qui disposent d’un terminal
2. D e performance, car ils doivent répondre       graphique, Java 8 apporte JavaFX 8. Ce
   rapidement et implémenter des traitements        framework, en développement depuis de
   locaux.                                          nombreuses années, atteint un excellent niveau
3. D e sécurité, une tierce personne ne doit       de maturité.
   pas pouvoir intercepter les données qu’ils
   échangent.                                       Il permet, entre autres, de piloter des écrans HD
4. De modes de gestion déportés : on doit          à partir d’un Raspberry Pi par exemple. Enfin,
   pouvoir se connecter dessus pour pouvoir         Java FX permet de développer des applications
   les administrer.                                 interactives sur des bornes équipées d’écrans
5. De nouvelles plateformes pour agréger les       tactiles pour un coût très faible.
   données qu’ils produisent, et en extraire de
   l’information pertinente.                                   20 milliards d’objets
Ce dernier point ne doit pas être négligé.                     connectés peupleront
IDC prévoit qu’environ 20 milliards de ces                     notre quotidien en 2020

                                      MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE             13
 Java Everywhere

Java 8 et les applications
graphiques natives
Depuis ses premières versions, Java permet         Depuis plusieurs années, le framework
de construire des interfaces homme machine         JavaFX monte en puissance. Il s’agit d’un
natives en utilisant le framework Swing.           remplacement de Swing qui apporte ce qui
                                                   manque à son prédécesseur.
De nombreuses applications ont été
développées en Swing et certaines sont              Java 8 apporte JavaFX 8 qui tire parti des
encore utilisées aujourd’hui.                      nouveautés introduites dans Java 8 et
Conçu il y a 20 ans, Swing est aujourd’hui un      permet la migration d’une application Swing
peu vieillissant ; d’une part il ne couvre pas     soit étape par étape, soit en reprenant tout
tous les besoins des applications graphiques       de zéro.
modernes, notamment dans le domaine de
l’animation pure, et d’autre part, il devient de
plus en plus compliqué de le faire évoluer.

Java 8 et les serveurs d’entreprise
Java reste bien sûr présent pour le                Pour Java EE, certains éléments de Java
développement d’interfaces Web.                    8 seront déterminants : les lambda
                                                   expressions bien sûr, mais aussi les
Historiquement, Java Servlet / JSP a fait partie   nouveautés dans le domaine de la
des premiers frameworks web utilisables            concurrence, qui serviront de socle
industriellement. Si vers la fin des années 90,    aux traitements asynchrones, dans les
les avancées sont encore balbutiantes, de          domaines suivants : servlets, EJB, JMS, bus
nombreux projets ont adopté Java comme             d’événements (CDI).
langage pour le développement de leur
partie Web.

Aujourd’hui, Java reste présent au cœur
des applications d’entreprise, à tous les
étages fonctionnels : interfaces Web, couche
de services et accès aux données.

Si cette partie des applications se construit
sur des plateformes complémentaires, telles
que Java EE ou Spring, l’influence de Java
8 reste très présente. Spring 4 supporte
déjà Java 8. Java EE 8 dont les travaux
ont commencé fin 2013 sera construit
également sur Java 8.

14   JAVA 8
 Java Everywhere

Java 8 et le cloud
Java est une plateforme de développement          plus simple à mettre en œuvre : tout
dont les applications ont vocation à être         l’environnement logiciel de la machine
déployées sur le cloud. Les entreprises qui       serveur a été préparé pour nous.
déploient leurs applications sur le cloud ne
souhaitent en général pas s’attacher à un         Ces deux modes existent commercialement
fournisseur en particulier, mais veulent avoir    depuis plusieurs années déjà, donc rien de
la possibilité de déplacer leurs applications     nouveau dans cet horizon. Mais le cloud est
d’un hébergeur à l’autre. Or les applications     un domaine qui bouge vite et sur lequel la
Java EE répondent parfaitement à cette            concurrence est particulièrement agressive.
contrainte.                                       Par ailleurs, de nouveaux modes, que l’on
                                                  pourrait appeler hybrides, apparaissent et
Mode IaaS ou PaaS ?                               méritent que l’on s’y attarde un peu.

L’hébergement cloud qui nous intéresse
repose sur deux approches : le mode               Les modes hybrides
Infrastructure as a Service (IaaS), ou
Platform as a Service (PaaS).                     Il existe depuis quelques mois des modes
                                                  hybrides, dans lesquels on déploie une pile
Le premier mode consiste à louer une              logicielle dans un environnement virtualisé.
machine virtuelle chez un hébergeur. Le           Ce mode est un intermédiaire entre le mode
dimensionnement de cette machine est              IaaS et SaaS, dans la mesure où l’on ne
déterminé lors de sa création : mémoire, CPU      déploie pas de machine virtuelle soi-même.
et disque. La facturation se fait ensuite au
temps, en fonction de la taille de la machine.    Un environnement existant y est proposé dès
                                                  le départ que l’on particularise pour créer
Une fois la machine créée, l’environnement        un serveur d’applications à configurer. La
logiciel est installé, puis l’application elle-   dernière couche de déploiement consiste à
même pour servir nos requêtes. Ces étapes         déployer l’application dans ce serveur.
peuvent d’ailleurs être automatisées,
plusieurs outils de scripting existent.           Plusieurs outils sont apparus ces derniers
Le deuxième mode consiste à louer un              mois pour créer ce type d’environnement,
serveur d’application déjà installé, sur une      construits sur les nouvelles possibilités de
infrastructure plus ou moins puissante.           virtualisation offertes par le noyau Linux :
La facturation se fait en fonction de la          LXC. LXC est une solution de virtualisation
puissance de calcul dont le serveur a besoin      intermédiaire entre chroot et la machine
et qui dépend de la charge de l’application.      virtuelle classique. LXC permet de construire
Techniquement, cet environnement est              une machine virtuelle dans un environnement
un peu plus contraignant que le premier,          Linux, en utilisant le noyau de la machine
puisque le serveur utilisé est dans une           hôte. Cela offre de nombreux gains en termes
configuration standard qui n’est en général       de performance et de temps de chargement
pas modifiable. Mais il est également             notamment.

           Le cloud est un domaine qui bouge vite et sur lequel
           la concurrence est particulièrement agressive

                                      MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE        15
 Java Everywhere
Quel mode choisir ?                              Une application Java EE
                                                 peut passer d’un hébergeur
La réponse à cette question est complexe,        à l’autre
car elle ne dépend pas que de l’application
à déployer. L’idéal est de considérer l’unité    Déployer une application donnée, mise au
de déploiement propre à chaque mode.             point sur un serveur d’application particulier
En mode IaaS, cette unité est la machine         est en général attachée à ce serveur.
virtuelle : Ubuntu, Windows, etc… En mode        Certains modules de Java EE manquent
SaaS, cette unité est l’application que l’on     de portabilité d’un serveur à l’autre.
veut déployer. En mode hybride, il s’agit        Passer d’une implémentation de JPA telle
du container dont la limite est le point à       qu’Hibernate à une autre, EclipseLink, par
partir duquel le déploiement nécessite une       exemple, ne se fera pas sans douleur.
configuration particulière. Ce mode est sans     La notion de portabilité des applications Java
doute celui qui va se développer le plus et      EE doit donc être considérée avec prudence.
proposer les modes de fonctionnement les
plus riches, d’autant que tous les hébergeurs    Elle ne pose en général pas de problème
supportent ce mode.                              pour les couches de présentation et de
                                                 services. Mais elle peut se révéler plus
Dans la plupart des cas (on pense bien sûr à     problématique lorsque l’on considère la
Docker), le container de virtualisation est un   couche d’accès aux données.
élément portable d’un hébergeur à l’autre,
ce qui permet de choisir son hébergement         Reste que les serveurs Java EE les plus
avec plus de souplesse.                          populaires sont supportés par la plupart
                                                 des hébergeurs cloud, en mode Platform
Cela dit, il y a toutes les chances que          as a Service (PaaS) ou Infrastructure as a
les données sur lesquelles l’application         Service (IaaS). Une application Java EE est
travaille constituent la contrainte la           donc par nature, parfaitement adaptée à un
plus prépondérante dans le choix de              déploiement cloud.
l’hébergement de l’application. Pour des
raisons de temps d’accès, on préfèrera
exécuter les traitements au plus près des
données. Les contraintes techniques et les
coûts de migration des grands volumes de
données d’un hébergement à l’autre rendent
                                                     Une application Java EE
ces migrations impossibles dans la pratique.           est donc par nature,
                                                      parfaitement adaptée
Le choix de l’hébergeur est souvent
verrouillé par ce phénomène, identifié sous          à un déploiement cloud
le nom de « data gravity ». Il faut donc être
très vigilant lorsque l’on crée des grandes
quantités de données chez un hébergeur
car on risque fort d’en dépendre pour de
nombreuses années.

16   JAVA 8
 Java Everywhere

Java 8 et les applications mobiles
Historiquement, le domaine des                    de conserver une base de code unique au
applications mobiles a toujours été               travers de plateformes cibles : poste client
peu exploité que ce soit par Sun                  ou plateforme mobile. Cette approche est
Microsystems ou Oracle. Depuis qu’Oracle          intéressante, mais il s’agit d’un mode de
est propriétaire de Java, les procès se           fonctionnement finalement dégradé par
sont enchaînés avec Google, en tant               rapport à une application native.
que développeur principal d’Android et
étant donné la part de marché d’Android,          L’exécution de code JavaFX sur Android ou
on comprend sans peine les enjeux                 iOS est différent. Il s’agit bien d’exécuter
financiers de ces actions.                        une application développée pour le poste
                                                  de travail sur des plateformes mobiles, en
Le langage et la machine virtuelle utilisés par   l’occurrence Android et iOS, sans conversion
Android ont évolué à partir du langage Java,      et donc sans dégradation.
et même s’ils ont divergé il est facile pour un
développeur Java de se les approprier.

À l’heure actuelle, les applications mobiles
utilisent toujours Java 7, mais il est possible
de programmer la partie serveur en Java
8. Le développement de cette partie
                                                      À l’heure actuelle, les
de l’applicatif peut être complètement             applications mobiles utilisent
détaché de la partie purement mobile.               toujours Java 7, mais il est
On se retrouve alors dans le contexte
du développement d’applications cloud               possible de programmer la
classique.                                           partie serveur en Java 8
Des efforts émergent pour faciliter
l’exécution des applications graphiques
écrites en JavaFX 8 (intégré à Java 8) sur les
plateformes Android et iOS. Ce point est
intéressant car il s’agit bien là d’exécuter le
code JavaFX sur des plateformes mobiles.

Les outils alternatifs qui existent
convertissent le code écrit dans le langage
natif (Java, C# ou autre) dans un langage
qui sert de dénominateur commun (Java
pour Android, Objective C ou Swift pour
iOS, HTML 5), lui-même exécuté sur la
plateforme cible. Cette approche permet

                                      MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE         17
JAVA 8 - MIGRATION ET ENJEUX
LES NOUVEAUX CONCEPTS DE JAVA 8

                                                 STRATÉGIQUES EN ENTREPRISE

                                                            3e Partie

                                                               
                                             Les nouveaux
                                           concepts de Java 8
                                                      • Nouvelle gestion des dates
                                                            et des calendriers
                                                  • Nouveaux patterns en traitement
                                                               de données
                                                         • Nouveaux patterns en
                                                        programmation parallèle
                                                         • Nouveaux patterns en
                                                        programmation réactive
                                                • Les autres nouvelles fonctionnalités

                                  18   JAVA 8
 Les nouveaux concepts de Java 8
Aucune version de Java n’a apporté                Du point de vue des concepts, la première
autant de nouveautés que Java 8. Le               grande évolution est l’arrivée d’une
travail sur ce point a été remarquable.           nouvelle API, nommée Stream, qui opère
                                                  dans le domaine du traitement des
Si l’objet de ce livre blanc n’est pas d’en       données. Rappelons que les seuls outils
faire un catalogue exhaustif, mais plutôt         dont nous disposons en Java pour traiter
de mettre en relief les points majeurs qui        des données datent de 1998, apportés par
impacteront sur le développement de nos           l’API Collection. Même si cette API a été
applications de gestion, il ne faut pas non       réécrite au moins deux fois depuis 16 ans,
plus oublier que ces nouveautés comportent        les patterns qu’elle a alors apportés n’ont
des points techniques très utiles pour les        jamais véritablement changé. L’arrivée de
développeurs de frameworks.                       cette nouvelle API et des nouveaux patterns
                                                  introduits avec elle, présentent donc une
En effet, du point de vue purement                réelle avancée.
technique, la principale nouveauté est
bien sûr l’arrivée des expressions lambda.        Le second concept important concerne la
Cette technique de programmation se               programmation asynchrone. Java 8 introduit
traduit par une nouvelle syntaxe introduite       un nouveau jeu d’interfaces et de classes
dans le langage et un nouveau mode                dans le domaine de la programmation
d’exécution pour le code porté par une            concurrente, dédié au lancement de tâches
expression lambda. Cette syntaxe permet           asynchrones. Le concept est différent de
d’écrire simplement du code complexe              la programmation concurrente, de plus
et lui apporte ainsi plus de lisibilité et de     haut niveau, et probablement plus simple à
maintenabilité. Le gain en performance,           appréhender et à mettre en œuvre.
somme toute substantiel (Oracle annonce
un facteur 70), est en réalité une forme de       Mais commençons par une nouvelle API
bonus, qui découle naturellement de cette         attendue depuis fort longtemps. Elle n’est
nouvelle façon d’écrire du code.                  en fait pas si nouvelle puisqu’il s’agit de
                                                  l’intégration d’une API existante dans le
Cette nouveauté à elle seule a un impact          JDK, portant sur la gestion des dates et des
majeur sur l’ensemble du JDK. Le nombre de        calendriers.
classes du JDK modifiées par l’introduction
des lambdas est plus important que le
nombre de classes qui avaient été modifiées
par l’arrivée des génériques de Java 5 en 2004.

  Les nouveautés apportées
  par Java 8 comportent des
  points techniques très utiles
   pour les développeurs de
           frameworks

                                     MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE         19
 Les nouveaux concepts de Java 8

Nouvelle gestion des dates
et des calendriers
Jusqu’en Java 7, la gestion des dates et des       classes, ce qui rendra cette API utilisable dans
calendriers reposent essentiellement sur           toutes les applications de gestion.
deux classes : Date et Calendar. Ces deux
classes ont été conçues au tout début de           Cette nouvelle API, rebaptisée Java
Java, il y a environ 20 ans.                       Date & Time pour l’occasion, apporte
                                                   quantité de concepts, de classes et
On peut dire sans se tromper qu’elles ont          de méthodes utilitaires avec trois
été construites sur des concepts tombés en         principaux objectifs :
obsolescence. Ces classes avaient été d’ailleurs
déjà déclarées deprecated en Java 3, sans          • Corriger les obsolescences de l’API précédente
toutefois qu’une alternative satisfaisante n’ait   • Supporter les nouvelles normes en matière de
été fournie. Reste que pour les applications         gestion des dates et calendriers, entre autres,
Java EE et notamment dans les modules JPA,           de leur conversion en chaînes de caractères
leur utilisation est incontournable.               • Simplifier grandement la tâche des
                                                     développeurs dans le domaine de la
Jusqu’en Java 7, Joda Time est sans aucun            manipulation des dates
doute l’API de choix pour les applications
Java. Il s’agit d’une librairie externe au JDK,    Cette nouvelle API n’est pas encore supportée
brillamment conçue, pratique et simple à           par JPA, bien que des passerelles existent.
utiliser. La bonne nouvelle est que le JDK 8       Elle le sera dans la prochaine version, ce qui
embarque une version peu modifiée de Joda          permettra de l’utiliser pleinement dans nos
Time. A priori, JPA supportera ces nouvelles       applications de gestion.

Nouveaux patterns en traitement
de données
Au commencement                                    Le code que l’on écrira en Java 7 pour
était l’Iterator                                   résoudre cette question simple ressemblera
                                                   probablement au code 1 ( Cf. page 21).
Jusqu’en Java 7, on disposait d’un unique
pattern pour traiter des données, qui              Ce code est très classique, les applications
consistait à intégrer ces données dans une         de gestion en regorgent. Il s’agit d’une
instance de collection et à itérer dessus.         application d’un pattern bien connu :
                                                   le pattern iterator, décrit dans le fameux
Prenons l’exemple d’un traitement simple ;         « Gang of Four1» , publié en 1994.
supposons que l’on dispose d’une liste
de personnes et que l’on souhaite calculer         [1] Design Patterns: Elements of Reusable Object-Oriented
la moyenne d’âge des personnes de plus             Software, Erich Gamma, Richard Helm, Ralph Johnson,
de 20 ans qui se trouvent dans cette liste.        John Vlissides, Addison Wesley ed., 1994.

20   JAVA 8
 Les nouveaux concepts de Java 8
On peut formuler deux                             valeur à notre moyenne. Le traitement de ce
remarques au sujet de ce code :                   cas limite n’est pas écrit ici.

La première remarque est qu’il décrit de          Si cette valeur doit être affichée dans un tableau
manière très précise la façon dont le calcul de   de bord, on pourra peut-être la remplacer par
notre moyenne s’effectue. Tellement précise,      un signe visuel indiquant à l’utilisateur que la
qu’il laisse peu de marge de manœuvre à           valeur en question ne peut être calculée. Si
la JVM ou au compilateur pour optimiser le        en revanche, elle doit être injectée en entrée
traitement. Clairement, améliorer le temps        d’un autre calcul, on va devoir transmettre une
de calcul va nécessiter l’écriture de code        information qui n’est pas le résultat, mais plutôt
d’optimisation dans ce code qui est par           une absence de résultat.
essence, applicatif.
                                                  Le traitement suivant va devoir prendre en
La deuxième remarque est qu’il passe sous         compte cet état de fait. Le tout ressemblera
silence le fait que si nous n’avons pas de        fort à une verrue dans notre code et sera un
personnes de plus de 20 ans dans notre liste,     point coûteux à gérer, notamment en termes
il nous est quasi impossible de donner une        de maintenabilité.

Code 1 moyenne d’âge par itération

Puis vint l’API Stream
L’API Stream apporte une manière radicalement différente de programmer.
Écrivons le même code que le précédent, en utilisant cette nouvelle API.

Code 2 moyenne d’âge par stream

                                     MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE             21
 Les nouveaux concepts de Java 8
Le premier constat est que le code écrit est       La gestion des valeurs
moins volumineux. En est-il pour autant            qui n’existent pas
plus simple ? La réponse est probablement
plus complexe qu’il n’y paraît, car le code ne     La question de la valeur moyenne d’une liste
décrit pas de façon laborieuse chaque étape        d’âges qui serait vide, est également traitée
du calcul mais manipule des concepts de            dans ce code. On pourrait penser naïvement
plus haut niveau.                                  que cette méthode average retourne un
                                                   nombre, probablement un double mais ce
La ligne 3 est un mapping, consistant à            n’est pas le cas, car on sait à l’avance qu’il est
transformer notre liste de personnes en            impossible de calculer la valeur moyenne
une liste d’entiers, leurs âges. On applique       d’un ensemble de nombres qui serait vide.
la méthode passée en paramètre à chaque            Cette valeur n’est pas définie pour des
personne pour obtenir son âge.                     raisons précises issues de la théorie des
                                                   groupes.
La ligne 4 est un filtrage, qui ne conserve
de cette liste que les âges strictement plus       Mais l’API Stream a été intelligemment
grands que 20. On applique ici l’expression        conçue et a prévu ce cas. Plutôt que de
passée en paramètre.                               retourner directement un nombre, cette
                                                   méthode retourne un objet particulier, de
Enfin, l’appel de la ligne 5, calcule              type Optional. Ce nouveau concept dans Java
directement la valeur moyenne de cette liste       8 permet de gérer de façon particulièrement
d’entiers.                                         élégante ce type de méthodes qui peuvent
                                                   ne rien retourner.
Cette façon de programmer
se déroule concrètement                            La force de ce nouveau type d’objet, est que
en deux temps                                      l’on peut le traiter de façon très naturelle
                                                   dans le cadre de l’API Stream. Sans entrer
Elle commence par mettre en forme les              dans les détails, disons simplement que
données (passage d’une liste de personnes à        l’API Stream connaît le type Optional et
une liste d’âge de laquelle on retire les âges     dispose des outils nécessaires pour gérer
inférieurs à 20), puis elle lance un calcul dont   ces objets de façon simple, non intrusive
l’algorithme précis se trouve dans l’API.          et performante.

La première version du code que nous
avons écrit, décrivait chaque étape du
calcul. Il s’agissait de la programmation d’un
algorithme, en l’occurrence le calcul d’une
moyenne.

Cette deuxième version est en fait la
description d’un résultat. Elle ne décrit pas
l’algorithme en tant que tel mais c’est l’API
elle-même qui réalise le calcul. Toutes les
optimisations se trouvent donc dans l’API et
ne viennent pas polluer le code applicatif.

22   JAVA 8
 Les nouveaux concepts de Java 8

Nouveaux patterns en programmation
parallèle
Le besoin de paralléliser                          Java EE a continué d’interdire leur utilisation
                                                   directe jusqu’en version 7, publiée en 2011.
Au milieu des années 2000, une révolution          La programmation concurrente appartient
silencieuse a eu lieu dans le domaine              au domaine des développeurs de serveur et
de l’informatique : l’arrivée massive des          est interdite aux développeurs d’applications
processeurs multicœurs et l’arrêt de l’évolution   à proprement parler. De ce fait, aujourd’hui
de la fréquence de fonctionnement des CPU.         encore, nombre de développeurs Java
Sans en avoir l’air, cette révolution a eu un      connaissent mal ces API Concurrentes.
impact majeur sur le design des applications
de gestion. Jusqu’à cette époque, pour             La réponse technique apportée par les
améliorer les performances d’une application       serveurs d’application jusqu’en Java 7 permet
jugée trop lente, la seule option consistait à     de traiter de plus en plus de requêtes
attendre. Attendre quoi ? Simplement l’arrivée     en parallèle ce qui rend nos applications
de nouvelles machines, plus rapides que celles     plus rapides. La rapidité ici se mesure en
de la génération précédente.                       nombre de requêtes traitées par seconde et
                                                   effectivement, ce nombre augmente.
Cette période bénie est révolue et ne              Mais la question de l’accélération du
reviendra probablement pas. Les processeurs        traitement de chaque requête reste ouverte.
que nous utilisons ne gagnent plus en              Que se passe-t-il si, au lieu de mesurer le
rapidité mais là où nous n’en avions qu’un         nombre de requêtes traitées par seconde,
seul (monocœur), nous en avons désormais           on s’intéresse au temps de traitement d’une
plusieurs (multicœur). Chaque traitement           requête unique ? En d’autres termes, que se
dans notre application n’est pas plus rapide       passe-t-il si un traitement particulier est jugé
qu’avant, mais là où l’on n’en exécutait qu’un     trop long et que l’on souhaite en améliorer la
seul, on peut à présent en exécuter plusieurs      performance ?
en parallèle. Grâce à ces processeurs
multicœurs, nos applications sont                  La seule façon de faire est de pouvoir
globalement plus rapides et capables de            découper le traitement à effectuer en sous-
faire plus d’une chose en même temps.              tâches, et de distribuer ces tâches sur les
                                                   cœurs de notre CPU. Ainsi là où chaque
C’est précisément dans ce contexte que les         traitement s’effectuait dans son propre fil
API Concurrentes, qui savent gérer ce point,       d’exécution, sur un cœur de notre CPU, il
ont été publiées dans Java 5 en 2004. De           pourra désormais s’effectuer dans plusieurs
ce point de vue, Java est donc parfaitement        fils d’exécution, chacun sur son propre cœur.
à l’heure et les serveurs d’applications ont       On gagne ainsi un étage dans la parallélisation
su exploiter ces nouvelles capacités des           de notre application.
processeurs.

Qu’est-ce que ces API ont-elles changé pour
                                                               Java 8 introduit la
les développeurs d’applications de gestion ?                   possibilité de paralléliser
En réalité pas grand-chose. Ces API ont pu                     un traitement donné
être pleinement exploitées (avec d’autres) par
les serveurs d’applications eux-mêmes, mais                    par simple appel d’une
sont restées masquées pour les développeurs.                   unique méthode

                                     MIGRATION ET ENJEUX STRATÉGIQUES EN ENTREPRISE              23
 Les nouveaux concepts de Java 8
Les outils de parallélisation                      matriciel parallèle, sont déjà exploités depuis
                                                   plusieurs années dans ce domaine. Amazon
Paralléliser un traitement donné est une           a ouvert une offre de location de clusters
tâche délicate, très technique et complexe         de GPU en 2010. Dans le domaine des
à faire fonctionner correctement. Du point         supercalculateurs, les processeurs NVidia
de vue purement algorithmique, on constate         Tesla sont utilisés depuis la même époque.
fréquemment qu’un traitement donné ne se
résout pas avec le même algorithme en série        A l’heure actuelle, il est possible d’utiliser
et en parallèle.                                   plusieurs API externes au JDK pour lancer
                                                   des traitements sur de telles architectures.
Aucune API du JDK ne permet de traiter
ce problème spécifique jusqu’en version            Chacune de ces API repose sur un modèle
6. À partir de Java 7, un framework                de programmation qui lui est propre, de
fait son apparition : Fork / Join. Il traite       même que sur des dépendances, Java et
spécifiquement ce point de la parallélisation      natives, propres. Ces solutions sont très
des traitements lourds. Il reste néanmoins         intéressantes mais poseront tôt ou tard
délicat à faire fonctionner, à mettre au point     le problème inhérent à tous les codes
et encore plus à maintenir.                        propriétaires attachés à une technologie, à
                                                   savoir : sa maintenabilité.
Java 8 expose une API particulièrement
simple à mettre en œuvre et efficace               Les efforts portent aujourd’hui sur
pour résoudre ce problème. Il s’agit d’un          l’intégration de tels outils dans le JDK, au
simple appel de méthode. Les gains en              travers du projet « Sumatra ».
performance pour une opération de tri
massif exécutée sur huit cœurs sont de             Le but affiché est de pouvoir exploiter ces
l’ordre d’un facteur 6,5, ce qui est tout à fait   possibilités de façon transparente, efficace
remarquable. La réponse apportée par Java          et maintenable au niveau du JDK lui-même.
8 à la parallélisation est donc celle qu’il faut   Les travaux sur ce point sont encore très
sans aucun doute utiliser.                         en amont et il est donc difficile de prévoir
                                                   leur aboutissement pour une quelconque
Le futur de Java en calcul                         version du JDK.
parallèle
                                                   Les possibilités offertes par ces nouvelles
Reste que les consommateurs de calcul              techniques de parallélisation sont
parallèle n’ont pas attendu Java 8 pour            donc très larges et vont s’amplifier
exécuter des traitements parallèles sur les        dans les années à venir. Examiner si ces
processeurs modernes.                              opportunités peuvent être exploitées dans
                                                   nos applications est une nécessité pour un
Il existe aujourd’hui deux façons de faire du      bénéfice à court terme.
calcul haute performance sur nos machines
classiques. On peut bien entendu exploiter
le multicœur des processeurs Intel, ARM
ou Sparc. Mais on peut également lancer
nos traitements sur des GPU, tels que ceux
embarqués sur les cartes graphiques de
nos PC. Ces processeurs, particulièrement
performants dans le domaine du calcul

24   JAVA 8
Vous pouvez aussi lire