Недели две назад 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)
SagePtr
09.03.2018 13:47Java 9 сломана. Да и сам сталкивался с ситуацией, когда проекты, которые нормально компилировались в предыдущих версиях JDK, переставали собираться в 9-й из-за подобных багов.
smer44
09.03.2018 13:56-1… то незабываемое чувство, когда версия языка меняется быстрее чем версия проэкта…
maxzh83
09.03.2018 16:12Сидя на Java 8, ощущение от Java 9 такое же, как было от Windows Millenium. Т.е. забавно конечно, но не понятно чем оно настолько лучше Win 98, что стоило бы переползать. Тогда многие стали ждать Win XP…
saboteur_kiev
09.03.2018 16:16-2вы хотели сказать win2k?
vlanko
09.03.2018 21:08Нет, Вин2к — отличная стабильная штука, новая ядро. А миллениум (по отзывам) самая глючная 9х.
maxzh83
09.03.2018 21:45Нет, win2k и millenium вышли практически одновременно и это были параллельные ветки. Win2k была развитием NT ядра, которое в итоге победило, но на тот момент win2k была сугубо рабочим инструментом (с играми тяжело там было). Потом вышла Win XP, которая стала win2k для людей. Так что ждем Java 10 )
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 хватало проблем.
insolor
10.03.2018 09:06+1Windows Millenium Edition (ME) — это последняя ОС линейки Win9x. Windows 2000 — это одна из ОС линейки NT. Это разные ОС.
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.
vdem
09.03.2018 22:28Windows ME была продолжением (и как бы завершением) линейки Win 3.1/95/98. Windows XP — это Windows 2k со свистелками и перделками (а если убрать их, то неотличима от Win2k), и это продолжение линейки NT.
WALKER898
10.03.2018 06:11Блин, я почувствовал себя таким старым, когда вижу что уже реально есть люди, нуждающиеся в подобных разъяснениях :(
atrosinenko
09.03.2018 20:45Oracle не планирует обновлять рабочие станцие с Java 8 на более поздние версии через опцию auto update.
И не надо. Хоть у кого-то эта штука "включена"? Не знаю ни одного такого :)А зачем отключать автообновление (по крайней мере, обычному пользователю)? На случай, если появится регрессии, или есть другие причины?
Лично я столько в своё время наслушался про "Очередная уязвимость в Java, мы все умрём!!!!111", что отключение автообновлений для меня выглядит странно (хотя и не факт, что это и правда создаёт так много опасностей для пользователя при условии, что апплеты отключены). По этой же причине несколько странной выглядит официальная рекомендация разводить на компьютерах пользователей зоопарк устаревших версий.
AllexIn
09.03.2018 21:53Автообновления Java — это та штука, которая задалбывает вылезать в самый неподходящий момент и раздражает вообще всех пользователей?
navion
10.03.2018 18:02Всяко лучше, чем окно шифровальщика. Да и ставится по-умолчанию нечётная ветка, где в обновлениях исправляют только уязвимости.
AllexIn
11.03.2018 14:11Нет. Дело в том, что из-за навязчиво неадекватно сделанной системы обновлений, которыая регулярно требует повышения привилегий еще до начала своей работы — её все тупо удаляют.
Зачем вообще ПО для апдейта требует повышения привилегей на старте? Это что за паттерн?sevikl
12.03.2018 16:49вы интерфейсы на swing видели? каких паттернов еще требовать от этих людей? перезагружаться не надо перед обновлением — и на том спасибо.
relgames
09.03.2018 22:57Java 8, кое-где 6.
9 только на своих проектах. Но она сырая, куча библиотек и приложений на ней не работает. Вот последний пример — logstash.
PerlPower
09.03.2018 23:20+2Расскажите пожалуйста как проходит день разработчика на Java с версией < 6.
bobzer
10.03.2018 05:20Так же, как и на любой другой версии Java. Встречал проекты на Java > 6, рабочий день на которых — пытка. Встречал проекты, мало изменившиеся с того момента, когда их создали 10+ лет назад на Java 1.4, и рабочий день на них — вполне приятен. Ощущения от работы на проекте зависят не столько от того, НА ЧЁМ он написан, сколько от того, КЕМ он написан.
smple
10.03.2018 03:37Write once, run anywhere — пытаюсь применить это к java 9 со сроком поддержки в 7 месяцев
gnkoshelev
10.03.2018 09:38В продакшене были версии Java 6, 7 и 8. И всегда прекрасно себя чувствовал.
Непривычно было только один раз года 4 назад, когда с проекта на Java 7 перешёл на проект с Java 6: но к отсутствию dimond operator, try-with-resources, multi-catch exception привык быстро (только некоторые наработки пришлось портировать).
gnkoshelev
10.03.2018 09:51Из того, что может (лично меня) побудить перейти на Java 9 — это стандартный годный HTTP-клиент и jshell, но с этим и подождать можно.
Marui
10.03.2018 09:56+2А у нас тут в С++ еще модули не завезли. Живем с хедерами. Плак-плак… Часы компиляции на проект, плак-плак.
olegchir
10.03.2018 10:22+3Рейнхольт открытым текстом сказал, что жить «от получки до получки», «от LTS до LTS» — это не самая лучшая идея. Изменений может накопиться так много, что перейти уже не получится. Релизы с коротким циклом — это полноценные настоящие релизы, на них очень сильно рекомендуется переходить.
Наконец-то Java будет ощущаться как современная технология с быстрым релизным циклом, а не как десятилетнее говно мамонта. Это чудесно!
Да, придётся кое-что адаптировать и переписывать. Это нормально. Во всём мире, во всех остальных технологиях (включая конкурирующий C# .NET) так делают постоянно.gnkoshelev
10.03.2018 11:05Я Java бы выучил только за то,
Что раз написав — используй легко.
Релизы не часто, но верность хранит
И качеству кода, и стилю.
Как часто бывает, когда любой наш коммит
Останется с нами на годы?
Совместимости ради полюбишь и ты,
Друг мой, Java исходные коды.
FreeBa
10.03.2018 12:12+1Да, придётся кое-что адаптировать и переписывать. Это нормально. Во всём мире, во всех остальных технологиях (включая конкурирующий C# .NET) так делают постоянно.
Такая бяка только в .NET Core встречалась на ранних этапах. В обычном же .NET, программа написанная на C# v1 — прекрасно будет работать во всех последующих версиях без всяких адаптаций, переписываний или перекомпиляций.
mickvav
10.03.2018 19:13Хех. Оригинальная идея же была — напиши однажды, откомпилируй, запускай везде. Сейчас получается — прихвати с собой среду, в которой ты уверен, что скомпилированное заведётся. В чём тогда профит по отношению к Qt + C++, например? Всяк бинарную сборку под каждую платформу собирать…
DSolodukhin
Из активных проектов один на Java 6 (Oracle Java), два на Java 7 (IBM J9).