A partire da Java 8, JDK fornisce un programma di utilità della riga comandi denominato jdeps ( Java class dependency analyzer).
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 incapsulamento solido è stato disattivato per impostazione predefinita per le API che esistevano in Java 8. A partire da Java 16, il valore predefinito dell'opzione di avvio --illegal-access è impostato su deny anziché permet. Sebbene non consigliato, questa limitazione potrebbe essere aggirata in Java 16 specificando --illegal-access=permit. --illegal-access può anche essere impostato su warn o debug per avere lo stesso effetto di permit, ma per emettere un messaggio di avviso durante l'utilizzo di warn e la traccia dello stack per operazioni reflective-access 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.