{"id":34299,"date":"2020-05-25T08:23:55","date_gmt":"2020-05-25T07:23:55","guid":{"rendered":"https:\/\/blog.jetbrains.com\/fr\/?p=748"},"modified":"2020-05-25T09:46:27","modified_gmt":"2020-05-25T08:46:27","slug":"25-choses-que-nous-aimons-dans-java","status":"publish","type":"post","link":"https:\/\/blog.jetbrains.com\/fr\/2020\/05\/25\/25-choses-que-nous-aimons-dans-java\/","title":{"rendered":"25 choses que nous aimons dans Java"},"content":{"rendered":"JetBrains aime tous les langages de programmation et tous les types de d\u00e9veloppeurs, mais aujourd'hui c'est Java que nous mettons en avant\u00a0car ce mois-ci, en mai 2020, Java f\u00eate ses 25\u00a0ans\u00a0!\u00a0Nous profitons donc de cette occasion particuli\u00e8re pour partager 25 choses que nous aimons \u00e0 propos de Java et de la JVM.\r\n\r\n\r\n\r\n\r\nR\u00e9trocompatibilit\u00e9\r\nJava est l'un des seuls langages capable d'ex\u00e9cuter du code con\u00e7u il y a 25\u00a0ans sur une version moderne de Java.\u00a0Les d\u00e9veloppeurs du langage prennent la r\u00e9trocompatibilit\u00e9 tr\u00e8s au s\u00e9rieux et de nombreuses organisations choisissent Java comme principale plateforme de d\u00e9veloppement car elles savent que le code fonctionnera encore sur la JVM pour des ann\u00e9es.\r\nMaturit\u00e9\r\nIl y a beaucoup d'avantages \u00e0 exister depuis longtemps.\u00a0Au cours des 25 derni\u00e8res ann\u00e9es, les d\u00e9veloppeurs ont \u00e9crit des applications en Java pour un grand nombre de secteurs et types d'entreprises, et pour diff\u00e9rentes plateformes.\u00a0Parall\u00e8lement, depuis 25 ans, les d\u00e9veloppeurs apprennent ce langage dans des \u00e9coles, des universit\u00e9s, des boot camps et au travail.\u00a0Ce vaste \u00e9cosyst\u00e8me a eu le temps de tirer des enseignements de ses exp\u00e9riences et continue de se d\u00e9velopper.\u00a0Java, et les probl\u00e8mes qu'il peut r\u00e9soudre, est bien document\u00e9 et largement soutenu par des distributeurs, des associations et des utilisateurs.\u00a0De plus, la maturit\u00e9 et la large adoption de Java g\u00e9n\u00e8rent de nombreuses opportunit\u00e9s d'emplois pour les d\u00e9veloppeurs souhaitant coder en Java\u00a0!\r\nAm\u00e9lioration constante\r\nL'\u00e9volution de la plateforme et du langage contraste avec sa r\u00e9trocompatibilit\u00e9 et sa maturit\u00e9.\u00a0Depuis 2017 (Java\u00a09), une nouvelle version a \u00e9t\u00e9 publi\u00e9e tous les six mois, ce qui a permis un flux constant de modifications et d'am\u00e9liorations du langage.\u00a0Par ailleurs, avec les fonctionnalit\u00e9s en preview, le langage exp\u00e9rimente de nouvelles syntaxes, b\u00e9n\u00e9ficie des retours d'exp\u00e9rience des d\u00e9veloppeurs et standardise les nouvelles fonctionnalit\u00e9s les plus \u00e0 m\u00eame de satisfaire les utilisateurs.\r\n\u00c9quilibre\r\nJava a un \u00e9quilibre difficile \u00e0 trouver entre la r\u00e9trocompatibilit\u00e9 et l'ouverture sur l'avenir.\u00a0L'approche actuelle qui consiste \u00e0 valoriser la r\u00e9trocompatibilit\u00e9 et \u00e0 publier une version tous les six mois, avec toutefois une version LTS (long term support) tous les trois ans, semble parvenir \u00e0 un juste \u00e9quilibre.\u00a0Le langage est capable d'\u00e9voluer en fournissant des avertissements pour les fonctionnalit\u00e9s obsol\u00e8tes qui seront supprim\u00e9es et en pr\u00e9voyant des remplacements pour tout ce qui est susceptible de dispara\u00eetre.\r\n\r\nCeux qui souhaitent une plus grande stabilit\u00e9 peuvent rester sur les versions LTS.\u00a0Pour r\u00e9duire les risques au moment de la mise \u00e0 jour, ils peuvent effectuer des tests p\u00e9riodiques sur les versions semestrielles.Ceux qui souhaitent effectuer une mise \u00e0 jour tous les six mois peuvent passer \u00e0 la derni\u00e8re version de Java chaque fois qu'elle est publi\u00e9e.\u00a0Les d\u00e9veloppeurs qui veulent essayer une nouvelle syntaxe avant m\u00eame qu'elle ne soit standardis\u00e9e peuvent activer les fonctionnalit\u00e9s en preview et ceux qui veulent le faire d\u00e8s que possible peuvent m\u00eame utiliser la version Early Access.Les \u00e9quipes utilisant des versions modernes de Java peuvent vraiment b\u00e9n\u00e9ficier du meilleur de tous les mondes.\r\nStandards\r\nLes standards ne sont peut-\u00eatre pas aussi int\u00e9ressants pour un d\u00e9veloppeur que les fonctionnalit\u00e9s du langage, mais le fait d'avoir des standards pour Java, pour Java EE et Jakarta EE, et pour les cas d'utilisation que les d\u00e9veloppeurs rencontrent couramment, facilite la vie des d\u00e9veloppeurs.Comprendre l'utilisation de JDBC pour dialoguer avec une base de donn\u00e9es \u00e9vite d'avoir \u00e0 se soucier de la mani\u00e8re dont le pilote de la base de donn\u00e9es est impl\u00e9ment\u00e9, car notre fa\u00e7on d'interagir avec elle est toujours la m\u00eame.Le JCP est l'un des processus utilis\u00e9s pour d\u00e9terminer les standards pour Java.\r\n\r\nLa documentation Java Language Specification d\u00e9crit les concepts de Java et comment le compilateur doit fonctionner.\u00a0Cela comprend le Java Memory Model, qui peut permet d'anticiper comment une application pourrait se comporter, ind\u00e9pendamment de la JVM ou du mat\u00e9riel.\u00a0La documentation Java Virtual Machine Specification pr\u00e9sente les d\u00e9tails de niveau bas dans la JVM.\u00a0Ces sp\u00e9cifications permettent aux JDK distribu\u00e9s par diff\u00e9rents fournisseurs, fonctionnant sur diff\u00e9rentes plateformes, de se comporter de mani\u00e8re sp\u00e9cifique et pr\u00e9visible.\u00a0Ce qui nous conduit \u00e0...\r\nWrite once, run anywhere (\u00e9crivez une fois, ex\u00e9cutez partout)\r\nWORA \u00e9tait l'une des id\u00e9es novatrices \u00e0 l'origine de Java, ce qui semble si \u00e9vident de nos jours que nous ne r\u00e9alisons pas \u00e0 quel point cette id\u00e9e \u00e9tait r\u00e9volutionnaire.\u00a0J'ai travaill\u00e9 pour une tr\u00e8s grande entreprise qui est pass\u00e9e \u00e0 Java en 2002 principalement parce qu'elle disposait d\u00e9j\u00e0 de nombreuses machines diff\u00e9rentes : le fait de pouvoir ex\u00e9cuter de nouvelles applications Java sur ces machines au lieu de devoir acheter du mat\u00e9riel sp\u00e9cifique pour les applications l'a d\u00e9cid\u00e9 \u00e0 opter pour Java.\u00a0Aujourd'hui, \u00e0 l'\u00e8re du Cloud, cela peut sembler moins pertinent, mais bien que nous ne voyions pas toujours ce concept de WORA en action nous en tirons toujours profit.\u00a0Et bien s\u00fbr, si vous utilisez IntelliJ IDEA (ou NetBeans), vous profitez des avantages du WORA sur ordinateur.\r\nPerformance\r\nCela surprend parfois ceux qui sont moins familiers avec Java, mais Java est un langage tr\u00e8s performant.\u00a0C'est une plateforme mature qui b\u00e9n\u00e9ficie de 25 ans d'am\u00e9lioration des performances, de nombreux r\u00e9cup\u00e9rateurs de m\u00e9moire avec diff\u00e9rents profils de performances ; et la JVM optimise notre code \u00e0 l'ex\u00e9cution pour nos cas d'utilisation r\u00e9els en production bien mieux que ne pourraient le faire la plupart des d\u00e9veloppeurs.\u00a0Java est par exemple largement utilis\u00e9 dans le monde de la finance, qui d\u00e9pend de transactions \u00e0 faible latence et et requiert des performances pr\u00e9visibles.\r\nNettoyage de la m\u00e9moire\r\nLe nettoyage automatique de la m\u00e9moire est une autre chose que, 25 ans plus tard, nous consid\u00e9rons g\u00e9n\u00e9ralement comme allant de soi.\u00a0Nous n'avons pas \u00e0 r\u00e9fl\u00e9chir \u00e0 la mani\u00e8re dont la m\u00e9moire est allou\u00e9e dans nos applications, ni \u00e0 la mani\u00e8re de la lib\u00e9rer.\u00a0Chaque JVM a un ou plusieurs algorithmes de nettoyage de la m\u00e9moire diff\u00e9rents, nous pouvons donc en choisir un qui fonctionne bien pour notre application sans avoir \u00e0 trop nous pr\u00e9occuper de son fonctionnement interne, nous pouvons continuer \u00e0 nous consacrer \u00e0 l'\u00e9criture de la logique du syst\u00e8me pour nos applications.\r\nObservabilit\u00e9 et gestion\r\nSi nous souhaitons savoir ce qui se passe pendant le fonctionnement de notre application, nous disposons d'un grand nombre d'outils.\u00a0Beaucoup d'entre eux sont m\u00eame gratuits, notamment depuis que Java Flight Recorder et Mission Control ont \u00e9t\u00e9 int\u00e9gr\u00e9s \u00e0 OpenJDK (depuis Java 11).\u00a0Des outils comme JMX permettent m\u00eame une gestion dynamique de nos applications.\r\nLa machine virtuelle Java (JVM)\r\nLa plupart des fonctionnalit\u00e9s que nous venons de mentionner sont des fonctionnalit\u00e9s de la JVM, mais nous voulons \u00e9voquer la JVM sp\u00e9cifiquement, et notamment le fait qu'elle soit s\u00e9par\u00e9e du langage Java.\u00a0Il y a de nombreuses raisons d'aimer la JVM, parmi lesquelles certaines des choses que nous avons d\u00e9j\u00e0 \u00e9voqu\u00e9es\u00a0: WORA, l'optimisation de l'ex\u00e9cution, les performances, le choix des distributeurs, etc., dont une grande partie est rendue possible gr\u00e2ce aux standards et aux sp\u00e9cifications.\u00a0Il est important que la JVM soit s\u00e9par\u00e9e du langage Java aussi car cela rend possible la cr\u00e9ation de diff\u00e9rents langages \u00e0 partir de la plateforme en tirant parti de toutes les fonctionnalit\u00e9s de la JVM, tout en fournissant diff\u00e9rents types de caract\u00e9ristiques syntaxiques et linguistiques.\r\nAutres langages de la JVM\r\nSi Java a surv\u00e9cu, et a m\u00eame continu\u00e9 d'\u00e9voluer, dans les ann\u00e9es creuses entre Java 6 et 8 (Java 7 a quelques bonnes fonctionnalit\u00e9s mais n'a pas \u00e9t\u00e9 consid\u00e9r\u00e9e comme une version majeure par les d\u00e9veloppeurs), c'est notamment gr\u00e2ce aux autres langages de la JVM.\u00a0Chez JetBrains, notre pr\u00e9f\u00e9r\u00e9 est bien s\u00fbr Kotlin, mais la JVM a aussi permis la cr\u00e9ation d'autres langages populaires tels que Groovy, Scala, Clojure et JRuby, et un grand nombre d'autres langages, nouveaux ou r\u00e9impl\u00e9ment\u00e9s.\u00a0Dans de nombreux cas, l'interop\u00e9rabilit\u00e9 entre ces langages et le Java classique nous permet de tirer parti de cette diversit\u00e9.\r\nBiblioth\u00e8ques et frameworks\r\nL'un des plus grands avantages est l'\u00e9norme choix que nous avons en mati\u00e8re de biblioth\u00e8ques et de frameworks, dont un grand nombre sont open source et gratuits.\u00a0Des frameworks populaires tels que Spring, et Spring Boot en particulier, permettent de cr\u00e9er facilement toute sorte d'applications, allant de petits services \u00e0 des applications plus complexes et de grande envergure.\u00a0Les standards font qu'il est souvent assez facile de comprendre et d'utiliser une biblioth\u00e8que lorsque l'on a d\u00e9j\u00e0 utilis\u00e9 quelque chose de similaire dans un autre contexte.\u00a0Gr\u00e2ce \u00e0 la maturit\u00e9 de Java et \u00e0 l'adoption pr\u00e9coce de l'open source par la communaut\u00e9, il existe g\u00e9n\u00e9ralement une solution aux probl\u00e8mes courants et que nous n'avons donc pas \u00e0 r\u00e9inventer la roue.\u00a0Cela signifie \u00e9galement qu'un grand nombre de ces solutions sont utilis\u00e9es depuis longtemps et qu'elles ont donc d\u00e9j\u00e0 \u00e9t\u00e9 bien test\u00e9es, comprises et document\u00e9es.\r\nOutils de build et gestion des d\u00e9pendances\r\nIl est loin le temps o\u00f9 un pauvre d\u00e9veloppeur (comme moi\u00a0!) devait chercher sur Internet un fichier JAR inconnu contenant une classe apparemment requise pour le code qu'il essaye d'ex\u00e9cuter.\u00a0Maven et Gradle ont particuli\u00e8rement facilit\u00e9 la g\u00e9n\u00e9ration et le d\u00e9ploiement d'une application, mais aussi la mise en place d'un projet de mani\u00e8re standard avec toutes les d\u00e9pendances requises.\u00a0Il est facile de commencer \u00e0 coder dans un projet nouveau ou existant.\u00a0Les r\u00e9f\u00e9rentiels publics comme Maven Central et Bintray simplifient la recherche et la publication de biblioth\u00e8ques.\r\nJUnit et les tests automatis\u00e9s\r\nJUnit a \u00e9t\u00e9 cr\u00e9\u00e9 en 1997, il est donc presque aussi vieux que Java\u00a0!C'est de loin le framework de tests automatis\u00e9s le plus r\u00e9pandu dans le monde de Java, et dans la mesure o\u00f9 l'on suppose qu'un framework de test est n\u00e9cessaire pour tout nouveau projet Java, JUnit et TestNG sont tous les deux fournis avec IntelliJ IDEA.\u00a0Il est fort probable que les frameworks de tests modernes pour de nombreux langages soient bas\u00e9s sur les id\u00e9es de JUnit, que nous consid\u00e9rons aujourd'hui comme des \u00e9vidences.\u00a0La culture de la communaut\u00e9 Java en mati\u00e8re de tests automatis\u00e9s doit beaucoup \u00e0 cette seule biblioth\u00e8que.\r\nEDI\r\nQue vous estimiez que la verbosit\u00e9 de Java n\u00e9cessite un EDI, ou que Java puisse r\u00e9ellement tirer parti d'un EDI en raison de son typage statique, le fait est que les d\u00e9veloppeurs Java aiment tout particuli\u00e8rement les EDI.\u00a0L'utilisation efficace d'un EDI (qu'il s'agisse d'IntelliJ IDEA, d'Eclipse ou de NetBeans) peut consid\u00e9rablement am\u00e9liorer la productivit\u00e9 d'un d\u00e9veloppeur, gr\u00e2ce \u00e0 la saisie semi-automatique, la g\u00e9n\u00e9ration de code, l'ex\u00e9cution de tests, le d\u00e9bogage, la navigation et un , entre autres fonctionnalit\u00e9s.\u00a0Les d\u00e9veloppeurs Java sont g\u00e9n\u00e9ralement tr\u00e8s enthousiastes quant aux avantages que peut leur apporter un EDI.\r\nCommunaut\u00e9\r\nLa communaut\u00e9 Java est une communaut\u00e9 importante, mature, dynamique et accueillante.\u00a0Il existe des groupes d'utilisateurs Java dans de nombreuses villes du monde, mais aussi un groupe d'utilisateurs Java virtuel.\u00a0Les Java Champions sont des leaders techniques reconnus dans le monde de Java, qui se sont fait conna\u00eetre en partageant des connaissances utiles pour les d\u00e9veloppeurs Java et JVM.\u00a0Java a une \u00e9norme communaut\u00e9 open source, incluant le JDK lui-m\u00eame via OpenJDK.\u00a0La communaut\u00e9 Java valorise l'apprentissage, l'enseignement et l'am\u00e9lioration constante, se soucie des standards et des bonnes pratiques et les applique de fa\u00e7on pragmatique.\r\nL'aspect humain\r\nLorsque j'ai demand\u00e9 aux d\u00e9veloppeurs ce qu'ils appr\u00e9ciaient le plus \u00e0 propos de Java, beaucoup d'entre eux ont sp\u00e9cifiquement cit\u00e9 des personnes du monde de Java qui les ont influenc\u00e9s.\u00a0Il s'agit de coll\u00e8gues, de professeurs, mais aussi de personnes telles que Brian Goetz, Angie Jones, Georges Saab, Mala Gupta, Venkat Subramaniam.\u00a0Certaines personnes ont m\u00eame parl\u00e9 de moi.\u00a0Personnellement, j'ai initialement rejoint le monde de Java car j'ai appris ce langage \u00e0 l'universit\u00e9 et qu'il donnait acc\u00e8s de nombreuses opportunit\u00e9s d'emploi, mais ce sont les personnes qui en font partie, et l'aide et le soutien qu'elles m'ont apport\u00e9s, qui m'ont fait rester.\r\nJavadoc et documentation\r\nJava fait de la documentation de l'API un \u00e9l\u00e9ment essentiel du langage via Javadoc.\u00a0Les trois diff\u00e9rents types de commentaires (Javadoc, bloc et ligne) montrent clairement quel type de commentaire un d\u00e9veloppeur laisse.\u00a0Javadoc encourage les d\u00e9veloppeurs \u00e0 laisser une documentation utile aux autres d\u00e9veloppeurs qui appellent une m\u00e9thode, ou utilisent une classe ou un package.\u00a0Si un d\u00e9veloppeur ne peut pas trouver d'informations d\u00e9taill\u00e9es sur une biblioth\u00e8que ou un fragment de code, il existe g\u00e9n\u00e9ralement un Javadoc qui peut le mettre sur la bonne voie.\r\n\r\nDe plus, l'\u00e9cosyst\u00e8me Java semble g\u00e9n\u00e9ralement attendre (et fournir) une documentation de bonne qualit\u00e9 pour les d\u00e9veloppeurs.\u00a0Les participants \u00e0 des projets open source sont encourag\u00e9s \u00e0 r\u00e9pondre aux demandes de commentaires Javadoc ou de documentation, et les d\u00e9veloppeurs du monde entier  posent des questions et y r\u00e9pondent sur StackOverflow, ou r\u00e9digent des articles sur des solutions \u00e0 des probl\u00e8mes sp\u00e9cifiques.\r\nOpen source\r\nNon seulement la communaut\u00e9 Java a adopt\u00e9 l'open source tr\u00e8s t\u00f4t, mais maintenant le JDK lui-m\u00eame est \u00e9galement open source via OpenJDK.\u00a0L'open source facilite la participation et la collaboration entre les diff\u00e9rents distributeurs et avec les particuliers.\u00a0Il est \u00e9galement passionnant de pouvoir observer le code de Java lui-m\u00eame.\u00a0Le code open source offre une formidable opportunit\u00e9 aux d\u00e9veloppeurs de tirer profit de l'exp\u00e9rience de personnes ayant travaill\u00e9 dur pour \u00e9tudier et r\u00e9soudre des probl\u00e8mes complexes.\r\nGratuit\u00e9\r\nLa plateforme Java et de nombreux outils parmi les plus populaires utilis\u00e9s dans l'\u00e9cosyst\u00e8me Java sont accessibles gratuitement aux d\u00e9veloppeurs comme aux organisations.\u00a0M\u00eame apr\u00e8s avoir modifi\u00e9 son mod\u00e8le de licences et son support avec Java 11, Oracle (et de nombreux autres distributeurs) a continu\u00e9 \u00e0 fournir un moyen d'utiliser le langage gratuitement en production. Les projets open source, outils de build et EDI mentionn\u00e9s dans cet article sont gratuits ou disposent aussi d'une version gratuite pour ceux d'entre eux qui sont payants. Cela rend Java particuli\u00e8rement attrayant pour les d\u00e9veloppeurs qui se lancent et pour les organisations qui ne disposent pas d'un gros budget.\r\nLangage\u00a0orient\u00e9 objet\r\nLa programmation orient\u00e9e objet n'est bien s\u00fbr pas la seule pratique valable et chaque paradigme a ses avantages et ses inconv\u00e9nients.\u00a0Java a \u00e9t\u00e9 con\u00e7u comme un langage OO d\u00e8s le d\u00e9but, et de nombreux exemples de mod\u00e8les de conception et d'autres bonnes pratiques de codage OO sont mis en \u00e9vidence dans Java.\u00a0Si vous recherchez un langage de programmation orient\u00e9 objet, Java devrait figurer en haut de votre liste des langages \u00e0 essayer.\r\n\u00c9volution et adaptation\r\nJava \u00e9tait et reste un langage de programmation orient\u00e9 objet.\u00a0Mais il a \u00e9galement adopt\u00e9 avec succ\u00e8s certains concepts de la programmation fonctionnelle (comme les expressions lambda et les structures de donn\u00e9es immuables) et les a bien adapt\u00e9s au paradigme OO.\u00a0L'inf\u00e9rence de type (par exemple var) nous permet de conserver les avantages d'un langage typ\u00e9 statiquement, mais avec moins d'artifices.\u00a0L'informatique est une discipline encore relativement jeune, mais \u00e0 mesure que nous apprenons des choses, nous pouvons les appliquer \u00e0 nos outils existants.\u00a0Java (le langage mais aussi l'\u00e9cosyst\u00e8me) \u00e9volue constamment en fonction des nouvelles tendances et bonnes pratiques, et aussi en observant le fonctionnement des choses dans le monde r\u00e9el.\r\n\r\nJava b\u00e9n\u00e9ficie \u00e9galement de la syntaxe et des id\u00e9es d'autres langages de la JVM, ce qui permet de voir ce qui fonctionne ou non dans un univers Java classique.\u00a0M\u00eame les processus et outils que Java utilise pour continuer d'\u00e9voluer, comme le JCP et OpenJDK, s'adaptent pour rester en phase avec cette \u00e9volution constante.\u00a0Cette \u00e9volution et cette adaptation font partie de l'\u00e9quilibre que Java doit trouver.\r\nFocus sur la lisibilit\u00e9\r\nLe code Java est souvent lisible, m\u00eame pour les programmeurs n'utilisant pas ce lanagage.\u00a0Le langage tend \u00e0 \u00eatre plus expressif plut\u00f4t que trop concis, ce qui facilite la compr\u00e9hension lors de la lecture.\u00a0Les d\u00e9veloppeurs du langage n'ont pas mis en place de fonctionnalit\u00e9s telles que la surcharge d'op\u00e9rateur, car ils estiment qu'il est important de ne pas \u00eatre surpris par un comportement personnalis\u00e9 inattendu.\u00a0Il y a une tendance \u00e0 \u00e9viter la \"magie\", dans le langage comme dans les frameworks. Bien que certains frameworks utilisent des concepts tels que Convention plut\u00f4t que configuration pour faire des choses sans qu'un d\u00e9veloppeur ait \u00e0 s'en occuper imp\u00e9rativement, on s'\u00e9loigne (par exemple) de la pratique de l'AOP avec des annotations, pour se tourner davantage vers l'utilisation d'annotations pour la documentation et les contr\u00f4les d'analyse statique.\u00a0La communaut\u00e9 et l'\u00e9cosyst\u00e8me ont tendance \u00e0 aimer les standards et les bonnes pratiques, de sorte que le code Java suit souvent des r\u00e8gles similaires sur des projets tr\u00e8s diff\u00e9rents.\r\nFonctionnalit\u00e9s du langage\r\nNous avons abord\u00e9 23 choses que nous aimons \u00e0 propos de Java mais n'avons pas mentionn\u00e9 une seule fonctionnalit\u00e9\u00a0!\u00a0En effet, nous limiter \u00e0 seulement 25 fonctionnalit\u00e9s nous semblait extr\u00eamement difficile et la plupart des choses que nous aimons dans Java ne sont pas forc\u00e9ment li\u00e9es \u00e0 la syntaxe ou aux fonctionnalit\u00e9s.\u00a0Nous souhaitons tout de m\u00eame citer quelques-unes des fonctionnalit\u00e9s pr\u00e9f\u00e9r\u00e9es des d\u00e9veloppeurs\u00a0:\r\n\r\n\tAPI Collections\u00a0: cela fait longtemps qu'elle est avec nous et elle nous a \u00e9t\u00e9 tr\u00e8s utile\u00a0!\r\n\tM\u00e9thodes pratiques de fabrication pour les collections\u00a0: facilite grandement la cr\u00e9ation de collections non modifiables.\r\n\tAPI Streams\u00a0: un tr\u00e8s bel ajout \u00e0 l'API Collections, qui est en \u00e9volue constamment depuis Java 8.\u00a0Les flux parall\u00e8les ont ajout\u00e9 une nouvelle fa\u00e7on d'utiliser les \u00e9quipements modernes.\r\n\tExpressions lambda\u00a0: tr\u00e8s pratiques et utiles, particuli\u00e8rement avec l'API Streams.\r\n\tOptional\u00a0: une belle fa\u00e7on d'exprimer qu'une m\u00e9thode pourrait ne pas vous donner quelque chose (et nous \u00e9vite d'avoir \u00e0 nous prot\u00e9ger contre les NullPointerException\u00a0!).\u00a0Et nous sommes toujours ravis de d\u00e9couvrir chaque am\u00e9lioration apport\u00e9e \u00e0 Optional depuis Java 8.\r\n\tjava.time\u00a0: la derni\u00e8re API pour travailler avec les dates et les heures est une am\u00e9lioration bienvenue.\r\n\tExceptions v\u00e9rifi\u00e9es\u00a0: les avis sont partag\u00e9s entre les exceptions v\u00e9rifi\u00e9es et les exceptions d'ex\u00e9cution, mais les exceptions v\u00e9rifi\u00e9es sont au moins l\u00e0 pour les personnes qui souhaitent les utiliser.\r\n\tAnnotations\u00a0: les annotations sont (entre autres choses) comme de la documentation que le compilateur peut v\u00e9rifier ou des notes pour un framework afin de r\u00e9aliser un gros travail.\r\n\tJShell\u00a0: on peut maintenant s'amuser avec Java dans un REPL\r\n\tvar\u00a0: l'inf\u00e9rence de type permet de \"r\u00e9duire le bruit\" du code si elle est utilis\u00e9e de mani\u00e8re judicieuse.\r\n\tModificateurs d'acc\u00e8s et modularit\u00e9\u00a0: Java permet (et encore plus depuis Java 9) d'\u00eatre explicite sur le code qui peut acc\u00e9der \u00e0 tel ou tel champ, m\u00e9thode, classe et module.\r\n\tExpressions Switch\u00a0: maintenant si on utilise Switch, c'est beaucoup moins moche\u00a0!\r\n\tNullPointerExceptions utiles\u00a0: qui n'aime pas une bonne NullPointerException\u00a0?\u00a0D\u00e9sormais, les exceptions donnent aux d\u00e9veloppeurs des informations beaucoup plus utiles sur ce qui \u00e9tait null.\r\n\tFonctionnalit\u00e9s en pr\u00e9visualisation\u00a0: on adore les fonctionnalit\u00e9s en pr\u00e9visualisation\u00a0!\u00a0Nous sommes tr\u00e8s enthousiastes concernant les enregistrements, la reconnaissance de sch\u00e9mas pour instanceof et les blocs de texte.\r\n\r\nL'avenir\r\nDe nouvelles fonctionnalit\u00e9s sont disponibles tous les six mois et chaque nouvelle version LTS offre g\u00e9n\u00e9ralement de meilleures performances \u00e0 toute application qui l'utilise.\u00a0Java 15, pr\u00e9vu pour septembre 2020, devrait proposer\u00a0: les classes cach\u00e9es, les blocs de texte, la mise \u00e0 jour des previews pour les Records, le filtrage par motif pour instanceof, ainsi qu'une preview de classes scell\u00e9es.\r\n\r\nPlus tard, nous esp\u00e9rons \u00e9galement voir, entre autres\u00a0: une utilisation simple et l\u00e9g\u00e8re avec Project Loom, les types inline avec Project Valhalla, plus de modifications du langage avec Project Amber, telles que les restes de lambda, que  Project Panama permette aux programmeurs d'acc\u00e9der plus facilement aux API \u00e9trang\u00e8res, des temps de d\u00e9marrage plus courts gr\u00e2ce \u00e0 Project Leydon, de nouvelles am\u00e9liorations pour les diff\u00e9rents garbage collectors.\r\n\r\nL'avenir est prometteur pour Java\u00a0!\r\n\r\nAuteur de l'article original en anglais :\u00a0Trisha Gee","protected":false},"excerpt":{"rendered":"JetBrains aime tous les langages de programmation et tous les types de d\u00e9veloppeurs, mais aujourd'hui c'est Java que nous mettons en avant\u00a0car ce mois-ci, en mai 2020, Java f\u00eate ses 25\u00a0ans\u00a0!\u00a0Nous prof","protected":false},"author":{"name":"Delphine Massenhove","link":"https:\/\/blog.jetbrains.com\/fr\/author\/delphine-massenhovejetbrains-com"},"featured_media":34300,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[],"tags":[155],"cross-post-tag":[],"acf":[],"featured_image":"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/05\/fr-25-Things-We-Love-About-Java.png","_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34299"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"},{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=34299"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34299\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/34300"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=34299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=34299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=34299"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=34299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}