Мы мигрировали с Java 6 на Java 7 . Проект отстает от графика и рискует быть отброшенным, и в этом случае он продолжит использовать Java 6.
Каковы конкретные улучшения в Java 7, с которыми мы могли бы вернуться к нашему менеджеру и убедить его, что важно использовать JDK 7? Ищите исправления ошибок, которые я мог бы выделить в Oracle Java 7 (относительно Java 6). Исправления в безопасности, производительности, Java 2D / печати и т. Д. Будут более продаваемыми в моем случае. Например, исправления компилятора не принесут особой пользы.
[Я перебираю многие сайты, такие как руководство по внедрению Oracle , база данных ошибок, вопросы по переполнению стека].
Обновление: спасибо за ответы. Мы перенесли обновление на следующий выпуск. Ближе всего у нас была охрана. Принятие ответа с наибольшим количеством голосов.
Ответы:
Java 6 достигла EOL в феврале этого года и больше не будет получать публичные обновления (включая безопасность), если вы не купите очень дорогую поддержку предприятия.
Это должно быть все необходимое основание.
Кроме того, неопровержимые данные свидетельствуют о превосходной обратной совместимости для сред выполнения Java. Скорее всего, вам просто нужно заменить установки Java 6 на Java 7, и все приложения просто продолжат работать без проблем. Конечно, это не гарантируется, и рекомендуется проводить обширные испытания, чтобы подтвердить, что проблем действительно не будет.
источник
В целом, существует ряд довольно широких изменений, облегчающих работу программиста. Ваш менеджер, возможно, не слишком заботится о таких вещах, но заставляет программистов тратить меньше времени на размышления о шаблонном коде и, таким образом, иметь больше времени, чтобы подумать о реальной цели того, что они реализуют, должны повысить эффективность, уменьшить количество ошибок и т. Д., что может быть очень весомым аргументом. У Oracle довольно обширный список изменений , но он довольно длинный, поэтому я подведу итоги.
Языковые функции включают в себя:
Map<String, String> myMap = new HashMap<String, String>();
может быть уменьшен доMap<String, String> myMap = new HashMap<>()
. Компилятор может вывести обобщенные типы, необходимые справа, слева, поэтому ваш код становится немного короче и быстрее для чтения..equals()
метода вместо==
.Throwable.getSuppressed
.int n = 1000000000
можно сделать намного более удобочитаемымиint n = 1_000_000_000
, что намного проще анализировать как миллиард, и сложнее вводить неправильно, не замечая этого. Также разрешены двоичные литералы в форме0b10110101
, что делает код, работающий с битовыми полями, более приятным для чтения.Каждое из этих изменений - это то, о чем ваш менеджер может не заботиться напрямую, но они немного облегчают написание правильного кода без особых усилий и размышлений, освобождая ваш ум, чтобы немного больше сосредоточиться на реальной логике, которую вы пытаетесь реализовать, и они также облегчают чтение кода позже, делая отладку немного быстрее.
На стороне API также произошел ряд обновлений API:
источник
String.equals
метод» (из документа, на который вы ссылались). На самом деле, компилятор может оптимизировать его так, чтобыString.equals
он не использовался ... при условии, что чистый эффект одинаков. (И я ожидаю, что он будет использоватьString.hashcode
выше определенного количества случаев переключения.)примерочных с-ресурсы - это функция, которую стоит обновить до Java 7, и все это само по себе. Утечки ресурсов / утечки памяти представляют собой большой риск при разработке Java, и TWR значительно снижает этот риск.
Я добавлю, что новые абстракции файлов NIO.2 и асинхронные возможности также заслуживают внимания, если в вашем приложении есть функции файлового / сетевого ввода-вывода.
источник
Может быть причина, по которой вам не следует переключаться на Java 7: если вам нужно использовать виртуальную машину Oracle, а ваше программное обеспечение работает на встроенном оборудовании или вы будете распространять ее на встроенном оборудовании: Oracle изменила лицензию JRE, чтобы она не лицензировалась, если указано выше условия выполнены; вам нужно будет купить встроенную лицензию Java SE. См. Что означает «система общего назначения» для Java SE Embedded?
источник