Rulaţi unealta de analizor de dependenţă de clase Java (JDeps)

Începând cu Java 8, JDK livrează un utilitar de linie de comandă numit jdeps (analizor dependenţă clasă Java). Comanda jdeps analizează dependenţele claselor şi furnizează parametri suplimentari pentru a semnala pachetele JDK interne. În timp ce WebSphere Migration Tool semnalează majoritatea problemelor de migrare găsite într-o aplicaţie, unealta jdeps poate furniza o detecţie suplimentară a pachetelor JDK interne care nu mai sunt disponibile după migrarea la o nouă versiune Java.

Recomandăm să rulaţi comanda jdeps ca un pas final după rezolvarea problemelor semnalate de WebSphere Migration Tools pentru binare şi sursă. Rulaţi comanda jdeps pe artefactele Java ale aplicaţiei. Pentru a vă asigura de rezultate precise, utilizați comanda jdeps disponibilă în instalarea dumneavoastră JDK țintă planificată, cum ar fi JDK 11, cu parametrul -jdkinternals. De exemplu, după setarea mediului dumneavoastră pentru a utiliza Java 11, rulaţi următoarea comandă:

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

Începând cu Java 9, un efort a început să limiteze accesul la majoritatea internilor JDK. Cu toate acestea, pentru a ajuta cu migrarea, această încapsulare puternică a fost oprită implicit pentru API-uri care au existat în Java 8. Începând cu Java 16, valoarea implicită a opţiunii de lansator --illegal-access este setată la deny, în loc de permit. Deși nu este recomandat, această limitare ar putea fi ocolită în Java 16 specificând --illegal-access=permit. --illegal-access poate fi setat şi la warn sau debug pentru a avea acelaşi efect cu permit, dar să se emită un mesaj de avertizare când se foloseşte warn şi să se urmărească stiva pentru operaţiile reflective-access ilegale când se foloseşte debug.

Când se migrează la Java 17 sau ulterioară, opţiunea de lansator --illegal-access este perimată. Majoritatea internilor JDK sunt acum puternic încapsulaţi. Deși nu este recomandat, această limitare poate fi ocolită prin utilizarea opțiunii de lansator --add-opens sau atributul de manifest JAR Add-Opens pentru a deschide pachete specifice care sunt cerute de aplicația dumneavoastră sau de bibliotecile terță parte.

Unele API-uri interne critice care nu sunt încapsulate de această modificare includ următoarele:

Utilitarul generează o ieşire care identifică referinţele la clasele interne JDK şi furnizează API-urile înlocuitoare, acolo unde este posibil. Notă: Comanda jdeps acceptă doar fişiere .class, un director sau un fişier JAR.

Pentru mai multe informaţii despre comanda jdeps, vedeţi pagina de referinţă jdeps.