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
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.
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-)
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.
Sun mantiene una lista de las incompatibilidades que se presentan con cada nueva versión de Java.
- Java SE 6 Release Notes: Compatibility
- Incompatibilities in J2SE 5.0 (since 1.4.2)
- Java 2 Platform, Standard Edition Version 1.4.2 Compatibility with Previous Releases
El último documento de 1.4.2 tiene enlaces a la compatibilidad observa de nuevo a JDK 1.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 ...
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.
- 1. Cambiando la plataforma java en la que se ejecuta netbeans
- 2. Cambiando la estructura de Maven (src/java a src/Javasource)
- 3. Estadísticas de la versión de Java
- 4. Determine la versión de Linux desde java
- 5. ¿Cómo se relaciona la versión de Java de Android con una versión de Java SE?
- 6. cambiando la estructura de git
- 7. Java: encuentre la versión de tzdata en uso, independientemente de la versión de JRE
- 8. Administrar la compatibilidad de la versión de Java
- 9. Determinación de la versión de Java SDK en la Mac
- 10. Cambiando la accesibilidad de la entidad
- 11. cómo verificar la versión de jre usando la aplicación java
- 12. Cambiando los valores de las variables en los métodos, Java
- 13. ¿Cuál es la mejor manera de usar la versión de archivo y la versión de ensamblaje?
- 14. cambiando la visibilidad usando javascript
- 15. ¿Equivalente Java a la clase de versión de .NET?
- 16. ¿Hay una versión mobi de la especificación de lenguaje Java?
- 17. ¿Cuál es la versión C++ de ArrayList de Java?
- 18. ¿Qué es la Id. De versión de serie en Java?
- 19. Cambiando la definición de bigotes en geom_boxplot
- 20. Cambiando la posición de Android Action Bar
- 21. Cambiando la identidad de Tor en R
- 22. Cambiando programáticamente la pestaña seleccionada de tabBarController
- 23. Cambiando la vinculación de un nombre
- 24. Cambiando la extensión de archivo en Python
- 25. cambiando la referencia de un AJAX POST
- 26. Maven versión plugin: especificar el compilador Java versión
- 27. Cambiando el volumen en Java al usar JLayer
- 28. ¿Cómo cambiar la versión de Java utilizada por TOMCAT?
- 29. (java) ObjectInputStream deserialización de la versión incorrecta del objeto
- 30. Ant está usando la versión incorrecta de Java
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
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? –
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