Java 8 débarque enfin avec ses expressions lambda et sa sécurité renforcée
La route a été particulièrement longue
Le 19 mars 2014 à 17h30
3 min
Logiciel
Logiciel
Après un très long développement, la huitième version de l’environnement Java est enfin disponible pour les développeurs de manière officielle. Plus que les moutures précédentes, Java 8 doit remplir de nombreux objectifs, car outre la modernisation d’un langage et son adaptation aux besoins d’aujourd’hui, notamment ceux du « Cloud », Oracle avait également besoin de revoir largement le modèle de sécurité de son produit.
La part belle au développement fonctionnel...
Java 8 est donc la nouvelle version de l’environnement de développement proposé par Oracle. L’actualité des deux dernières années concernant la technologie était essentiellement marquée par la sécurité et ce sont plus de 50 mises à jour qui ont été diffusées pour colmater plusieurs centaines de brèches. On se rappelle d’ailleurs qu’Oracle avait expliqué l’année dernière que cette version 8 serait repoussée pour que la sécurité soit davantage retravaillée.
Mais commençons par les expressions lambda, clairement la nouveauté la plus importante de cette nouvelle version. Il s’agit pour le développeur de découper son code en différentes fonctionnalités qui s’échangent ensuite des informations. Pour Oracle, c’est une réponse directe à l’explosion des langages de type JavaScript et Scala et, en filigrane, au déplacement progressif des produits vers le « Cloud ». Or, ce dernier se trouve essentiellement dans des environnements fortement parallélisés à cause de la présence de multiples processeurs, nécessitant de repenser les architectures logicielles pour en tirer parti.
... et au parallélisme
Cet effort pour axer Java sur le développement parallèle se retrouve dans d’autres nouveautés, notamment les API Streams. Ces dernières permettent justement d’effectuer des traitements parallèles sur de grandes quantités de données. C’est également l’orientation de la nouvelle machine virtuelle JavaScript (Nashorn) qui doit permettre une hausse très sensible des performances quand les serveurs ont à faire avec de fortes charges.
Java 8 dispose d’un très grand nombre de nouveautés mais toutes n’ont pas pour autant été implémentées. À cause notamment des gros travaux sur la sécurité, Oracle a dû faire l’impasse sur le projet Jigsaw, qui devrait apporter des gains notables de modularité. Cette fonctionnalité a été reportée à Java 9.
Quant à la sécurité, la liste des améliorations est particulièrement fournie. On notera par exemple l’intégration de TLS 1.2 côté client, des algorithmes renforcés pour le chiffrement basé sur des mots de passe, le support des algorithmes AEAD, le support de la fonction de hachage SHA-224, une meilleure gestion de la High Entropy Random Number Generation, la prise en charge de PCKS11 sous Windows, le support amélioré de Kerberos 5 ou encore celui du service SASL pour les noms de domaines multiples.
Signalons enfin que de très nombreux outils ont été mis à jour au passage et que la nouvelle version modernise enfin les interfaces proposées dans JavaFX, lui aussi passant à la version 8. La liste complète de tous les changements apportés par Java 8 peut être consultée depuis le site officiel.
Les développeurs intéressés pourront quant à eux récupérer la nouvelle version de l’environnement depuis cette page. Notez que l’IDE IntelliJ a déjà été mis à jour pour prendre en charge Java 8.
Java 8 débarque enfin avec ses expressions lambda et sa sécurité renforcée
-
La part belle au développement fonctionnel...
-
... et au parallélisme
Commentaires (182)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 19/03/2014 à 17h45
Aucune mise à jour détectée par mon PC ! Sur Java.com c’est la 7 update 51 qui est encore proposée !
C’est une honte de la part d’une société comme Oracle !
Le 19/03/2014 à 17h47
Premier message, premier troll ??
Sinon pour l’utilisateur lambda que nous sommes, ça vaut la peine de mettre à jour ou pas vers la version 8 ?
Le 19/03/2014 à 17h51
Ramiel.
Il y a des chances que oui, ils ont due boucher des failles de sécurité
Le 19/03/2014 à 17h51
Le 19/03/2014 à 17h53
avec ses expressions lambda
Supporté depuis C++11…
Ca craint pas un peu un langage managé qui propose moins de fonctionnalité sur sa plateforme qu’un langage natif aussi standard et vieux que le c++? " />
‘fin, je dis pas ça pour dire les java-istes sont des personnes arriérés… Rassurez vous les mecs, c’est toujours mieux que du Delphi…" />
Le 19/03/2014 à 17h55
Bah, quand tu vois que dans les boîtes ils en sont encore à java 6 (dans le meilleur des cas) , que t’as même jamais pu tester le multicatch ou le switch de string, bah t’as plus envie d’aller danser la lambada que d’apprendre à te servir des lambdas…
Le 19/03/2014 à 17h57
Et le c++ c’est à vomir. En 2014 ton langage a pas de garbage collector? Allo? Autant faire du cobol…
Le 19/03/2014 à 17h58
Supporté depuis C++11…
Depuis python 2 (voire 1 mais pas sûr), C#2, php 5.3…
Néanmoins, pour avoir vu et codé quelques codes JAVA 8 avec des lambda et leur intégration dans l’API Stream, je peux dire que ça m’a fait moins détester le Java.
Par contre d’autres choix sont plus douteux…
Le 19/03/2014 à 18h00
Le 19/03/2014 à 18h00
J’ai installé ça ne m’a même pas désinstallé la version 7 ! Faut le faire soit même ! Faites attention vous allez remplir votre disque pour rien !
Le 19/03/2014 à 18h19
Le 19/03/2014 à 18h21
“Remplir votre dique” parce qu’il reste une ancienne version de java. Je sais pas s’il faut rire ou pleurer.
Le 19/03/2014 à 18h26
Le 19/03/2014 à 18h29
. . JavaFX.
Wow.
… …Such native look’n’feel.
…So much integrated.
… . .Wow.
Le 19/03/2014 à 18h32
Le 19/03/2014 à 18h35
Le 19/03/2014 à 18h36
Le 19/03/2014 à 18h43
Le 19/03/2014 à 18h53
Le 19/03/2014 à 18h59
Le 19/03/2014 à 19h01
Le 19/03/2014 à 19h12
Le 19/03/2014 à 19h27
Le 19/03/2014 à 19h31
Mais commençons par les expressions lambda, clairement la nouveauté la plus importante de cette nouvelle version. Il s’agit pour le développeur de découper son code en différentes fonctionnalités qui s’échangent ensuite des informations.
" /> " /> Il s’agit de définir des fonctions anonymes. Par exemple, en Scala :
val lst = List(1, 2, 3)
lst.map(x => x + 1) // ou lst.map(_ + 1)
Va produire List(2, 3, 4)
Le 19/03/2014 à 19h34
Le 19/03/2014 à 19h49
Le 19/03/2014 à 20h03
Le 19/03/2014 à 20h07
Le 19/03/2014 à 20h07
Le 19/03/2014 à 20h08
Le 19/03/2014 à 20h18
Le 19/03/2014 à 20h28
En même temps, java ça pue non?
Bon après ça permet de faire des logiciels plutôt bon, en un temps raisonnable et même de supporter la mobilité accrue des employés. Et puis faut avouer que J1.7 et 1.8 ont de bonnes perf grâce à la compilation à la volée donc ça amenuise un peu les faiblesses.
Le 19/03/2014 à 20h36
Le 19/03/2014 à 20h48
Le 19/03/2014 à 20h49
Le 19/03/2014 à 20h50
Le 19/03/2014 à 21h07
Oui enfin ça ne vaut quand même pas le brainfuck tout ça. Quand on veut écrire un programme concis, lisible et auto-documenté, il n’y a pas photo.
Le 19/03/2014 à 21h24
Le 19/03/2014 à 21h46
Le 19/03/2014 à 22h00
Le 19/03/2014 à 22h08
Le 19/03/2014 à 22h15
Entre
dites donc on a un grand Chelem ici bas ! " />
Le 19/03/2014 à 22h18
Attention la grande nouveauté de Java 8 ce n’est pas les lambdas … Mais les default implementation dans les interfaces.
Car vous voyez faire de l’héritage multiple c’est pas beau… Donc tu implémentes plusieurs interfaces qui ont des implémentations par défaut…
Ils fument quoi chez Oracle?
Le 19/03/2014 à 22h23
Le 19/03/2014 à 22h23
@sr17, belle tentative d’expliquer à un troupeau d’abrutis de trolls que le Saint Graal n’existe pas et que la diversité des langages répond à la diversité des besoins. Sur ce point, c’est parfait.
Par contre tu te vautres sur la fin, à la fois sur le fait que le seul intérêt de Java concernerait le RAD et l’efficience du coding, et également sur la place de la valeur ajoutée du côté du bas niveau (c’est justement plutôt l’inverse: la valeur ajoutée est désormais du côté des couches hautes).
Le 19/03/2014 à 22h51
Le 19/03/2014 à 22h55
j’espère que le nouveau runtime viendra avec une maj de la barre ask.com
… ma préférée
Le 19/03/2014 à 23h02
Le 19/03/2014 à 23h06
Le 19/03/2014 à 23h30
Mouais… Pour moi le java est, et restera, un langage de merde.
Ça permet uniquement à des développeurs inexpérimentés/nuls de sortir de la merde rapidement sans rien comprendre à ce qui se passe réellement en dessous. “T’inquiètes pas, je gère”
Tout ce que le dev java ne fait plus, par feignantise ou par incompétence, c’est le sysadmin qui se le tape en maintenant l’environnement nécessaire à faire marcher tout le merdier qu’est java.
La jvm est censée suivre une norme (j2ee il me semble) pour que n’importe quelle code java tourne dessus. Et bah j’ai plus assez de doigts pour compter le nombre de softs qui ne fonctionne plus après avoir mis à jour la jvm. Donc on garde un magnique système faillible, et pi cé tou…
Le dev n’as plus à s’occuper de nettoyer les objets déréférencé…. Mais à quel prix? rien que de devoir spécifier les xmx et xms est une aberration en soit pour un programme…
java essaye de réinventer tout ce qui est déjà présent dans un OS, mais forcement en moins bien, c’est quoi l’utilité? Quant à gérer des permissions systèmes, et bien c’est magique, tout programme lancé depuis /usr/bin/java… Donc pour faire de la sécurité système apparmor ou selinux… et bien tu peux pas…
Quant au serveur d’application jboss and co… touours sencé simplifier le boulot des développeurs, juste LOL, l’usine à gaz complètement inmaintenable, qui du coup n’est jamais mis à jour. Sauf à avoir une équipe de plusieurs personne dédié à le gérer.
Tant que les choix techniques partent du dev, forcement, java a de beaux jours devant lui. Mais combien de dev sont capable d’administrer une jvm? 10%? Bref…
Voilà, c’est ça java.
Le 19/03/2014 à 23h31
Le 20/03/2014 à 00h52
Le 20/03/2014 à 03h45
Le cauchemar, je vais sur PCI, et je vois une news qui annonce que Java continue au lieu de jeter l’éponge (ses créateurs devraient aller en prison vu toutes les failles de sécurité dont ils sont responsables).
Le 20/03/2014 à 04h33
Le 20/03/2014 à 05h31
Signalons enfin que de très nombreux outils ont été mis à jour au passage et que la nouvelle version modernise enfin les interfaces proposées dans JavaFX, lui aussi passant à la version 8. La liste complète de tous les changements apportés par Java 8 peut être consultée depuis le site officiel.
c.a.d des zolis boutons, des zolies couleurs ? comme a peu près toutes les boites now " /> juste du cosmétique comme d’hab " />
Le 20/03/2014 à 06h41
Le 20/03/2014 à 06h49
Le 20/03/2014 à 07h07
Le 20/03/2014 à 07h08
doublon, à supprimer merci ^^
Le 20/03/2014 à 07h15
Le 20/03/2014 à 07h28
Le 20/03/2014 à 07h41
Le 20/03/2014 à 07h49
Le 20/03/2014 à 07h52
Les Loutres (Lutrinae) sont une sous-famille de mammifères carnivores de la famille des Mustelidés. Il existe plusieurs espèces de loutres, caractérisées par de courtes pattes, des doigts griffus et palmés (aux pattes avant et arrière) et une longue queue.
Cette sous-famille a été décrite pour la première fois en 1838 par le zoologiste Charles Lucien Bonaparte (1803-1857), l’un des neveux de Napoléon Bonaparte.
Dans de nombreux pays les loutres ont disparu de tout ou partie de leurs aire naturelle de répartition, de même que les castors qui partageaient leur milieu de vie. Ces deux espèces-clé font l’objet depuis un siècle environ de protection et de programmes ou projets de réintroduction2 ou confortement de populations par translocation3. La loutre étant particulièrement discrète elle fait souvent l’objet d’un suivi par recherche d’indice (poils, marquage de territoire, pièges photographiques et suivi télémétrique par puce électronique4,5.
Voilà, ça fera au moins un comm’ apportant une quelconque valeur ajoutée à ce fil de discussion.
Le 20/03/2014 à 08h15
Le 20/03/2014 à 08h24
Le 20/03/2014 à 08h25
Le 20/03/2014 à 08h32
Sa me fait marrer cette gueguerre debille a savoir qu’elle est le meilleur language…
Excepter pour les dev amateur qui vont choisir leur langage sur des critères plus ou moins valable (on est plus dans les année 90, la gestion de la ram n’est plus le centre des préoccupation), on choisi un langage pour sa finalité.
Si le C++ est idéale pour faire du bas niveau, dev des pilote ou encore des jeux, il n’est certainement pas adapter a l’informatique de gestion ou le web… (en tous cas j’ai jamais vu d’entreprise, surtout ces dernière année faire du web en CGI/C++)
Par contre .net et java eu le sont, ils sont dailleur fait pour sa, et il n’est pas question de ne pas savoir codé ou d’être feignant (bien que pour un dev la feignantise est un gros plus), mais bien d’utilisé les outils adéquate…
Il ne faut oublié (pour les pro en tous cas) que se qui compte avant tous c’est la productivité et le rendu final, que le code soit fait en bas niveau avec une gestion tres optimisé de la ram, le client il sans fout complètement, par contre si on doit y passé deux semaine au lieux d’une pars-que le bas niveau implique d’y passé plus de temp, la sa le fait toute de suis moin bien
Aprés en lisant les coms de certain, je ne suis pas convaincu que se qui se permétre de critiqué java et/ou le .net ont réellement regardé se que ces langages pérmétait réellement et qu’elles était leur réel atout (il n’y a pas que les perf et la conso ram dans la vie).
Le 20/03/2014 à 08h33
Le 20/03/2014 à 08h34
Le 20/03/2014 à 08h34
Le 20/03/2014 à 08h35
Le 20/03/2014 à 08h40
Le 20/03/2014 à 08h43
Le 20/03/2014 à 08h51
Le 20/03/2014 à 08h51
Le 20/03/2014 à 08h52
Le 20/03/2014 à 09h02
Le 20/03/2014 à 09h16
Java est en tres nette perte de vitesse en ce moment et tarde à se repenser. Les lacunes historiques sont toujours la et les nouveautés font vraiment “usine à gaz”.
Quant à la stratégie d’Oracle, il est à craindre qu’ils pensent Java pour leurs interets et donc le tuent à moyen terme …
Le 20/03/2014 à 09h19
Le 20/03/2014 à 09h20
Le 20/03/2014 à 09h44
Le 20/03/2014 à 09h45
Le 20/03/2014 à 09h51
Sympa cette news, ça permet de se distraire en lisant les commentaires.
Sur ce, je vous quitte, et je retourne coder mon bootstrap en assembleur
" />
Le 20/03/2014 à 09h55
Le 20/03/2014 à 09h56
Le 20/03/2014 à 10h04
Le 20/03/2014 à 10h06
Le 20/03/2014 à 10h18
Continuons avec les posts à valeur ajoutée dans ce fil:
galinette n. féminin: Petite poule, poulette.
Une poule naine, est une poule atteinte de nanisme. Selon les provinces et les patois la poule naine a de nombreuses dénominations : poule de Cayenne, bassette, gallinette…
Il faut distinguer deux types de poules naines :
Différents noms en usage:
Les poules naines sont communément appelées en France sous le terme anglophone de bantam, le club officiel en France affilié à la Société centrale d’aviculture de France qui publie le standard officiel et regroupe les clubs et éleveurs de poules naines s’appelle le Bantam Club français.
But de l’élevage:
La conduite d’un élevage de poules naines ne diffère guère de celui des grandes races. Il y a plusieurs raisons de préférer l’élevage des poules naines aux grandes races :
Certaines races naines sont sélectionnées pour leur aptitude à couver (nègre-soie, Pictave…), ce qui est est recherché par les éleveurs qui veulent une incubation naturelle de leurs volailles (poussins, canetons…), ainsi que certains chasseurs qui leur confient leurs œufs de faisans et perdrix.
Le 20/03/2014 à 10h23
Le 20/03/2014 à 10h40
Le 20/03/2014 à 10h45
Le 20/03/2014 à 10h48
Le 20/03/2014 à 10h53
Le 20/03/2014 à 11h01
Le 20/03/2014 à 11h02
Toujours les mêmes débats " />
Pour le moment aucun langage ne remplit tous les usages. Ca devrait être le cas quand M# sortira " />
En attendant je code en C++ pour la programmation cliente et .net (C#) sur serveur.
sinon visual studio 2012 consomme 161Mo chez moi avec une dizaine de projets ouverts et une centaine de fichiers sources.
Pour le fait que les hello world consomment plus de ram en java ou .net c’est parce que le runtime est chargé dans le processus de l’application.
Le 20/03/2014 à 11h06
Pour revenir à la news : ne pensez vous pas que les lambdas expressions vont nuire à la lisibilité du code ?
Franchement, quel intérêt, à part mettre des miettes de code partout ?
Le 20/03/2014 à 11h09
Le 20/03/2014 à 11h14
Le 20/03/2014 à 11h16
Le 20/03/2014 à 11h17
Le 20/03/2014 à 11h22
Le 20/03/2014 à 11h27
Le 20/03/2014 à 11h28
Le 20/03/2014 à 11h30
Le 20/03/2014 à 11h32
Le 20/03/2014 à 11h34
Le 20/03/2014 à 11h37
Le 20/03/2014 à 11h43
Le 20/03/2014 à 11h55
Le 20/03/2014 à 12h09
Le 20/03/2014 à 12h13
Le 20/03/2014 à 12h15
Le 20/03/2014 à 12h54
Le 20/03/2014 à 12h58
Le 20/03/2014 à 12h59
Le 20/03/2014 à 13h03
Le 20/03/2014 à 13h04
Le 20/03/2014 à 13h07
Le 20/03/2014 à 13h10
Le 20/03/2014 à 13h11
Le 20/03/2014 à 13h14
Le 20/03/2014 à 13h22
Le 20/03/2014 à 13h32
Le 20/03/2014 à 13h33
Le 20/03/2014 à 13h37
Le 20/03/2014 à 14h11
Que pensez-vous de la montée de Node.js vs Java.
J’ai beaucoup de mal à m’adapter à Javascript car je viens d’un environement Objet (C++, Java). Cependant je m’efforce de comprendre le monde prototypé.
Avec Google derrière Node.js et un stack full JS: Angular/Node/Mongo cela nous fait qu’un langage à gérer et les performances sont plutôt bonnes.
Maintenant c’est beaucoup moins mature en terme de framework que Python, Ruby et Java :(
Le 20/03/2014 à 14h12
Le 20/03/2014 à 14h29
Le 20/03/2014 à 14h42
Si seulement Python pouvait avoir un typage plus strict et autant d’outils que pour le Java… On pourrait simplement arrêter d’utiliser le Java et utiliser un langage plaisant à utiliser. Vous savez, pas un C++ simplifié. Un langage qui permet d’exprimer en peu de lignes ce qu’on cherche à faire et de manière élégante.
Le 20/03/2014 à 14h53
Le 20/03/2014 à 15h02
Le 20/03/2014 à 15h09
Le 20/03/2014 à 15h14
Le 20/03/2014 à 15h51
Le 20/03/2014 à 19h16
Le 20/03/2014 à 19h46
Le 20/03/2014 à 20h33
Le 20/03/2014 à 22h46
Le 21/03/2014 à 00h14
Le 21/03/2014 à 00h34
Le 21/03/2014 à 00h41
Le 21/03/2014 à 00h55
Le 21/03/2014 à 05h23
Le 21/03/2014 à 08h57
Le 21/03/2014 à 10h25
Le 21/03/2014 à 15h35
Le 21/03/2014 à 15h38
Le 21/03/2014 à 15h46
Le 21/03/2014 à 15h52
Le 21/03/2014 à 16h04
Le 21/03/2014 à 18h06
Le 21/03/2014 à 18h36
Le 21/03/2014 à 19h43
Le 21/03/2014 à 21h13
Le 21/03/2014 à 23h08
Le 21/03/2014 à 23h22
Le 21/03/2014 à 23h31
Le 21/03/2014 à 23h49
Le 22/03/2014 à 00h16
Le 22/03/2014 à 00h29
Le 22/03/2014 à 00h41
Le 22/03/2014 à 01h07
Le 22/03/2014 à 01h13
Le 22/03/2014 à 01h26
Le 22/03/2014 à 01h32
Le 22/03/2014 à 02h06
Le 22/03/2014 à 20h44
Il faut pas oublier que pour le code managé il est aussi possible de faire des optimisations conséquente mais pour ça il faut une bonne connaissance du langage.
Ce qui est bien comme on a un code intermédiaire qui est exécuté par la VM, si on récupère une VM optimisé on aura un programme plus performant sans même recompilé notre projet.
Le 22/03/2014 à 21h03
Le 22/03/2014 à 21h34
Le 23/03/2014 à 12h05
Le 23/03/2014 à 12h26
Si on regarde l’histoire de l’informatique les grands changements ont souvent été accompagnés par de grosses avancées au niveau des compilateurs et langages.
M# est à Midori ce que le langage C est à Unix.
Le 23/03/2014 à 13h32
Le 23/03/2014 à 17h20
Le 23/03/2014 à 17h55
Le 23/03/2014 à 18h48
Le 24/03/2014 à 07h17
Le 24/03/2014 à 13h59
Le 24/03/2014 à 21h46
Le 24/03/2014 à 22h57
Le 25/03/2014 à 00h38
Le 25/03/2014 à 02h00