Eseguire lo strumento di analisi delle dipendenze della classe Java (JDeps)

A partire da Java 8, JDK fornisce un programma di utilità della riga comandi denominato jdeps (programma di analisi della dipendenza della classeJava ). Il comando jdeps analizza le dipendenze della classe e fornisce parametri supplementari per contrassegnare i package JDK interni. Mentre WebSphere Migration Tool contrassegna la maggior parte dei problemi di migrazione rilevati in un'applicazione, lo strumento jdeps può consentire la rilevazione supplementare dei package JDK interni che non sono più disponibili dopo la migrazione ad una nuova versione di Java.

Si consiglia di eseguire il comando jdeps come passo finale dopo la risoluzione dei problemi contrassegnati dai WebSphere Migration Tool binari o di origine. Eseguire il comando jdeps sulle risorse utente Java dell'applicazione. Per garantire risultati accurati, utilizzare il comando jdeps disponibile nell'installazione JDK di destinazione pianificata, come JDK 11, con il parametro -jdkinternals. Ad esempio, una volta impostato il proprio ambiente in modo da utilizzare Java 11, eseguire il seguente comando:

jdeps -jdkinternals C:\demo\Apps\myapplication.jar

A partire da Java 9, è iniziato uno sforzo per limitare l'accesso alla maggior parte dei componenti interni di JDK. Tuttavia, per facilitare la migrazione, questo forte incapsulamento è stato disattivato per impostazione predefinita per le API esistenti in Java 8. A cominciare da Java 16, il valore predefinito dell'opzione del programma di avvio -- illegale-access è impostato su deny anziché su allow. Sebbene non sia consigliato, questa limitazione potrebbe essere ignorata in Java 16 specificando -- illegal-access=allow. -- illegal-access potrebbe essere impostato anche su warn o debug per avere lo stesso effetto di allow, ma per emettere un messaggio di avvertenza mentre si utilizza warn e la traccia di stack per le operazioni di accesso riflessivo non consentite durante l'utilizzo di debug.

Quando si migra in Java 17 o versioni successive l'opzione launcher --illegal-access è obsoleta. La maggior parte degli interni JDK sono stati ora incapsulati in modo solido. Sebbene non consigliato, questa limitazione può essere aggirata utilizzando l'opzione di avvio --add-opens o l'attributo del manifest JAR Add-Opens per aprire package specifici richiesti dall'applicazione o librerie di terze parti.

Tra le API interne critiche non incapsulate da questa modifica vi sono le seguenti:

Il programma di utilità genera un output che identifica i riferimenti alle classi interne JDK e fornisce le API di sostituzione quando possibile. Nota: il comando jdeps accetta solo file .class, una directory o un file JAR.

Per ulteriori informazioni sul comando jdeps, consultare la pagina di riferimento jdeps.