JavaRush /Blog Java /Random-FR /Pause café #149. Comment passer de Java 8 à Java 17. Diff...

Pause café #149. Comment passer de Java 8 à Java 17. Différentes façons de parcourir une liste en Java

Publié dans le groupe Random-FR

Comment migrer de Java 8 vers Java 17

Source : Medium Grâce à cette publication, vous pouvez facilement passer de Java 8 à Java 17. Pause café #149.  Comment passer de Java 8 à Java 17. Différentes façons de parcourir une liste en Java - 1 Chaque nouvelle version de Java, surtout si nous parlons de la version de support à long terme (LTS), offre aux développeurs de nombreuses nouvelles fonctionnalités et fonctions, éliminant erreurs découvertes précédemment et améliore les performances. Mais jusqu'à présent, malgré le fait que Java 17 soit sorti il ​​y a presque un an, la version la plus populaire du langage reste Java 8. Beaucoup hésitent à mettre à niveau, estimant que la nouvelle version de Java n'est pas entièrement compatible avec les versions précédentes, et la mise à niveau vers celui-ci nécessitera beaucoup d'efforts. Personnellement, je pense qu'une mise à niveau est nécessaire. J'utilise déjà Java 17, même si j'ai rencontré quelques problèmes avec la mise à niveau. De plus, il convient de noter que Java 8 a depuis longtemps cessé d'être un service gratuit. Les performances de Java 17 sont bien meilleures. Par exemple, en utilisant ZGC, vous n'avez plus à vous soucier de la configuration des paramètres de garbage collection. Si vous souhaitez migrer de Java 8 vers Java 17, vous devrez effectuer un travail supplémentaire. Comme j'ai déjà emprunté cette voie, je peux partager mon expérience de migration vers la nouvelle version.

Mettre à jour la version du plugin du compilateur Maven

Pour certains développeurs, la version du plugin du compilateur Maven est peut-être trop ancienne. Si vous souhaitez travailler avec Java 17, la version du plugin du compilateur Maven doit être au moins 3.5.4.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>17</source> <target>17</target> </configuration> </plugin>

Mettre à jour les dépendances

La première étape lors de la mise à niveau de Java 8 vers Java 17 consiste à mettre à jour vos dépendances. Étant donné que la dépendance que vous avez utilisée à l'origine ne prend probablement pas du tout en charge Java 17, vous devrez la mettre à jour si vous souhaitez minimiser l'impact de la mise à niveau de version. Sinon, vous risquez de rencontrer un certain nombre de problèmes. 1. Par exemple, Lombok provoquera une erreur de compilation. Les informations d'erreur sont les suivantes :
Échec de l'exécution de l'objectif org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (compile par défaut) sur le projet encloud-common : erreur fatale lors de la compilation : java.lang.ExceptionInInitializerError : impossible de rendre le champ privé com.sun .tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs accessible : le module jdk.compiler n'"ouvre pas com.sun.tools.javac.processing" à un module sans nom
Étant donné que Lombok injecte le code généré au moment de la compilation et utilise les classes du package com.sun.tools.javac.* , vous devez mettre à jour Lombok vers la dernière version. Cela résoudra le problème. 2. La connexion zookeeper générera une erreur UnresolvedAddressException , les informations sur l'erreur sont les suivantes :
org.apache.zookeeper.ClientCnxn - Session 0x0 pour le serveur 10.0.*.*/<unresolved>:2181, erreur inattendue, fermeture de la connexion socket et tentative de reconnexion java.nio.channels.UnresolvedAddressException : null sur sun.nio.ch. Net .checkAddress(Net.java:149) ~[?:?] à sun.nio.ch.Net.checkAddress(Net.java:157) ~[?:?] à sun.nio.ch.SocketChannelImpl.checkRemote( SocketChannelImpl .java:816) ~[?:?] sur sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) ~[?:?] sur org.apache.zookeeper.ClientCnxnSocketNIO.registerAndConnect(ClientCnxnSocketNIO.java: 277) ~[zookeeper-3.4.13.jar:3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03] sur org.apache.zookeeper.ClientCnxnSocketNIO.connect(ClientCnxnSocketNIO.java:287) ~[zookeeper-3.4.13 .jar:3 .4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03 ] sur org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1021) ~[zookeeper-3.4.13.jar:3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03] sur org.apache.zookeeper.ClientCnxn$ Envoyer Thread.run(ClientCnxn .java:1064) [zookeeper-3.4.13.jar:3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03]
La raison de l'erreur est que dans Java 15, la méthode toString pour InetSocketAddressHolder a été refactorisée . Si vous utilisez maven, vous pouvez utiliser la commande mvn versions:display-dependency-updates pour vérifier les mises à jour des dépendances. Le résultat ressemblera à ceci : Pause café #149.  Comment passer de Java 8 à Java 17. Différentes façons de parcourir une liste en Java - 2

Ajouter une dépendance

Si vous compilez avec JAXB, vous recevrez une erreur. En effet, JAXB a été supprimé de Java 11. Vous devez donc ajouter des dépendances JAXB Maven.
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>com.sun.xml .bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId> jaxb-impl</artifactId> <version>2.3.0</version> </dependency>
En plus de cela, Java 11 supprime également les modules Java EE et CORBA, vous devrez donc ajouter manuellement les packages javax.
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version> </dependency>

Gestion de l'exception InaccessibleObjectException

Si vous utilisez la réflexion dans votre application, en particulier setAccessible(true) , vous recevrez probablement une erreur InaccessibleObjectException au démarrage de l'application. L'erreur est causée par le système modulaire de la plateforme Java, qui autorise l'accès uniquement sous certaines conditions :
  1. Le cours doit être public.
  2. Vous devez exporter vos propres packages.
Pour résoudre cette erreur, vous pouvez définir manuellement le module sur public. Pour ce faire, vous devez ajouter l' option --add-opens à la ligne de commande de démarrage Java, comme indiqué ci-dessous.
# --add-opens a la syntaxe suivante : {modules}/{package}=ALL-UNNAMED java --add-opens java.base/java.lang=ALL-UNNAMED
Ou vous pouvez modifier votre code Java pour enfin résoudre ce problème.
module java.base {
    exports java.lang;
}
Dans l'ensemble, après avoir résolu tous les problèmes ci-dessus, votre application devrait fonctionner correctement sur Java 17. J'espère que cet article vous aidera à migrer vers Java 17.

Différentes façons de parcourir une liste en Java

Source : Rrtutors Dans cet article, nous apprendrons plusieurs façons de parcourir une liste en Java. Pause café #149.  Comment passer de Java 8 à Java 17. Différentes façons de parcourir une liste en Java - 3Le framework Collection dispose d'une interface List qui nous permet de maintenir une collection ordonnée d'objets. L'interface List est implémentée par ArrayList, LinkedList, Stack et Vector. Un nombre important d'applications Java utilisent ArrayList et LinkedList. Il existe plusieurs façons de parcourir une liste, chacune ayant ses propres caractéristiques.

Comment parcourir une liste en Java

Vous pouvez utiliser trois manières de parcourir une liste en Java :
  • Utilisation de la méthode avancée For Loop.
  • En utilisant la méthode itérateur.
  • Parcourez les éléments forEach.

1. Utilisation de la méthode avancée For Loop.

Il s'agit d'une version de la boucle for de base qui peut être utilisée pour parcourir une liste. Voici un exemple :
import java.util.ArrayList;
import java.util.List;
public class Enhanced_for_loop {
            public static void main(String[] args) {
        List<Integer> figurez = new ArrayList<>();
        figurez.add(100);
        figurez.add(200);
        figurez.add(300);
        figurez.add(400);
        for(int i: figurez) {
            System.out.print(i+ " ");
        }
            }
}
Conclusion:
100 200 300 400

2. Utilisation de la méthode itérateur.

Vous pouvez également utiliser des itérateurs pour parcourir une liste. Les itérateurs sont particulièrement utiles lorsque vous devez modifier une liste itérable. Exemple:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Iterate_List_using_Iterators {
            public static void main(String[] args) {
                        List<Integer> numbari = new ArrayList<>();
                        numbari.add(100);
                        numbari.add(200);
                        numbari.add(300);
                    Iterator<Integer> itr = numbari.iterator();
                    while(itr.hasNext()) {
                        int i = itr.next();
                        System.out.print(i+ " ");
                        if(i==3) {
                            itr.remove();
                        }

            }
            }
}
Conclusion:
100 200 300

3. Parcourez les éléments forEach.

Après l'ajout des fonctions lambda à Java, la syntaxe du langage a introduit la fonction forEach, qui vous permet de parcourir n'importe quelle collection. L'exemple de code suivant montre comment utiliser la méthode forEach pour parcourir une liste :
import java.util.ArrayList;
import java.util.List;
public class Iterate_List_using_ForeEach_iterable {
            public static void main(String[] args) {
                        List<Integer> numbari = new ArrayList<>();
                        numbari.add(1);
                        numbari.add(2);
                        numbari.add(3);
                        numbari.add(4);
                        numbari.forEach(System.out::println);
            }
}
Conclusion:
1 2 3 4
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION