Comments 25
а дальше что, какой движок следующий?
«карусель», конечно, получается — не успели отказаться от Rhino, уже и Nashorn выкидывают.
(имхо, последнего не жалко: я так и не нашел у Nashorn штатного api для программного контроля и отладки скриптов. а вот с Rhino получилось нарисовать собственный отладчик скриптов в нашем окружении. )
но, все-таки — кто в курсе вопроса? ждем возвращения Rhino или будут скрещивать ужа с ежом в формате java+v8?
>An alternative is for a set of credible developers to express a clear desire to maintain Nashorn going forward
А так да, GraalVM уже покрывает одним выстрелом не только js.
Хоть и LTS, но с точки зрения фич релиз абсолютно проходной. Тут больше антифич, когда что-то выкосили. Ноль изменений в Stream API. Гениальный метод isEmpty в Optional.
Это конечно хорошо, что они почистят старый код, хотя и немного непривычно после долгих лет обратной совместимости.
Хочу уточнить, что LTS он ТОЛЬКО для тех, кто купит лицензию. Все остальные переводятся в ряды бесплатных тестировщиков.
Из хоть как-то значимого для разработчиков бизнес-логики (не перформанс-инженеров) по сути появились 2 фичи:
1) JEP 330: Launch Single-File Source-Code Programs.
Суть: если файл с исходниками на Java не ссылается ни на какие другие файлы с исходниками, т.е. является SFSCP (Single File Source-Code Program), например:
// java HelloWorld.java
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World!!!");
}
}
, то запустить его теперь можно просто так:
java HelloWorld.java
2) JEP 323: Local-Variable Syntax for Lambda Parameters (var`ы в лямбда-параметрах).
Суть — в лямбдах теперь перед параметрами можно поставить ключевое слово var
. И тип тогда сам выведится. Какую проблему это решает, спросите вы? Ведь в лямбдах и раньше можно было не писать тип вовсе и он итак прекрасно выводился… На самом деле проблема в том, что иногда нужно аннотировать типы (фича появилась в Java 8) в лямбдах — и раньше для этого приходилось явно прописывать тип, а теперь можно вместо этого их выводить — поставить вместо типа var
— и тип выведется из контекста, но теперь перед ним можно поставить аннотацию. Раньше было нельзя.
Это можно использовать в tools`ах типа CheckerFramework`а и доп. проверок в IDE — например, аннотаций типа NotNull и Nullable, предоставляющих такую фичу, как nullability в Java (не Kotlin, конечно, но лучше, чем ничего).
Java 11 / JDK 11: General Availability