2008-11-04 16 views
7

Tengo un servidor - aplicación de cliente 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?Cambiando la versión de Java

Respuesta

11

Sun trata de mantener un alto nivel de compatibilidad con versiones anteriores, por lo que, posiblemente, sólo tiene que instalar la nueva JVM y reiniciar la aplicación de la misma.

Un documento que describe las incompatibilidades hacia atrás de Java 1.6 con una versión anterior es here. 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 se mencionó en Yuval). Si usa estas palabras como identificadores, una recompilación fallará, pero los viejos archivos de clase funcionarán. Puede proporcionar el interruptor -source en javac para que se pueda compilar: 'javac -source 1.3' compilará el código sin afirme y enum como palabra clave.

4

En la parte superior de mi cabeza, busque 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 las marcará como errores de compilación si ve ellos.

Yuval = 8-)

2

Cuando me mudé de 1.4.2 a 1.5 en un pequeño applet que trabajé, un montón de cosas se rompió: actualización de la pantalla tiene todo poco firme, elementos movidos, etc.

JRE de Sun 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 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.

+3

En mi experiencia, los problemas de actualización de la pantalla entre las versiones generalmente se originan en el uso indebido de las API de Swing que nunca se garantizó que funcionen. Sin embargo, definitivamente hay excepciones a esa experiencia. :) – jsight

+3

Nunca escuché que un método de desaprobación se elimine realmente. Algunos métodos obsoletos de 1.0.x todavía están en Java 6. ¿Puedes darnos algún ejemplo? –

+0

en este momento, no me sorprende: no he tocado Java desde la versión 1.4.2, pero definitivamente hubo algunos problemas con el intento de usar llamadas de la era 1.2 en 1.4.2 – warren

0

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.

tu caso es distinto, por supuesto, por lo que tendrá que probarlo y ver ...

3

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 encontrar solo una pequeña cantidad de problemas, el más grande de los cuales era una máscara Swing yendo a un ciclo de manejo de eventos sin fin y congelando la aplicación bajo 1.4

El servidor es poco probable que la pieza cause problemas, pero se han producido cambios muy grandes bajo el capó en Swing, 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.

Cuestiones relacionadas