Análisis de migración a Java
La última función que describiremos es el análisis de migración de Java, que le permite generar un informe sobre la preparación de la aplicación para migrar a una versión más reciente de JDK. Todas las versiones de Oracle LTS Java están soportadas junto con la última versión de Oracle JDK. El informe del análisis le proporcionará esfuerzo y riesgo asociados con el cambio a la versión principal de JDK deseada.
Note:
El análisis de aplicaciones se realiza en instancias gestionadas; durante el análisis, se consumen recursos adicionales.Consola de OCI Cloud
- Conéctese a la consola de OCI como administrador.
- Abra el menú de navegación, haga clic en Observability & Management y, a continuación, haga clic en Fleets en Java Management.
- Seleccione su flota.
- Haga clic en Instancias gestionadas y, a continuación, en la instancia gestionada en la que se está ejecutando la aplicación.
- Haga clic en Aplicaciones y seleccione la aplicación en la que se debe iniciar el análisis de migración de Java.
- Haga clic en Acciones y seleccione Iniciar análisis de migración Java.
- Haga clic en Iniciar.
- Una vez finalizada la solicitud de trabajo, haga clic en la solicitud de trabajo y, en los detalles, navegue a los archivos de análisis de migración de Java ubicados en el cubo del conjunto.
CLI de OCI
- Cree una plantilla de carga útil de destino con el siguiente comando:
ci jms fleet request-java-migration-analyses --generate-param-json-input targets
- Encuentre detalles sobre su aplicación, por ejemplo, con:
oci jms application-installation-usage-summary summarize-application-installation-usage --display-name-contains $APP_NAME --fleet-id $FLEET_OCID
- Edite el archivo json de carga útil, por ejemplo:
[ { "applicationInstallationKey": "$APP_INSTALL_KEY", "managedInstanceId": "$MANAGED_INSTANCE_OCID", "sourceJdkVersion": "$CURRENT_MAJOR_JAVA_RUNTIME_VERSION_USED_BY_APP", "targetJdkVersion": "$NEXT_JAVA_VERSION" } ]
- Ejecute el siguiente comando:
oci jms fleet request-java-migration-analyses --fleet-id $FLEET_OCID --targets file://target.json
Ejemplo
#!/usr/bin/env bash
# configuration variables
APP_NAME=JMigrateExampleApp
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
CURRENT_MAJOR_JAVA_RUNTIME_VERSION_USED_BY_APP=1.8
NEXT_JAVA_VERSION=21
# get application installation key
APP_INSTALL_KEY=$(oci jms application-installation-usage-summary summarize-application-installation-usage --display-name-contains $APP_NAME --fleet-id $FLEET_OCID | jq -r '.data.items[]."application-installation-key"')
# JMigrate payload
cat > jmigrate-payload.json << EOF
[
{
"applicationInstallationKey": "$APP_INSTALL_KEY",
"managedInstanceId": "$MANAGED_INSTANCE_OCID",
"sourceJdkVersion": "$CURRENT_MAJOR_JAVA_RUNTIME_VERSION_USED_BY_APP",
"targetJdkVersion": "$NEXT_JAVA_VERSION"
}
]
EOF
# start java migration analysis on specified managed instance
WORK_REQUEST_OCID=$(oci jms fleet request-java-migration-analyses \
--fleet-id "$FLEET_OCID" \
--targets file://jmigrate-payload.json | jq -r '."opc-work-request-id"')
echo $WORK_REQUEST_OCID
rm jmigrate-payload.json
# additionally, you can add your own logic to check if work request is finished
# sleep 600
# oci jms work-request get --work-request-id "$WORK_REQUEST_OCID" | jq .data.status
Una vez que la solicitud de trabajo JMigrate ha terminado correctamente, podemos encontrar el informe en JMS y mostrar su contenido con las siguientes sentencias:
#!/usr/bin/env bash
# configuration variables
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
WORK_REQUEST_OCID=ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaapqrtnlvfyltloscefazwuuoyd6pdqpsmaxfnirregqirx3b7jbva
# get the analysis id, there can be multiple ids but, in our example, we expect just one
ANALYSIS_OCID=$(oci jms java-migration-analysis-result list --fleet-id $FLEET_OCID --sort-by timeCreated --sort-order DESC | jq -r ".data.items[] | select(.\"work-request-id\"==\"$WORK_REQUEST_OCID\") | .id")
# See the result
oci jms java-migration-analysis-result get --fleet-id $FLEET_OCID --java-migration-analysis-result-id $ANALYSIS_OCID
{
"data": {
"application-execution-type": "INSTALLED",
"application-key": "38d3d5b89e9e42da00c5be9bdbee216a0e297c2ea942330e5af4051c4951b50a",
"application-name": "JmigrateExample.jar",
"application-path": "/home/opc/JmigrateExample.jar",
"bucket-name": "jms_ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta",
"fleet-id": "ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta",
"host-name": "jms-demo",
"id": "ocid1.jmsreport.oc1.eu-frankfurt-1.amaaaaaalzyjypyaa4puer7qtjn2s3zih55ir5jzma4lyiulxpy7qn3xtbhq",
"managed-instance-id": "ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq",
"metadata": null,
"namespace": "frmss8xk2qta",
"object-list": [
"diagsbyapi-summary-counts.json",
"diagsbyclass-p3.json",
"diagsbyapi-p1.json",
"diagsbyclass-p4.json",
"JmigrateExample.jar.zip",
"diagsbyclass-p1.json",
"diagsbyapi-p4.json",
"diagsbyapi-p4-summary.json",
"execsummary.json",
"diagsbyapi-p3-summary.json",
"diagsbyapi-p1-summary.json",
"diagsbyapi-p2-summary.json",
"diagsbyapi-p2.json",
"jarsummaries-without-classsummaries.json",
"diagsbyapi-p3.json",
"diagsbyclass-summary-counts.json",
"diagsbyclass-p2.json"
],
"object-storage-upload-dir-path": "JMS/JAVA_MIGRATION/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/2025-07-09T14:33:49.750Z_ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaapqrtnlvfyltloscefazwuuoyd6pdqpsmaxfnirregqirx3b7jbva_JmigrateExample.jar/7adcab9b-1556-443d-9a86-a41f3e5bbb45/",
"source-jdk-version": "1.8",
"target-jdk-version": "21",
"time-created": "2025-07-09T14:41:16.353000+00:00",
"work-request-id": "ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaapqrtnlvfyltloscefazwuuoyd6pdqpsmaxfnirregqirx3b7jbva"
}
}
Los datos de análisis se almacenan en el servicio Object Storage y se pueden alcanzar tomando datos del resultado del análisis, por ejemplo, se proporciona el espacio de nombres, bucket-name
, luego hay una lista de archivos definidos dentro de object-list
y para cada archivo podemos obtener la ruta de acceso concatenando object-storage-upload-dir-path
y el elemento de object-list
.
oci os object get --bucket-name jms_ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta --name JMS/JAVA_MIGRATION/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/2025-07-09T14:33:49.750Z_ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaapqrtnlvfyltloscefazwuuoyd6pdqpsmaxfnirregqirx3b7jbva_JmigrateExample.jar/7adcab9b-1556-443d-9a86-a41f3e5bbb45/jarsummaries-without-classsummaries.json --file -
[ {
"url" : "jar:file:/home/opc/JmigrateExample.jar",
"archiveType" : "JAR",
"classCount" : 3,
"classesWithDiagnosticsCount" : 3,
"p1Count" : 31,
"totalDiagnosticsCount" : 31
} ]%
Para una mejor experiencia de usuario, recomendamos utilizar la consola de OCI JMS Cloud, donde el informe se presenta muy bien para proporcionar todos los detalles necesarios sobre la migración.