A partir de Java 8, le JDK fournit un utilitaire de ligne de commande appelé jdeps (analyseur de dépendance de classe Java).
La commande jdeps analyse les dépendances de classe et fournit des paramètres supplémentaires pour marquer les packages JDK internes.
Bien que WebSphere Migration Tool marque la majorité des problèmes de migration rencontrés dans une application, l'outil jdeps peut fournir une détection supplémentaire des packages JDK internes qui ne sont plus disponibles après la migration vers une nouvelle version de Java.
Nous vous recommandons d'exécuter la commande jdeps comme dernière étape après avoir résolu les problèmes marqués par les outils de migration WebSphere binaires ou source. Exécutez la commande jdeps sur vos artefacts Java d'application.
Pour obtenir des résultats précis, utilisez la commande jdeps disponible dans votre installation JDK cible prévue, telle que JDK 11, avec le paramètre
-jdkinternals. Par exemple, après avoir configuré votre environnement pour utiliser Java 11, exécutez la commande suivante :
A partir de Java 9, un effort a limité l'accès à la plupart des internes JDK. Toutefois, pour faciliter la migration, cette encapsulation forte a été désactivée par défaut pour les API qui existaient dans Java 8. A partir de Java 16, la valeur par défaut de l'option de lancement -- illegal-access est définie sur deny au lieu de permit. Bien que cette limitation ne soit pas recommandée, elle peut être ignorée dans Java 16 en spécifiant -- illegal-access=permit. -- illegal-access peut également être définie sur warn ou debug pour avoir le même effet que permit, mais pour émettre un message d'avertissement lors de l'utilisation de warn et de la trace de pile pour les opérations d'accès réflectif non autorisées lors de l'utilisation de debug.
Lors de la migration vers Java 17 ou une version ultérieure, l'option de lancement -- illegal-access est obsolète. La plupart des internes
JDK sont maintenant fortement encapsulés. Bien qu'elle ne soit pas recommandée, cette limitation peut être ignorée à l'aide de l'option de lancement
-- add-opens ou de l'attribut de manifeste JAR Add-Ouvertures pour ouvrir des packages spécifiques requis par votre application ou des bibliothèques tierces.
Certaines API internes essentielles non encapsulées par ce changement sont les suivantes :
L'utilitaire génère une sortie qui identifie les références aux classes internes du JDK et fournit des suggestions d'API de remplacement dans la mesure du possible.
Remarque : la commande jdeps n'accepte que les fichiers .class, un répertoire ou un fichier JAR.
Pour plus d'informations sur la commande jdeps, voir
la page de référence jdeps.