В целом, существует ряд довольно широких изменений, облегчающих работу программиста. Ваш менеджер, возможно, не слишком заботится о таких вещах, но заставляет программистов тратить меньше времени на размышления о шаблонном коде и, таким образом, иметь больше времени, чтобы подумать о реальной цели того, что они реализуют, должны повысить эффективность, уменьшить количество ошибок и т. Д., что может быть очень весомым аргументом. У Oracle довольно обширный список изменений , но он довольно длинный, поэтому я подведу итоги.
Языковые функции включают в себя:
- Меньше шаблон на Generics. Код
Map<String, String> myMap = new HashMap<String, String>();
может быть уменьшен до Map<String, String> myMap = new HashMap<>()
. Компилятор может вывести обобщенные типы, необходимые справа, слева, поэтому ваш код становится немного короче и быстрее для чтения.
- Строки теперь работают в выражениях switch , используя семантику
.equals()
метода вместо ==
.
- Автоматическое управление ресурсами с использованием try-with-resources. Это делает код чище, но также имеет преимущество перед старым стилем кода на основе try / finally. Если в операторе try генерируется исключение, а при закрытии генерируется другое, код, использующий традиционные операторы try / finally, полностью потеряет исходное исключение и пропустит только то, которое было брошено в блоке finally. В операторе try-with-resources среда выполнения будет подавлять исключение, которое вызывает метод close (), и отбрасывать исходное исключение вверх по стеку при условии, что это исходное исключение вызвало все проблемы в первом место. Кроме того, вместо того, чтобы оставить другое исключение сборщику мусора, это подавление позволяет извлекать закрытые исключения с помощью
Throwable.getSuppressed
.
- Числовые литералы можно сделать проще для чтения. Все числовые литералы допускают подчеркивание , поэтому такие вещи
int n = 1000000000
можно сделать намного более удобочитаемыми int n = 1_000_000_000
, что намного проще анализировать как миллиард, и сложнее вводить неправильно, не замечая этого. Также разрешены двоичные литералы в форме 0b10110101
, что делает код, работающий с битовыми полями, более приятным для чтения.
- Обработка нескольких типов исключений в одном и том же операторе catch может быть выполнена, что сокращает дублирование кода и потенциально упрощает последующий рефакторинг.
Каждое из этих изменений - это то, о чем ваш менеджер может не заботиться напрямую, но они немного облегчают написание правильного кода без особых усилий и размышлений, освобождая ваш ум, чтобы немного больше сосредоточиться на реальной логике, которую вы пытаетесь реализовать, и они также облегчают чтение кода позже, делая отладку немного быстрее.
На стороне API также произошел ряд обновлений API:
- С точки зрения безопасности , несколько методов шифрования были добавлены / устарели, так как криптография движется вперед.
- Файловый ввод-вывод был изменен ( хотя это может быть и лучшая ссылка ), добавив некоторую лучшую абстракцию в ряде мест. Лично я не углублялся в новые вещи ввода-вывода, но это выглядит как очень полезный пересмотр, облегчающий работу с файловой системой без особой боли.
- Поддержка Unicode до Unicode 6.0, наряду с рядом других улучшений интернационализации.
- Java2D , который вы упомянули в своем вопросе, был улучшен. Лучшая поддержка шрифтов Linux, лучшая прорисовка X11 на современных машинах и обработка тибетских скриптов.