proyecto - java consola
¿Un programa hecho con Java 8 se puede ejecutar en Java 7? (6)
Estoy un poco confundido.
Oracle dice que Java 8 es altamente compatible con Java 7 (al revés). Pero, ¿qué posibilidades existen de que el programa Java 8 se pueda ejecutar con éxito en Java 7 (SE / EE)?
Si el punto uno fuera verdadero, ¿las aplicaciones Java 8 se implementarán y ejecutarán en un servidor Java 7? por ejemplo, Tomcat 8 o WildFly?
Bueno, existe la opción del compilador -target , que le permite apuntar al formato de archivo de clase de las versiones anteriores de Java. Sin embargo, esto no soluciona ni detecta cosas como el uso de clases o métodos introducidos en las API de JDK después de la versión de destino.
En general, las nuevas versiones tienen que ofrecer compatibilidad con versiones anteriores, por lo que las personas no tienen que lanzar su trabajo y pueden actualizarse fácilmente. La otra manera (la versión más reciente que se ejecuta en la versión anterior) no es necesariamente cierta porque, si utiliza alguna función implementada nueva, esta característica obviamente no existe en la versión anterior y no funcionará.
Saludos
En general, no.
La compatibilidad con versiones anteriores significa que puede ejecutar el programa Java 7 en el tiempo de ejecución de Java 8, y no al revés.
Hay varias razones para eso:
Bytecode está versionado y JVM verifica si es compatible con la versión que encuentra en los archivos .class.
Algunas construcciones de lenguaje no se pueden expresar en versiones anteriores de bytecode.
Hay nuevas clases y métodos en los nuevos JRE que no funcionan con los más antiguos.
Si realmente quieres (consejo: no), puedes forzar al compilador a tratar la fuente como una versión de Java y emitir un código de bytes para otra, usando algo como esto:
javac -source 1.8 -target 1.7 MyClass.java
( lo mismo para Maven ), y compilar contra JDK7, pero en la práctica no funcionará más a menudo que funcionará. Te recomiendo que no lo hagas
EDIT : JDK 8 aparentemente no es compatible con esta combinación exacta, por lo que no funcionará. Algunas otras combinaciones de versiones funcionan.
También hay programas para convertir nuevos programas de Java para que funcionen en JVM anteriores. Para convertir Java 8 a 5-7, puedes probar https://github.com/orfjackal/retrolambda Para obtener menos de 5, puedes elegir uno de estos: http://en.wikipedia.org/wiki/Java_backporting_tools
Ninguno de estos hacks le brindará nuevas clases y métodos de Java 8, incluida la compatibilidad de programación funcional para colecciones, secuencias, API de tiempo, API sin firma, etc. Así que diría que no vale la pena.
O bien, como quiere ejecutar sus aplicaciones Java 8 JEE en un servidor de aplicaciones, simplemente ejecute todo su servidor en Java 8, puede funcionar.
Generé stubs desde WSDL, compilado en java 8 y pude desplegarlos en un servidor que tiene java 1.6 jvm.
Sin compatibilidad con versiones anteriores significa que los programas Java7 se ejecutarán bajo Java8, pero lo contrario no siempre es cierto
También puede verificar la compatibilidad con versiones anteriores de Oracle Limit.
La compatibilidad hacia atrás significa
Puede ejecutar una configuración más baja en una configuración más alta, no Vice-Versa
.