Деветте нови функции на Java 11
Java 11, пусната през септември 2018 г., е основна новост на езика Java, тъй като представлява версия на LTS (Long Time Support), която ще се поддържа от Oracle до 2023 г. - и дори след това, ако някой иска да се възползва от обширна поддръжка. В резултат на това Java 11 изглежда е задължителна версия за следващите няколко години. В тази статия ви каня да се запознаете с селекция от 9 нови функции, съдържащи се в JDK 11.

1. Въведете извод за аргументи на ламбда изрази
Това развитие е продължение на извода за тип на променливи, добавени с Java 10. Сега е възможно да не се посочва изрично типа на ламбда параметрите, като просто се използва ключовата дума var.
Това може да бъде както печалба в яснотата, лаконичността и времето при използване на някои доста тежки видове писане. Разбира се, вече не беше задължително да се посочва тип за ламбда параметрите, следователно декларацията:
е напълно допустима.
И така, какъв е смисълът от извод за тип в този случай? Полезно е, ако искаме да анотираме нашите параметри, което е невъзможно без декларация за тип. В java 11 можем например да напишем изрази като:
2. Опростено стартиране на еднофайлови програми
Преди Java 11, за да стартираме традиционната HelloWorld.java, изпълнихме:
Сега с Java 11 можем директно да стартираме приложения, съдържащи се в един файл чрез:
Тази функция, в допълнение към JShell, допълва инструментите, достъпни за начинаещи разработчици и също така позволява на Oracle да развие Java до език, който е по-лесен за работа. Това също може да илюстрира желанието му да включи Java в хода на скриптовите езици в бъдеще. Случай за следване !
3. Еволюция на API за клиент на http
За потребителите на клиентския API на HTTP, въведен от Java 9 и актуализиран от Java 10, имайте предвид, че внедряването му е почти изцяло ревизирано от Java 11. Oracle гарантира, че тези промени не засягат API в една точка. перспектива на ниво, като същевременно се подобряват редица технически точки след обратна връзка от общността.
Внедряването вече е напълно асинхронно. Потокът от данни вече може да се проследи по-лесно, от потребителски заявки до сокети. Това би трябвало значително да намали сложността на кода и да увеличи максимално възможността за повторно използване между HTTP/1.1 и HTTP/2.
Името на API модула и пакета вече е java.net.http.
4. Някои API
JDK 11 вгражда редица нови класове и методи, вградени във вече съществуващи модули. Списъкът по-долу е неизчерпателен преглед, подчертаващ допълненията, които ми се струват най-важните:
5. Управление на видимостта на атрибутите на вложени класове
Java позволява декларирането на множество класове в един изходен файл, като вложени класове. От гледна точка на потребителя обаче те обикновено се считат за принадлежащи към „същия клас“. И следователно потребителите очакват от тях да споделят общ режим на достъп за атрибути или методи на родителския клас. За да запазят тези очаквания, компилаторите трябва да разширят достъпа за частни атрибути до класове в същия пакет, като добавят мостове за достъп. Извикването на частен член се компилира в извикване на генериран от компилатор метод (getter) в целевия клас, който от своя страна осъществява достъп до предвидения частен член.
Например, в случай на клас NestedClass, вложен в клас NestingClass, който се нуждае от достъп до един от частните атрибути на класа хост: