Недели две назад InfoQ напомнил, что официальная поддержка Java 9 заканчивается… в Марте 2018г. (т.е. через 20 дней :)


Вот cсылка на официальный EOL от Oracle, в которой в разделе "Java SE Public Updates" черным по английскому говорится, что Java 9 будет поддерживаться до Марта 2018, а Java 8до Января 2019 (или позже) и Декабря 2020 (или позже).


Уф сколько интересного…
Почему у Java 8 две даты? Что значит загадочное (или позже)? И что, черт возьми, это все значит для нас — разработчиков.


Почему у Java 8 две даты?
Пояснения ко второй дате немного туманны и не дают забыть, как устроена компания Oracle изнутри.


Oracle does not plan to migrate desktops from Java 8 to later versions via the auto update feature. Individuals who require Java SE for non-corporate desktop use will continue to receive updates through at least December 2020. Instead of relying on a pre-installed standalone JRE, we encourage application developers to deliver JREs with their applications. More details will be made available through early 2018.

Давайте разберем этот абзац построчно ибо он того стоит.


Oracle не планирует обновлять рабочие станцие с Java 8 на более поздние версии через опцию auto update.

И не надо. Хоть у кого-то эта штука "включена"? Не знаю ни одного такого:)


Физические лица, которым требуется Java SE для использования на некорпоративных рабочих станциях будут получать обновления (через auto update) как минимум до Декабря 2020.

Т.е. если вы забыли как это "зло" отключить оно еще год будет вам напоминать о себе. А что будет, если после января 2019 Java 8 останется на установленной на "корпоративной" рабочей станции?


Мы просим прикладных разработчиков поставлять JRE вместе с приложениями вместо того, чтобы полагаться, на предустановленную JRE.

Смысл туманен, но скорее всего речь идет об отщепенцах, которые пишут client-side приложения под JRE и предполагают, что JRE уже есть на компьютере и именно последней версии.


Более подробно мы расскажем об этом в начале 2018.

ЧТО!? Что вы там курите...


Я это абзац читаю как


У нас много свободных юристов и если вы поставите на работе обновление Java 8 свежее Декабря 2018г., то мы придем к вам.
Но это еще не точно.

Мне неоднократно доводилось слышать от американских знакомых о попытках Oracle проводить проверки соблюдений лицензионных соглашений около Java технологий (в том числе при использовании коммерческих компонент, развертывание через Docker с "автоматическим" соглашением на лицензионный договор и пр.)


Java 9 — зло которые мы так долго ждали?
Отгадка кроется в разделе "Oracle Java SE Support Roadmap*" (обратите внимание на ссылку в названии раздела — к ней дано пояснение, что все даты приведены "для примера" — короче, очередные юридические "отмазки").


То, что мы называли Java 9 (а также Java 10, которая еще даже не вышла :) — это "промежуточные" не LTS версии Java со сроком жизни 7 месяцев. Ближайшим Java LTS релизом будет Java 11 (18.9 LTS), которая выйдет в Сентябре 2018г.


Мне кажется, что Java 9 и Java 10 — это версии "от разработчиков разработчикам": новый GC, jigsaw, API и даже немного "сахара". Используйте это все, разрабатывайте, но, по возможности, продуктивно не используйте до 18.9 LTS aka Java 11.


Такие дела, коллеги. А какие версии JVM у вас сейчас в продуктивной эксплуатации?


P.S. В сухом остатке — кажется, что Java 9 и Java 10 — это почти то, что мы совсем недавно называли release candidates.

Комментарии (34)


  1. DSolodukhin
    09.03.2018 13:37

    Из активных проектов один на Java 6 (Oracle Java), два на Java 7 (IBM J9).


  1. SagePtr
    09.03.2018 13:47

    Java 9 сломана. Да и сам сталкивался с ситуацией, когда проекты, которые нормально компилировались в предыдущих версиях JDK, переставали собираться в 9-й из-за подобных багов.


    1. FoxyBOA Автор
      09.03.2018 13:54

      RC :) Я почти решил на нее переходить…


    1. olegchir
      10.03.2018 10:28

      С каких пор необходимость тюнить настройки GC стала называться словом «сломана»? Да, надо тюнить. И не только GC. Это нормально.


      1. SagePtr
        10.03.2018 14:44

        А причём тут настройки GC? Или просевшая производительность — это по-вашему единственная проблема 9-й версии?


  1. smer44
    09.03.2018 13:56
    -1

    … то незабываемое чувство, когда версия языка меняется быстрее чем версия проэкта…


  1. maxzh83
    09.03.2018 16:12

    Сидя на Java 8, ощущение от Java 9 такое же, как было от Windows Millenium. Т.е. забавно конечно, но не понятно чем оно настолько лучше Win 98, что стоило бы переползать. Тогда многие стали ждать Win XP…


    1. saboteur_kiev
      09.03.2018 16:16
      -2

      вы хотели сказать win2k?


      1. vlanko
        09.03.2018 21:08

        Нет, Вин2к — отличная стабильная штука, новая ядро. А миллениум (по отзывам) самая глючная 9х.


      1. maxzh83
        09.03.2018 21:45

        Нет, win2k и millenium вышли практически одновременно и это были параллельные ветки. Win2k была развитием NT ядра, которое в итоге победило, но на тот момент win2k была сугубо рабочим инструментом (с играми тяжело там было). Потом вышла Win XP, которая стала win2k для людей. Так что ждем Java 10 )


        1. saboteur_kiev
          10.03.2018 19:53

          Вы зря считаете что я не застал это время. Более чем застал dos 3.22 и ниже.
          Далее — IMHO:

          Всего чего крайне не хватало для домашнего пользователя в winNT (поддержка USB, нормальной версии directX и др.) — ожидалось в win2000, которая могла стать нормальной домашней платформой.

          И к 2000-му, больше ждали win2000 — тогда XP еще не была анонсирована.
          А ME вышла только летом. Поэтому за эти полгода, кто был готов пробовать что-то новое — поставили 2к.

          Миллениум обещался быть шагом вперед по сравнению с 98. Но оказался той же 98-й с обновленными драйверами и навешанными украшениями. Основные проблемы остались (собственно они и не могли уйти без смены ядра ОС).

          К выходу ME, очень многие успели опробовать 2k pro, и успеть привыкнуть к огромным достоинствам и некоторым недостаткам — полгода это много!
          Поэтому переезд на ME подавляющему большинству показался шагом назад.

          Да, возможно в 2000 не все старые игры работали, как в ME, но ведь в основном играли в достаточно небольшой список топовых игр, которые шли нормально (тот же starcraft, doom3, quake и тому подобные) и проблем не испытывали, а вот надежность — выросла в разы.

          P.S. Между прочим, в первые годы у XP хватало хейтеров, ибо она была более требовательна по ресурсам, да и до выхода первого SP хватало проблем.


      1. insolor
        10.03.2018 09:06
        +1

        Windows Millenium Edition (ME) — это последняя ОС линейки Win9x. Windows 2000 — это одна из ОС линейки NT. Это разные ОС.


    1. FoxyBOA Автор
      09.03.2018 16:26
      +1

      Я бы сказал, что Java9 для меня это про JVM + API, а не про синтаксические изменения в самом языке. Хотя type inference Java 10 (var a=1;) тоже ничего. Java 9 — immutable collections, stream changes, options improvement, http improved API и т.д.

      Мне это все сильно напоминает Java 6 после Java 5.


    1. vdem
      09.03.2018 22:28

      Windows ME была продолжением (и как бы завершением) линейки Win 3.1/95/98. Windows XP — это Windows 2k со свистелками и перделками (а если убрать их, то неотличима от Win2k), и это продолжение линейки NT.


      1. WALKER898
        10.03.2018 06:11

        Блин, я почувствовал себя таким старым, когда вижу что уже реально есть люди, нуждающиеся в подобных разъяснениях :(


        1. saboteur_kiev
          10.03.2018 19:57
          +1

          Вы ошибаетесь, молодой человек.


  1. atrosinenko
    09.03.2018 20:45

    Oracle не планирует обновлять рабочие станцие с Java 8 на более поздние версии через опцию auto update.

    И не надо. Хоть у кого-то эта штука "включена"? Не знаю ни одного такого :)

    А зачем отключать автообновление (по крайней мере, обычному пользователю)? На случай, если появится регрессии, или есть другие причины?


    Лично я столько в своё время наслушался про "Очередная уязвимость в Java, мы все умрём!!!!111", что отключение автообновлений для меня выглядит странно (хотя и не факт, что это и правда создаёт так много опасностей для пользователя при условии, что апплеты отключены). По этой же причине несколько странной выглядит официальная рекомендация разводить на компьютерах пользователей зоопарк устаревших версий.


    1. AllexIn
      09.03.2018 21:53

      Автообновления Java — это та штука, которая задалбывает вылезать в самый неподходящий момент и раздражает вообще всех пользователей?


      1. navion
        10.03.2018 18:02

        Всяко лучше, чем окно шифровальщика. Да и ставится по-умолчанию нечётная ветка, где в обновлениях исправляют только уязвимости.


        1. AllexIn
          11.03.2018 14:11

          Нет. Дело в том, что из-за навязчиво неадекватно сделанной системы обновлений, которыая регулярно требует повышения привилегий еще до начала своей работы — её все тупо удаляют.
          Зачем вообще ПО для апдейта требует повышения привилегей на старте? Это что за паттерн?


          1. sevikl
            12.03.2018 16:49

            вы интерфейсы на swing видели? каких паттернов еще требовать от этих людей? перезагружаться не надо перед обновлением — и на том спасибо.


  1. relgames
    09.03.2018 22:57

    Java 8, кое-где 6.
    9 только на своих проектах. Но она сырая, куча библиотек и приложений на ней не работает. Вот последний пример — logstash.


  1. PerlPower
    09.03.2018 23:20
    +2

    Расскажите пожалуйста как проходит день разработчика на Java с версией < 6.


    1. bobzer
      10.03.2018 05:20

      Так же, как и на любой другой версии Java. Встречал проекты на Java > 6, рабочий день на которых — пытка. Встречал проекты, мало изменившиеся с того момента, когда их создали 10+ лет назад на Java 1.4, и рабочий день на них — вполне приятен. Ощущения от работы на проекте зависят не столько от того, НА ЧЁМ он написан, сколько от того, КЕМ он написан.


  1. smple
    10.03.2018 03:37

    Write once, run anywhere — пытаюсь применить это к java 9 со сроком поддержки в 7 месяцев


  1. gnkoshelev
    10.03.2018 09:38

    В продакшене были версии Java 6, 7 и 8. И всегда прекрасно себя чувствовал.
    Непривычно было только один раз года 4 назад, когда с проекта на Java 7 перешёл на проект с Java 6: но к отсутствию dimond operator, try-with-resources, multi-catch exception привык быстро (только некоторые наработки пришлось портировать).


  1. gnkoshelev
    10.03.2018 09:51

    Из того, что может (лично меня) побудить перейти на Java 9 — это стандартный годный HTTP-клиент и jshell, но с этим и подождать можно.


  1. Marui
    10.03.2018 09:56
    +2

    А у нас тут в С++ еще модули не завезли. Живем с хедерами. Плак-плак… Часы компиляции на проект, плак-плак.


  1. olegchir
    10.03.2018 10:22
    +3

    Рейнхольт открытым текстом сказал, что жить «от получки до получки», «от LTS до LTS» — это не самая лучшая идея. Изменений может накопиться так много, что перейти уже не получится. Релизы с коротким циклом — это полноценные настоящие релизы, на них очень сильно рекомендуется переходить.

    Наконец-то Java будет ощущаться как современная технология с быстрым релизным циклом, а не как десятилетнее говно мамонта. Это чудесно!

    Да, придётся кое-что адаптировать и переписывать. Это нормально. Во всём мире, во всех остальных технологиях (включая конкурирующий C# .NET) так делают постоянно.


    1. gnkoshelev
      10.03.2018 11:05

      Я Java бы выучил только за то,
      Что раз написав — используй легко.
      Релизы не часто, но верность хранит
      И качеству кода, и стилю.
      Как часто бывает, когда любой наш коммит
      Останется с нами на годы?
      Совместимости ради полюбишь и ты,
      Друг мой, Java исходные коды.


    1. Marui
      10.03.2018 11:43

      А не как десятилетнее говно мамонта С++


    1. FreeBa
      10.03.2018 12:12
      +1

      Да, придётся кое-что адаптировать и переписывать. Это нормально. Во всём мире, во всех остальных технологиях (включая конкурирующий C# .NET) так делают постоянно.

      Такая бяка только в .NET Core встречалась на ранних этапах. В обычном же .NET, программа написанная на C# v1 — прекрасно будет работать во всех последующих версиях без всяких адаптаций, переписываний или перекомпиляций.


  1. nikitasius
    10.03.2018 17:12

    oracle, такие oracle.


  1. mickvav
    10.03.2018 19:13

    Хех. Оригинальная идея же была — напиши однажды, откомпилируй, запускай везде. Сейчас получается — прихвати с собой среду, в которой ты уверен, что скомпилированное заведётся. В чём тогда профит по отношению к Qt + C++, например? Всяк бинарную сборку под каждую платформу собирать…