Java 11 / JDK 11: General Availability

    Товарищи по оружию, Java-бойцы Хабра! Этот день мы приближали как могли.


    Сегодня стала доступна релизная версия JDK 11 — референсная реализация Java 11, и первая LTS-версии Java, выпущенная по быстрому 6-месячному релизному циклу. Самый большой и важный релиз новейшего времени, который даст толчок всему Java-сообществу переходить на самые новые и продвинутые технологии.




    Прошло четыре недели с момента выпуска 28-ого билда, и за это время не появилось ни одного бага уровня P1. Это означает, что Java 11 можно считать вышедшей и готовой для полноценного промышленного использования.


    → Сборку OpenJDK можно и нужно скачать вот отсюда


    Это большой и важный релиз, объединяющий в себе 17 больших фичей и бесчисленное количество багов в трекере. Давайте ещё раз оглянемся на самые большие фичи:


    • JEP 181: Nest-Based Access Control
    • JEP 309: Dynamic Class-File Constants
    • JEP 315: Improve Aarch64 Intrinsics
    • JEP 318: Epsilon: A No-Op Garbage Collector (Experimental)
    • JEP 320: Remove the Java EE and CORBA Modules
    • JEP 321: HTTP Client (Standard)
    • JEP 323: Local-Variable Syntax for Lambda Parameters
    • JEP 324: Key Agreement with Curve25519 and Curve448
    • JEP 327: Unicode 10
    • JEP 328: Flight Recorder
    • JEP 329: ChaCha20 & Poly1305 Cryptographic Algorithms
    • JEP 330: Launch Single-File Source-Code Programs
    • JEP 331: Low-Overhead Heap Profiling
    • JEP 332: Transport Layer Security (TLS) 1.3
    • JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
    • JEP 335: Deprecate the Nashorn JavaScript Engine
    • JEP 336: Deprecate the Pack200 Tools and API

    Спасибо всем, кто писал хабропосты о Java и JDK, всем, кто писал комментарии и тестировал свежие фичи, ваш труд и вклад очень важен и не останется незамеченным.


    Вперёд к JDK 12!

    JUG.ru Group

    1 342,46

    Конференции для взрослых. Java, .NET, JS и др. 18+

    Поделиться публикацией
    Комментарии 25
      +2
      Версию на java.com так и не обновили.
        +9

        Так туда и не надо ходить. Весь интернет уже обсосал Java11 trap. Главное — не качать JDK от Оракла. Тогда всё будет нормально.


        Иначе — Ларри позвонит.

          +2
          Не просто не обновили, там всё ещё предлагают Java 8.
            +7
            Вы еще попросите обновить в установищике надпись «3 Billion Devices Run Java».
            +11
            Надо по случаю праздника запускать Epsilon GC, пусть память льётся рекой, как шампанское!
              +2
              >> JEP 335: Deprecate the Nashorn JavaScript Engine

              а дальше что, какой движок следующий?
              «карусель», конечно, получается — не успели отказаться от Rhino, уже и Nashorn выкидывают.
              (имхо, последнего не жалко: я так и не нашел у Nashorn штатного api для программного контроля и отладки скриптов. а вот с Rhino получилось нарисовать собственный отладчик скриптов в нашем окружении. )

              но, все-таки — кто в курсе вопроса? ждем возвращения Rhino или будут скрещивать ужа с ежом в формате java+v8?

                +3
                Видимо, GraalVM
                  +2
                  Если хотите оставить этот движок, можете стать его мейнтейнером:
                  >An alternative is for a set of credible developers to express a clear desire to maintain Nashorn going forward

                  А так да, GraalVM уже покрывает одним выстрелом не только js.
                    +1
                    Мда, у меня в проекте на бекенде часть логики как раз через JS была реализована и работала под Nashorn. Сложно ли перейти будет на GraalVM?
                      +1
                      Можно использовать github.com/eclipsesource/J2V8
                        0
                        Graal.js — это не drop in replacement для Nashorn, это отдельный продукт. API в целом совместимое, но есть шероховатости. Нужно будет вручную все проверять.
                      +5

                      Хоть и LTS, но с точки зрения фич релиз абсолютно проходной. Тут больше антифич, когда что-то выкосили. Ноль изменений в Stream API. Гениальный метод isEmpty в Optional.

                        +1
                        На словах «гениальный метод» вспомнилось, как они добавили «оператор Элвиса»…
                          +1
                          В чём сложность наконец-то его реализовать в синтаксисе? Не понимаю. Методы в Objects добавлять (аля Objects.requireNonNullElse), какое-то ну такое… нововведение.
                          +6
                          Странное противопоставление «хоть и LTS, но с точки зрения фич проходной». По-моему, LTS с точки зрения фич как раз и должен быть проходным: он про стабильность, поэтому все крупные фичи лучше в других версиях вносить, чтобы в случае чего до LTS успеть поправить.
                            +1
                            Ну LTS-релизики ведь изначально предполагаются консервативными и стабилизирующими. Выкинули что не нужно и не стали добавлять то, что могут выкинуть
                              +1
                              У меня на работе проект завязан на IBM OS/400. Последняя версия JVM доступная для нас Java8. IBM выпустили пресс-релиз о том что следующим поддевживаемым релизом для нас будет Java11. Сроков когда он станет доступным так никто и не дал. Некоторые сотрудники шутят о том что к Java12-13 мы обновимся на 11. И судя по их неспешности и реактивности, нам так и прийдётся проскакивать 2-3 релиза до следующего LTS.
                              +1

                              Это конечно хорошо, что они почистят старый код, хотя и немного непривычно после долгих лет обратной совместимости.

                                +1
                                У меня вопрос лицензия java11 уже позволяет её использовать в коммерческих целях?
                                  0
                                  Всё в порядке с лицензией. Достаточно не использовать сборку от Oracle.
                                  +2
                                  Релиз релизом, а Burg Eltz (на фото) определённо стоит посещения :)
                                    +2

                                    Хочу уточнить, что LTS он ТОЛЬКО для тех, кто купит лицензию. Все остальные переводятся в ряды бесплатных тестировщиков.

                                      +2
                                      Умри, CORBA, в мучениях!
                                        –1

                                        Как будто что-то хорошее.

                                        +1

                                        Из хоть как-то значимого для разработчиков бизнес-логики (не перформанс-инженеров) по сути появились 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, конечно, но лучше, чем ничего).

                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                        Самое читаемое