Guide des Versions de Java et Fonctionnalités

Guide des Versions de Java et Fonctionnalités

Java 8, Java 11, Java 13 — quelle est la différence?

Vous pouvez utiliser ce guide pour trouver et installer la dernière version de Java, comprendre les différences entre les distributions Java (AdoptOpenJdk, OpenJDK, OracleJDK, etc.), ainsi que d’obtenir un aperçu des fonctionnalités du langage Java, y compris Java versions 8-13.,

vous pouvez également aimer: Beyond Java 8

Informations générales

tout d’abord, jetons un coup d’œil à quelques questions pratiques courantes que les gens ont en essayant de choisir la bonne version Java pour leur projet.

Si vous souhaitez en savoir plus sur une version spécifique, accédez au site AdoptOpenJDK, choisissez la dernière version de Java, téléchargez-la et installez-la. Revenez ensuite à ce guide et apprenez encore une chose ou deux sur les différentes versions de Java.

quelle Version Java dois-je utiliser?,

à partir de septembre 2019, Java 13 est la dernière version de Java publiée, avec des versions plus récentes qui suivent tous les 6 mois — Java 14 est prévu pour Mars 2020, Java 15 pour septembre 2020, etc. Dans le passé, les cycles de publication de Java étaient beaucoup plus longs, jusqu’à 3-5 ans!.

avec la sortie de nombreuses nouvelles versions, il existe essentiellement ces scénarios d’utilisation réels:

  • Les projets hérités dans les entreprises sont souvent bloqués en utilisant Java 8 (voir la section « pourquoi les entreprises sont-elles toujours bloquées sur Java 8? »l’article ci-dessous). Ainsi, vous serez obligé d’utiliser Java 8.,
  • certains projets hérités sont même bloqués sur Java 1.5 (sorti en 2004) ou 1.6 (sorti en 2006) — désolé, les amis!
  • Si vous vous assurez d’utiliser les tout Dernierses, frameworks et outils de construction et de démarrer un projet greenfield, vous pouvez, sans hésitation, utiliser Java 11 (LTS) ou même Le Dernier Java 13.
  • Il y a le domaine spécial du développement Android où la version Java est essentiellement bloquée à Java 7, avec un ensemble spécifique de fonctionnalités Java 8 disponibles. Ou, vous pouvez passer à l’utilisation du langage de programmation Kotlin.

pourquoi les entreprises sont-elles toujours bloquées sur Java 8?,

Il y a un mélange de différentes raisons pour lesquelles les entreprises sont toujours coincées avec Java 8. Pour n’en nommer que quelques-uns:

  • outils de construction (Maven, Gradle, etc.) et certaines bibliothèques avaient initialement des bogues avec les versions Java versions > 8 et avaient besoin de mises à jour. Même aujourd’hui, avec par exemple Java 9+, certains outils de construction affichent des avertissements « reflective access »lors de la création de projets Java, qui « ne se sent tout simplement pas prêt », même si les versions sont correctes.
  • Jusqu’à Java 8, vous utilisiez à peu près les versions JDK D’Oracle et vous n’aviez pas à vous soucier des licences., Oracle a cependant changé le système de licence en 2019, ce qui a rendu Internet fou en disant « Java n’est plus gratuit » — et une bonne quantité de confusion a suivi. Ce n’est cependant pas vraiment un problème, que vous apprendrez dans la section « Distributions Java » de ce guide.
  • certaines entreprises ont des politiques pour utiliser uniquement les versions LTS et comptent sur leurs fournisseurs de système d’exploitation pour leur fournir ces versions, ce qui prend du temps.

pour résumer, vous avez un mélange de problèmes pratiques (mise à niveau de vos outils, bibliothèques, frameworks) et de problèmes politiques.,

pourquoi certaines Versions de Java sont-elles appelées 1.X?

Les versions Java antérieures à 9 avaient simplement un schéma de nommage différent. Ainsi, Java 8 peut également être appelé 1.8, Java 5 peut être appelé 1.5, etc. Lorsque vous avez émis la commandejava -version avec ces versions, vous avez obtenu une sortie comme celle-ci:

cela signifie simplement Java 8. Avec le passage aux versions basées sur le temps avec Java 9, le schéma de nommage a également changé et les versions Java ne sont pas préfixées par 1.x plus. Maintenant, le numéro de version ressemble à ceci:

Quelle est la différence entre les Versions Java?, Dois-je en apprendre un spécifique?

venant d’autres langages de programmation avec des ruptures majeures entre les versions, comme par exemple Python 2 à 3, vous vous demandez peut-être si la même chose s’applique à Java.

Java est spécial à cet égard, car il est extrêmement rétrocompatible. Cela signifie que votre programme Java 5 ou 8 est garanti pour fonctionner avec une machine virtuelle Java 8-13-à quelques exceptions près, vous n’avez pas besoin de vous inquiéter pour l’instant.

cela ne fonctionne évidemment pas dans l’autre sens, disons que votre programme repose sur des fonctionnalités Java 13 qui ne sont tout simplement pas disponibles sous une JVM Java 8.,

Cela signifie deux choses:

  • vous ne Vous contentez pas « apprendre » une version de Java, comme Java 12.
  • au contraire, vous aurez une bonne base dans toutes les fonctionnalités du langage jusqu’à Java 8.
  • Et puis, vous pouvez apprendre, à partir d’un guide comme celui-ci, quelles fonctionnalités supplémentaires sont venues dans Java 9-13 et les utiliser chaque fois que vous le pouvez.

Quels sont les exemples de ces nouvelles fonctionnalités entre les Versions Java?

consultez la section « Java Features 8-13 » ci-dessous.,

mais en règle générale: les cycles de publication plus anciens et plus longs (3-5 ans, Jusqu’à Java 8) signifiaient beaucoup de nouvelles fonctionnalités par version.

Le cycle de publication de six mois signifie moins de fonctionnalités par version, vous pouvez donc rattraper rapidement les fonctionnalités du langage Java 9-13.

Quelle est la différence entre un JRE et un JDK?

jusqu’à présent, nous ne parlions que de « Java. »Mais Qu’est-ce que Java exactement?

Tout d’abord, vous devez faire la différence entre un JRE (Java Runtime Environment) et un JDK (Java Development Kit).,

historiquement, vous n’avez téléchargé qu’un JRE si vous n’étiez intéressé que par l’exécution de programmes Java. Un JRE comprend, entre autres, la machine virtuelle Java (JVM) et l’outil de ligne de commande « java ».

pour développer de nouveaux programmes Java, vous devez télécharger un JDK. Un JDK inclut tout ce que le JRE a, ainsi que le compilateur javac et quelques autres outils comme javadoc (générateur de documentation Java) et jdb (débogueur Java).

maintenant, pourquoi je parle au passé?,

Jusqu’à Java 8, le site Web Oracle offrait JREs et JDKs en tant que téléchargements séparés — même si le JDK incluait également toujours un JRE dans un dossier séparé. Avec Java 9, cette distinction avait fondamentalement disparu, et vous téléchargez toujours un JDK. La structure des répertoires de JDKs a également changé, n’ayant plus de dossier JRE explicite.

donc, même si certaines distributions (voir la section « Distributions Java ») offrent toujours un téléchargement JRE séparé, il semble y avoir la tendance à offrir juste un JDK. Par conséquent, nous allons utiliser Java et JDK de manière interchangeable à partir de Maintenant.,

Comment puis-je installer Java ou un JDK alors?

ignorer les images Java-Docker, .wrappers msi, ou packages spécifiques à la plate-forme pour le moment. En fin de Compte, Java est juste un .fichier zip; rien de plus, rien de moins.

par conséquent, tout ce que vous devez faire pour installer Java sur votre machine est de décompresser votre jdk-{5-13}.fichier zip. Vous n’avez même pas besoin de droits d’administrateur pour que.,

votre fichier Java décompressé ressemblera à ceci:

la magie se produit dans le répertoire /bin, qui sous Windows, ressemble à ceci:

Directory C:\dev\jdk-11\bin...12.11.2019 19:23 272.736 java.exe...12.11.2019 19:23 20.832 javac.exe...

donc tout ce que vous devez faire est de décompresser ce fichier et de mettre le répertoire /bin dans votre variable PATH, de sorte que vous

(au cas où vous vous poseriez la question, les installateurs D’interface graphique comme celui D’Oracle ou AdoptOpenJDK feront le décompressage et la modification de la variable PATH pour vous, c’est à peu près tout.,)

Pour vérifier que vous avez installé Java correctement, vous pouvez simplement exécuter java -version. Si la sortie ressemble à celle ci-dessous, vous êtes prêt à partir!

maintenant, il reste une question: Où obtenez-vous ce Java .fichier zip à partir de? Ce qui nous amène au sujet des distributions.

Distributions Java

Il existe une variété de sites proposant des téléchargements Java (lire: JDK) et on ne sait pas « qui offre quoi et avec quelle licence ». Cette section apportera un peu de lumière à ce sujet.,

le projet OpenJDK

en termes de code source Java (lire: le code source de votre JRE/JDK), il n’y en a qu’un seul vivant sur le site du projet OpenJDK.

ce n’est que du code source, cependant, pas une construction distribuable (pensez: votre .fichier zip avec la commande java compilée pour votre système d’exploitation spécifique). En théorie, vous et moi pourrions produire une version à partir de ce code source, l’appeler, disons, MarcoJDK, et commencer à le distribuer. Mais notre distribution manquerait de certification, pour pouvoir nous appeler légalement compatible Java SE.,

C’est pourquoi, dans la pratique, il y a une poignée de fournisseurs qui créent réellement ces builds, les obtiennent certifiés (voir TCK), puis les distribuent.

et bien que les fournisseurs ne puissent pas, par exemple, supprimer une méthode de la classe String avant de produire une nouvelle version Java, ils peuvent ajouter une marque (yay!) ou ajouter d’autres utilitaires (par exemple CLI) qu’ils jugent utiles. Mais à part cela, le code source d’origine est le même pour toutes les distributions Java.

OpenJDK Builds (par Oracle) et OracleJDK Builds

L’un des fournisseurs qui construit Java à partir de la source est Oracle., Cela conduit à deux distributions Java différentes, ce qui peut être très déroutant au début.il est possible de créer un fichier OpenJDK par Oracle (!). Ces versions sont gratuites et sans marque, mais Oracle ne publiera pas de mises à jour pour les anciennes versions, par exemple Java 13, dès que Java 14 sortira.

  • OracleJDK, qui est une version commerciale de marque à partir du changement de licence en 2019. Cela signifie qu’il peut être utilisé gratuitement pendant le développement, mais vous devez payer Oracle si vous l’utilisez en production. Pour cela, vous obtenez un support plus long, c’est-à-dire des mises à jour de versions et un numéro de téléphone que vous pouvez appeler si votre JVM devient folle.,
  • maintenant, historiquement (avant Java 8), Il y avait des différences de source réelles entre les builds OpenJDK et OracleJDK, où vous pourriez dire Qu’OracleJDK était « meilleur ». Mais à ce jour, les deux versions sont essentiellement les mêmes, avec des différences mineures.

    cela se résume alors à vous vouloir un support commercial payant (un numéro de téléphone) pour votre version Java installée.

    AdoptOpenJDK

    en 2017, un groupe de membres du groupe D’utilisateurs Java, de développeurs et de fournisseurs (Amazon, Microsoft, Pivotal, Red Hat, etc.) a créé une communauté appelée AdoptOpenJDK.,

    ils fournissent des builds OpenJDK gratuits et solides avec une disponibilité / mise à jour plus longue et vous offrent même le choix de deux Machines virtuelles Java différentes: HotSpot et OpenJ9.

    je vous recommande fortement si vous cherchez à installer Java.

    Azul Zulu, Amazon Corretto, SAPMachine

    vous trouverez une liste complète des builds OpenJDK sur le site Wikipedia OpenJDK. Parmi eux, Azul Zulu, Amazon Corretto, ainsi que SapMachine, pour n’en nommer que quelques-uns. Pour simplifier à l’excès, cela se résume à vous avoir différentes options de support/garanties de maintenance.,

    Mais assurez-vous de vérifier les sites web pour connaître les avantages de chaque distribution.

    recommandation

    Java Features 8-13

    comme mentionné au tout début de ce guide: essentiellement toutes les fonctionnalités du langage Java 8 (ne soyez pas pointilleux maintenant) fonctionnent en Java 13. Il en va de même pour toutes les autres versions Java entre les deux.

    à son tour, cela signifie que toutes les fonctionnalités de langage de Java 8 servent de bonnes connaissances de base Java, et tout le reste (Java 9-13) est à peu près des fonctionnalités supplémentaires en plus de cette ligne de base.,

    Voici un aperçu rapide de ce que les versions spécifiques ont à offrir:

    Java 8

    Java 8 était une version massive et vous pouvez trouver une liste de toutes les fonctionnalités sur le site Web D’Oracle. Il y a deux ensembles de fonctionnalités principales que je voudrais mentionner ici:

    caractéristiques de la langue: Lambdas, etc.,

    avant Java 8, chaque fois que vous vouliez instancier, par exemple, un nouveau Runnable, vous deviez écrire une classe interne anonyme, comme ceci:

     Runnable runnable = new Runnable(){ @Override public void run(){ System.out.println("Hello world !"); } };

    avec lambdas, le même code ressemble à ceci:

    Runnable runnable = () -> System.out.println("Hello world two!");

    Vous avez également des références de méthode, des annotations répétées, des méthodes par défaut pour les interfaces et quelques autres fonctionnalités de langage.

    Collections& Streams

    dans Java 8, Vous avez également des opérations de style fonctionnel pour les collections, également connues sous le nom D’API Stream., Un exemple rapide:

    List<String> list = Arrays.asList("franz", "ferdinand", "fiel", "vom", "pferd");

    maintenant, avant Java 8, vous deviez essentiellement écrire des boucles for pour faire quelque chose avec cette liste.

    avec L’API Streams, vous pouvez faire ce qui suit:

    list.stream() .filter(name -> name.startsWith("f")) .map(String::toUpperCase) .sorted() .forEach(System.out::println);

    Java 9

    Java 9 était également une version assez importante, avec quelques ajouts:

    Collections

    Collections a obtenu quelques nouvelles méthodes d’aide pour construire facilement des listes, ,

    List<String> list = List.of("one", "two", "three");Set<String> set = Set.of("one", "two", "three");Map<String, String> map = Map.of("foo", "one", "bar", "two");

    Streams

    Streams got a couple of additions, in the form of takeWhile, dropWhile, and iterate methods.

    Stream<String> stream = Stream.iterate("", s -> s + "s") .takeWhile(s -> s.length() < 10);

    Optionals

    Optionals got the sorely missed ifPresentOrElse method.,

    user.ifPresentOrElse(this::displayAccount, this::displayLogin);

    Interfaces

    Interfaces obtenu private méthodes:

    public interface MyInterface { private static void myPrivateMethod(){ System.out.println("Yay, I am private!"); }}

    Autres Fonctionnalités de Langage

    Et quelques autres améliorations, comme une amélioration de la try-with-resources déclaration ou de diamant opérateur extensions.

    JShell

    Enfin, Java a un shell, où vous pouvez essayer des commandes simples et obtenir des résultats immédiats.

    % jshell| Welcome to JShell -- Version 9| For an introduction type: /help introjshell> int x = 10x ==> 10

    HTTPClient

    Java 9 apporté la première version preview d’un nouveau HttpClient., Jusque-là, le support Http intégré de Java était plutôt de bas niveau, et vous deviez vous rabattre sur l’utilisation de bibliothèques tierces comme Apache HttpClient ou OkHttp (qui sont d’excellentes bibliothèques, btw!).

    avec Java 9, Java a obtenu son propre client moderne — bien que ce soit en mode Aperçu, ce qui signifie qu’il est sujet à changement dans les versions ultérieures de Java.

    Project Jigsaw: modules Java et fichiers Jar Multi-Release

    Java 9 a obtenu le système de Module Jigsaw, qui ressemble un peu à la bonne vieille spécification OSGI., Ce n’est pas dans le cadre de ce guide d’entrer dans les détails sur Jigsaw, mais jetez un oeil aux liens précédents pour en savoir plus.

    Multi-Libération .les fichiers jar ont permis d’en avoir un .fichier jar qui contient différentes classes pour différentes versions de JVM. Ainsi, votre programme peut se comporter différemment/avoir différentes classes utilisées lorsqu’il est exécuté sur Java 8 par rapport à Java 10, par exemple.

    Java 10

    Il y a eu quelques changements à Java 10, comme la récupération de place, etc., Mais le seul changement réel que vous verrez probablement en tant que développeur est l’introduction du mot-clé var, également appelé inférence de type de variable locale.

    inférence de type Variable locale: var-keyword

    // Pre-Java 10String myName = "Marco";// With Java 10var myName = "Marco"

    sent Javascript-y, n’est-ce pas? Il est toujours fortement typé, cependant, et ne s’applique qu’aux variables à l’intérieur des méthodes (merci, dpash, de l’avoir souligné à nouveau).

    Java 11

    Java 11 était également une version un peu plus petite, du point de vue des développeurs.,

    Strings & Files

    Strings and files a quelques nouvelles méthodes (pas toutes listées ici):

    Run Source Files

    A partir de Java 10, vous pouvez exécuter des fichiers source Java sans avoir à les compiler au préalable. Un pas vers l’écriture de scripts.

    ubuntu@DESKTOP-168M0IF:~$ java MyScript.java

    inférence de type de Variable locale (var) pour les paramètres Lambda

    l’en-tête dit tout:

    (var firstName, var lastName) -> firstName + lastName

    HttpClient

    de Java 9 dans sa version finale, Non prévisualisée.,

    Autres Goodies

    l’Enregistreur de Vol, Non-Op Garbage Collector, Nashorn-Javascript-Moteur obsolète, etc.

    Java 12

    Java 12 a quelques nouvelles fonctionnalités et nettoyages, mais les seuls qui méritent d’être mentionnés ici sont le support Unicode 11 et un aperçu de la nouvelle expression switch, que vous verrez couvert dans la section suivante.

    Java 13

    Vous pouvez trouver une liste complète ici, mais essentiellement, vous obtenez Unicode 12.,1 prise en charge, ainsi que deux fonctionnalités de prévisualisation nouvelles ou améliorées (sous réserve de modifications futures):

    expression de commutation (aperçu)

    Les expressions de commutation peuvent désormais renvoyer une valeur., Et vous pouvez utiliser une syntaxe de style lambda pour vos expressions, sans les problèmes de chute/rupture:

    Les anciennes instructions switch ressemblaient à ceci:

    switch(status) { case SUBSCRIBER: // code block break; case FREE_TRIAL: // code block break; default: // code block}

    alors qu’avec Java 13, les instructions switch peuvent ressembler à ceci:

    chaînes multilignes (aperçu)

    ava:

    Java 14 et versions ultérieures

    seront couverts ici, dès qu’ils seront libérés. Vérifier bientôt de retour!,

    Conclusion

    Maintenant, vous devriez avoir un assez bon aperçu de quelques choses:

    • Comment installer Java, quelle version obtenir et où l’obtenir (indice: AdoptOpenJDK).
    • qu’est-ce qu’une distribution Java, lesquelles existent et quelles sont les différences.
    • Quelles sont les différences entre les versions de Java.

    des Commentaires, les corrections et les entrées aléatoires sont toujours les bienvenus! Il suffit de laisser un commentaire ci-dessous.

    Merci pour la lecture!

    il y a plus D’où cela vient

    Cet article est apparu à l’origine sur www.marcobehler.,com / écrit dans le cadre d’une série de guides sur la programmation Java moderne. Pour trouver plus de guides, visitez le site web ou abonnez-vous à la newsletter pour être informé des guides nouvellement publiés: https://bit.ly/2K0Ao4F.

    Remerciements

    Stephen Colebourne a écrit un article fantastique sur les différentes distributions Java disponibles. Merci, Stephen!

    pour en savoir plus

    JVM Ecosystem Survey: pourquoi les développeurs ne passent pas à Java 11

    Au-delà de Java 8

    quand Java 11 remplacera-t-il Java 8 comme Java par défaut?

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *