mac - Cambiando la versión de Java
oracle java (6)
Cuando pasé de 1.4.2 a 1.5 en un pequeño applet en el que trabajé, se rompieron muchas cosas: la actualización de la pantalla se volvió inestable, los elementos se movieron, etc.
Sun''s JRE no mantiene la compatibilidad con versiones anteriores para todo . A veces, cuando los artículos están en desuso, desaparecen por completo en muy poco tiempo.
Escribimos todo con "stock" de Java, usando también las bibliotecas de Sun.
También he visto varias aplicaciones escritas en Java puro que funcionan bien en una o dos plataformas en la misma versión del JRE que fallan en otras con esa versión (el producto con el que trabajo ahora funciona muy bien en Windows, está bien en Mac OS X, decente en Linux, pero falla en Solaris, todos con el mismo JRE).
Mover versiones no es un simple paso, a menos que la aplicación sea realmente pequeña.
tengo una aplicación cliente - servidor que se ejecuta en Java 1.3; Quiero cambiar a Java 1.6 paso a paso, es decir, los primeros clientes, que el resto de los clientes y, finalmente, el servidor ... me preguntaba ¿podría dirigirme a algunos problemas comunes que pueden surgir y qué debo cuidar?
Fuera de mi cabeza, busca los nombres enum
y assert
en campos y variables locales ... Estas palabras se han convertido en palabras clave en java 1.4 y 5. El compilador java 6 los marcará como errores de compilación si los ve.
Yuval = 8-)
Mi experiencia es que la compatibilidad es bastante alta. Solo encontré una aplicación que no pude ejecutar en una versión actual. Por la razón que sea (sin tener la fuente, así que no profundicé en eso) esa aplicación no se ejecutaría en otra cosa que no sea 1.4.2. Todo lo demás que he tratado (algunos de ellos bastante importantes) han llegado a 1.6 muy bien. No se requieren modificaciones.
YMMV, por supuesto, así que tendrás que probarlo y ver ...
Sun mantiene una lista de incompatibilidades que se presentan con cada nueva versión de Java.
- Notas de la versión Java SE 6: Compatibilidad
- Incompatibilidades en J2SE 5.0 (desde 1.4.2)
- Compatibilidad con Java 2 Platform, Standard Edition Version 1.4.2 Compatibilidad con versiones anteriores
El último documento para 1.4.2 tiene enlaces a las notas de compatibilidad de nuevo a JDK 1.0.
En general, la compatibilidad con versiones anteriores de las JVM de Sun es muy buena, pero no perfecta. He visto tres aplicaciones muy grandes migrar de 1.3 a 1.5 y solo encuentro una pequeña cantidad de problemas, el más grande de los cuales fue una máscara Swing yendo a un ciclo de manejo de eventos sin fin y congelando la aplicación bajo 1.4
Es poco probable que la parte del servidor cause problemas, pero en Swing se han producido cambios bastante grandes bajo el capó, especialmente entre 1.3 y 1.4: el subsistema de enfoque fue completamente reescrito, por ejemplo.
Todavía es posible que la aplicación se ejecute sin problemas, pero definitivamente debe hacer pruebas exhaustivas.
Sun intenta mantener un alto nivel de compatibilidad con versiones anteriores, por lo que posiblemente solo pueda instalar la nueva JVM y reiniciar su aplicación con ella.
Un documento que describe las incompatibilidades hacia atrás de Java 1.6 con una versión anterior está aquí . Este documento vincula los documentos de compatibilidad para Java 1.5 y Java 1.4 también. Probablemente desee leer estos documentos para conocer posibles trampas.
Java 1.5 y Java 1.6 introdujeron nuevos formatos de archivos de clase. La JVM también ejecutará los viejos archivos de clase, pero la recompilación de su código, especialmente con JDK 1.6, ayudará a la nueva JVM a aprovechar algunos cambios para agilizar su aplicación. Entonces podrías considerar recompilar.
Además, se introdujeron algunas palabras clave nuevas, a saber, assert (en 1.4) y enum (en 1.5) (como ya mencionó Yuval). Si usa estas palabras como identificadores, una recompilación fallará, pero los viejos archivos de clase funcionarán. Puede proporcionar el switch -source
a javac para que se pueda compilar: '' javac -source 1.3
'' compilará el código sin assert y enum como palabra clave.