Зарелизилась Java 11 — что же там нового?

Парни, это случилось. Наконец-то зарелизилась следующая версия long-term support (LTS) версия Java 11 — https://blogs.oracle.com/java-platform-group/introducing-java-se-11. Что же хорошего там появилось?

В первую очередь, к сожалению, надо поговорить за плохие новости. Пришло время сказать: «Пока» — Ораклу. Увы, пацаны решили, что хватит за бесплатно поставлять LTS-версии Джавы. Теперь все длинные релизы будут только за деньги. Oracle просто позволит вам пользоваться 11-ой джавой до тех пор, пока не появится 12-ая версия, то есть, около 6 месяцев (примерно, до марта 2019 года, когда должен состояться релиз Java 12).

Как жить дальше? Если честно, не очень понятно. У нас есть ряд Java-вендоров: IBM, RedHat, Oracle, Azul и Excelsior JET (последние две ещё и из Новосибирска, респект пацанам, делают реальную работу). Ещё у нас есть OpenJDK — по факту, почти нолная копия версии Oracle Java. Бесплатно, как я понимаю, сейчас можно использовать только OpenJDK. Вроде как, Java 11 от OpenJDK будет доступна вплоть до Сентября 2022 года. Наверное, это сейчас единственный здравый вариант.

По поводу Фич. Их, на самом деле, довольно много. Ведь весь мир сидел на Java 8, а сейчас все начнут мигрировать на Java 11. Поэтому, по факту мы рассматриваем сразу 3 релиза. На самом деле, уже есть довольно много статей, которые описывают, что произошло за это время. Например, эта — https://winterbe.com/posts/2018/09/24/java-11-tutorial/, или эта — https://blog.codefx.org/java/java-11-migration-guide/.

Если кратко, то можно выделить следующие важные вещи:

  • Ключевое слово var для локальных переменных. Все, кто ревьюит код в браузере, заплакали в этом месте.
    var text = "Hello Java 10";
  • HttpClient, который был добавлен в инкубатор Java 9, теперь стал полноченной частью языка. С этого момента можно легко и просто писать HTTP-запросы синхронно, или асинхронно. Правда и раньше было можно: Апач, Нетфликс и КО уже давно сделали свои реализации клиентов.
  • Удобные фабричные методы для коллекций:
    var list = List.of("A", "B", "C");
  • Несколько новых Garbage collectors (GC). Некоторые из них — забавные — Epsilon G, который никогда не освобождают память. Другие же — ZGC — очень конкурентное решение, способен работать с огромными Heap. Маленькое Латенси. В общем, ZGC — прямой конкурент Shenandoah Алексея Шепелёва.
  • Модули Java EE удалены из стандартной поставки java. Теперь их надо ставить отдельно. CORBA тоже удалена. JavaFX вы тоже не найдёте в Джаве (ставьте отдельно, если надо).

Ещё важно, что появилась возможность использовать GraalVM JIT буквально с помощью нескольких ключиков. Об этом часто любит рассказывать Олег Чирухин (парень, который щас херачит по 7 статей в неделю на хабр за джаву). Вроде как, использование этого JIT-а принесёт вам прирост перфоманса. Но это всё такое. надо тестить на ваших нагрузках. Кстати, есть и второй проповедующий Грааль в Рунете, тоже Олег — Oleg Šelajev. Так что, если у вас будут проблемы с Граалем, есть пацаны, с кем можно перетереть за это.

Конечно же, это далеко не полный список того, что появилось нового в Java 11. Есть масса оптимизаций в компиляторе, а также виртуальной машине, которые просто автоматически ускорят ваши программы. Кроме того, добавлются новые фичи, направленные на секьюрность. Например, поддержка TLS 1.3. Поэтому, в любом случае стоит обновляться, как бы это не было сейчас больно.

Категории: Java


Другие записи из этой рубрики: