Estábamos migrando de Java 6 a Java 7 . El proyecto está retrasado y corre el riesgo de caerse, en cuyo caso continuará utilizando Java 6.
¿Cuáles son las mejoras específicas en Java 7 con las que podríamos volver a nuestro administrador y convencerlo de que es importante usar JDK 7? Buscando correcciones de errores que podría resaltar en Oracle Java 7 (con respecto a Java 6). Las correcciones en seguridad, rendimiento, Java 2D / impresión, etc. serán más vendibles en mi caso. Las correcciones del compilador, por ejemplo, no serán de mucha utilidad.
[Estoy visitando muchos sitios como la guía de adopción de Oracle , la base de datos de errores, preguntas sobre Stack Overflow].
Actualización: gracias por las respuestas. Reprogramamos la actualización para la próxima versión. Lo más cerca que estuvimos fue seguridad. Aceptando la respuesta más votada.
Respuestas:
Java 6 llegó a EOL en febrero de este año y ya no recibirá actualizaciones públicas (incluida la seguridad) a menos que compre un soporte empresarial muy costoso.
Esa debería ser toda la razón necesaria.
Además, la evidencia abrumadora sugiere que la compatibilidad con versiones anteriores de los tiempos de ejecución de Java es excelente. Lo más probable es que solo tenga que reemplazar las instalaciones de Java 6 con Java 7 y todas las aplicaciones continuarán funcionando sin ningún problema. Por supuesto, esto no está garantizado y se recomiendan pruebas exhaustivas para confirmar que efectivamente no habrá problemas.
fuente
En general, hay una serie de cambios bastante amplios para facilitar las cosas al programador. Es posible que su gerente no se preocupe demasiado por esas cosas, pero hacer que los programadores pasen menos tiempo pensando en el código repetitivo y, por lo tanto, tengan más tiempo para pensar sobre el objetivo real de lo que están implementando, debería aumentar la eficiencia, disminuir los errores, etc. lo cual puede ser un argumento muy poderoso. Oracle tiene una lista bastante extensa de cambios , pero es bastante larga, por lo que resumiré tanto como sea posible.
Las características del lenguaje incluyen:
Map<String, String> myMap = new HashMap<String, String>();
se puede reducir aMap<String, String> myMap = new HashMap<>()
. El compilador puede inferir los tipos genéricos necesarios en el lado derecho desde la izquierda, por lo que su código se vuelve un poco más corto y más rápido de leer..equals()
método en lugar de==
.Throwable.getSuppressed
.int n = 1000000000
se pueden convertir en mucho más legiblesint n = 1_000_000_000
, lo que es mucho más fácil de analizar como mil millones y más difícil de escribir incorrectamente sin darse cuenta. Además, los literales binarios están permitidos en el formulario0b10110101
, lo que hace que el código que funciona con campos de bits sea un poco más agradable de leer.Cada uno de estos cambios es algo que a su gerente podría no importarle directamente, pero hacen que sea un poco más fácil escribir el código correcto sin tanto esfuerzo y pensamiento, liberando su mente para concentrarse un poco más en la lógica real que está intentando para implementar, y también hacen que sea un poco más fácil leer el código más tarde, lo que hace que la depuración sea un poco más rápida.
En el lado de la API, también se han producido varias actualizaciones de la API:
fuente
String.equals
método" (del documento al que se vinculó). En realidad, el compilador es libre de optimizar para queString.equals
no se use ... siempre que el efecto neto sea el mismo. (Y, esperaría que useString.hashcode
más de un cierto número de casos de cambio).try-with-resources es una característica que vale la pena actualizar a Java 7, todo por sí mismo. Las fugas de recursos / fugas de memoria son un gran riesgo en el desarrollo de Java y TWR reduce significativamente ese riesgo.
Agregaré que la nueva abstracción de archivos NIO.2 y las capacidades asincrónicas también valen la pena si su aplicación tiene características de E / S de archivos / redes.
fuente
Puede haber una razón para que no cambie a Java 7: Si usted tiene que utilizar la VM de Oracle y su software o bien se ejecuta en el hardware incorporado o se distribuirá con hardware integrado: Oracle cambió su licencia de JRE para que quede sin licencia si está por encima se cumplen las condiciones; necesitará comprar una licencia incorporada de Java SE. Consulte ¿Qué significa "sistema de propósito general" para Java SE Embedded?
fuente