Загалом, існує ряд досить широких змін, щоб полегшити роботу програміста. Ваш менеджер може не надто перейматися подібними речами, але змушуючи програмістів витрачати менше часу на роздуми про код котла, і, таким чином, мати більше часу на роздуми над реальною метою того, що вони реалізують, повинно підвищити ефективність, зменшити помилки тощо, що може бути дуже вагомим аргументом. У Oracle є досить обширний перелік змін , але він досить тривалий, тому я підсумую якнайбільше.
Мовні функції включають:
- Менше котла на Generics. Код
Map<String, String> myMap = new HashMap<String, String>();
можна зменшити до Map<String, String> myMap = new HashMap<>()
. Компілятор може зробити висновок про загальні типи, потрібні праворуч з лівого боку, тому ваш код стає трохи коротшим та швидшим для читання.
- Струни зараз працюють в операторах переключення , використовуючи семантику
.equals()
методу замість ==
.
- Автоматичне управління ресурсами за допомогою пробних ресурсів. Це робить код чистішим, але також має перевагу перед старим стилем пробування / нарешті на основі коду. Якщо в операторі спробу буде викинуто виняток, а потім буде закрито інше під час закриття, код, який використовує традиційні операції try / нарешті, повністю втратить вихідний виняток і передасть лише той, який був кинутий у остаточному блоці. У заяві "спробу використання ресурсів" час виконання буде придушувати виняток, який виклики close () викинув, і передати оригінальний виняток у стек, припускаючи, що цей оригінальний виняток є тим, що викликав усі проблеми в першій місце. Крім того, замість того, щоб залишити інший виняток зі сміттєзбірника, це придушення дозволяє витягнути близькі винятки за допомогою
Throwable.getSuppressed
.
- Числові літерали можна полегшити для читання. Усі цифрові літерали дозволяють підкреслити , тому такі речі
int n = 1000000000
можна зробити набагато читабельнішими int n = 1_000_000_000
, що набагато простіше розібратися як один мільярд, і складніше неправильно вводити, не помічаючи. Також бінарні літерали дозволені у формі 0b10110101
, що робить код, який працює з бітовими полями, трохи приємніше читати.
- Обробка декількох типів винятків у одній і тій самій заяві вилову може бути виконана, зменшуючи дублюючи код і потенційно полегшуючи рефакторинг пізніше.
Кожна з цих змін - це те, про що ваш менеджер може не піклуватися безпосередньо, але вони полегшують написання правильного коду без особливих зусиль і думок, звільняючи розум трохи більше зосередитися на фактичній логіці, яку ви намагаєтеся для реалізації, а також вони трохи спрощують читання коду пізніше, роблячи налагодження трохи швидшим.
Що стосується API, також відбулось ряд оновлень API:
- З точки зору безпеки , кілька методів шифрування додано / застаріло, оскільки криптовалюта рухається вперед.
- Файл IO було змінено ( це може бути кращим посиланням ), додавши кращу абстракцію в ряді місць. Я особисто не занурювався в нові речі вводу-виводу, але це виглядає як дуже корисний капітальний ремонт, що значно полегшує роботу з файловою системою без особливого болю.
- Підтримка Unicode - це Unicode 6.0, а також ряд інших удосконалень інтернаціоналізації.
- Java2D , про який ви згадували у своєму запитанні, було вдосконалено. Краща підтримка шрифту Linux, краща візуалізація X11 на сучасних машинах та обробка тибетських сценаріїв.