Pull to refresh

Comments 69

Проблема в том, что кто что там строит из OpenJDK — дело конкретных вендоров. Вот и начинается, «есть в OpenJDK (в исходниках проекта), но нету в OpenJDK (… сборках от Оракла)». Пусть это останется на их совести.
А так вообще можно делать? Просто одно дело, когда добавляют новые фичи, но совсем другое — когда отрубают имеющиеся.
Ага, но откуда и чью сборку брать порекомендуйте тогда.
Жалко, что Switch Expressions пока в превью. Выглядит интересно.
UFO just landed and posted this here

Зачем? Оператор ?: есть, начиная с первой джавы.

Очень вероятно, что «слизали» с Котлиновского when. Синтаксис и способ использования как-то подозрительно совпадают.
Подобные операторы есть чуть ли не в каждом втором современном языке. А аналогичный case оператор появился в стандарте sql вроде в 92 году (если не в 86ом).

Всё новое — хорошо забытое старое :) Очень рекомендую прочитать Jargon File, который составлял ещё старичок Эрик Рэймонд — это что-то вроде "википедии" тех лет. Содержание — по ссылке. Очень много остроумных слов.

Oracle решили не поставлять Sheandoah ни с какой из своих релизных сборок — ни с той, что на jdk.java.net, ни с той, которая на oracle.com.

Почему?
Чтобы Shenandoah не конкурировал с их собственным сборщиком мусора (ZGC).
Т.е. Shenandoah в официальном билде OpenJDK (официальный — на сайте самого OpenJDK) вообще не будет? Или только пока он экспериментальный?

В любом случае, какой-то бред, что официальный билд не содержит фичу, официально выпущенную в экосистему.
Что такое «официальный билд OpenJDK»? «Сайт самого OpenJDK» — это оракловская сборка. Нужно взять неоракловскую и всё. Сейчас пройдёт несколько дней и подтянутся все остальные основные производители сборок.
Казалось бы, если у оракла есть своя коммерческая сборка, то сборка с сайта, на котором ведется основная разработка, хостятся сорсы и прочее — должна быть со всеми фичами, включенными в официальный релиз и присутствующими в сорсах. И не должна требовать подождать 2 недели на выпуск AdoptOpenJDK, как было у них в прошлый раз.
Что ж, давайте и сюда вставим:

Ой, так это ваш твит и был! Вот это внезапно.

Это что же, очередной "фатальный недостаток", получается?

Не совсем понял про switch. В примере Virgin Java Switch пропишет dayNum = 6 при понедельнике, пятнице и субботе, пример с новым выражением будет только 0/1. Как сделать такую же функциональность чтоб с малым числом букв осталось?

int dayNum = switch (day) {
    case MONDAY, FRIDAY, SUNDAY  -> 6;
    case TUESDAY -> 1;

или
int dayNum = switch (day) {
    case MONDAY -> 6
    case FRIDAY -> 6;
   ....

?
Если проводить аналогию с оператором when из Kotlin (который, вероятно, являлся прообразом для нового switch), то первый вариант (только в Java заставят case каждый раз писать, хе-хе). Иначе смысла особого нет.
Почему 12? о_О
Я только на прошлой неделе начал книгу и в интернатах читать и везде 8-ая.
Все пропало? Надо искать что-то свежее?
Везде 8-ая потому что после восьмой началась какая-то фигня, треш, угар и содомия, теперь новые джавы клепают по несколько в год, перед каждым релизом баги и инциденты сыпятся пачками, но почему-то тех, кто делает язык, это вполне устраивает. Лично я до сих пор ещё не увидел ни одну компанию которая требовала бы знания джавы выше восьмой.
Т.е. можно пока не кипешить и спокойно учить то, что есть. Это хорошо, спасибо.
А почему на сайте оракла jdk 8-ой? Они сами не верят в то, что релизят?
Ну вообще-то на сайте оракла большая кнопка с 12 джавой, чуть более маленькая с 11 и 8, и упоминания о 6 и 7. Просто 9 и 11 джавы вышли не так уж и давно, чтобы все мигрировали с 8 (и более старых версий) на них.

Учить можно то, что есть, изменения в джаве не слишком радикальные, и основы, которые требуется учить, они, как правило, не затрагивают. Но быть в теме изменений новых версий стоит — когда-нибудь Java 8 станет тем, чем сейчас является Java 5.
Действительно. Сейчас зашел на сайт oracle — 12ая. 8-ка ещё и не обновляется больше.

Я вот сюда пападал из поиска — www.java.com/ru/download/win10.jsp

Чего "учить"-то тут все собрались? Ну вот знаете вы теперь про Constants API, что дальше делать с этим знанием кроме кругозора? Если вы будете работать над задачей, которая требует Constants API, точно разберетесь с этим за считаные часы.

Да и релиз JRE другой, кроме 8, и не встречается. Хотя на просторах интурнету встречал и 9, и 11. Теперь 12

Начиная с 9 jre более не посталяется, предлагается собирать по нужде с помощью jlink

Это как понимать, JRE новые есть или их нет? Или есть, но для гиков желающих заморачиваться собирать-разбирать?
Для обычных домохозяек, желающих запустить модерновое Java 12 приложение на своем ПК, Java где теперь находится?

для домохозяек JRE теперь поставляется вместе с используемой прогой

В докерном имаже вместе с приложеньем, например

Так хоть какое-то развитие.

Если не предпринимать радикальных изменений — будут стонать, что "Java не развивается, ява устарела". Если предпринимать — "ой вы нам всё поломали". Знаем, проходили уже

что такое «требовали знания джавы выше восьмой» и кому это вообще может быть нужно, даже если бы «джава выше восьмой» использовалась повсеместно?
Ну как, не знаешь, что такое exports, requires, uses, provides — не прошёл собес :)

Очень зря, на самом деле. Производительность сильно улучшается от релиза к релизу. Я тестировал свое поделие на 11-й и получил прирост около 40% по сравнению с 8-й. В 12-й есть еще пара улучшательств.

И это действительно большая проблема.
Мы сидим на 8, и слезть не получается — вообще не понятно, где брать эти openjdk и кто будет делать security patches.
Кровавому ынтырпрайзу нужны LTS. Банки не будут обновлять джаву раз в 6 месяцев.

вообще не понятно, где брать эти openjdk и кто будет делать security patches

Проблемы никакой нет. Я бы сказал, сейчас даже стало ещё проще. Просто качаешь с adoptopenjdk.net

Качаешь что? .tar.gz? В 2019 году? :)


Попробуйте установить jdk 11 на Ubuntu LTS из официальных репозиториев, например. Там все ещё 10 — которая уже полгода не поддерживается.

.tar.gz

а что, в 2019 году уже другие архивы в моде? :)

Попробуйте установить jdk 11 на Ubuntu LTS из официальных репозиториев, например. Там все ещё 10 — которая уже полгода не поддерживается.


Нужно просто правильно устанавливать:

sudo add-apt-repository ppa:openjdk-r/ppa \
&& sudo apt-get update -q \
&& sudo apt install -y openjdk-11-jdk


stackoverflow.com/questions/52504825/how-to-install-jdk-11-under-ubuntu

Кто вендор? Как скоро выходят патчи на уязвимости?

Только так и нужно джаву ставить. Никаких пакетов. Серьезно.
Только так и нужно джаву ставить. Никаких пакетов. Серьезно.


Ссылка точно так же уязвима как и пакеты, так что — нет.

Нет, так никогда нельзя ее ставить. Серьезно. По той же причине, почему предпочитают RedHat, а не дистро от энтузиастов.


Бизнес будет сидеть на 8, пока не будет внятного вендора с LTS и патчами.

Бизнес, у которого нет скилованных инженеров — да. Какой-нибудь ларёк по продаже сосисок, у которых среди двух тысяч сотруников только один джава-программист, по совместительству — заклинатель духов предков и админ прода. И поэтому им приходится вместо своего скилла и понимания перекладывать ответственность на всякие редхаты и заниматься карго-культом.

С другой стороны, я сам очень давно пользовался Дебианом, и практически каждая ошибка развертывания Java-платформы была связана с пакетами Дебиана и его мантейнерами. И точно так же как в техподдержке интернета давным-давно придумали универсальное правило для починки проблем домохозяек «выключите и включите», у меня теперь есть универсальное правило для любого Java софта на платформе Debian/Ubuntu: выключите (в смысле — удалите все пакеты всего джава-софта) и включите (вручную раскатайте zip-файлы, пропишите все нужные переменные и конфиги). Обычно это работает :-)

Частично это работает ещё и потому, что людям в таком режиме приходится вручную написать все конфиги и переменные в них, прогуглить их и понять, а не просто надеяться, что их правильно указал создатель дистрибутива. Доходит до смешного, что некоторые линукс-админы не знают, что такое PATH и где он устанавливается, и сама сакральная процедура раскатывания зипника JDK, прописывания JAVA_HOME и JAVA_HOME/bin в PATH нехило так расширяет их понимание платформы и класса проблем вроде «я установил пакет Java 11, а java -version показывает 8, спасите-помогите, ДЖАВА СЛОМАЛАСЬ».

В джава-мире процветает какой-то совершенно безумный карго-культ, согласно которому только Оракл может собирать «правильные» пакеты OpenJDK (на самом деле — кто угодно), или только пакетный менеджер может правильно их устанавливать (на самом деле — кто угодно, и может быть с помощью Ansible это делать ещё лучше), и так далее. Но к сожалению, сложилась критическая масса мракобесов, которые занимаются карго-культом и продолжают им заниматься вне зависимости от того, приводит это к каким-то осмысленным результатам или нет.

Я мог бы долго писать, но вот тут есть интервью, которое в точности описывает мою точку зрения на весь этот вопрос: habr.com/ru/company/jugru/blog/444652

Раньше я думал так же. Однако на работе, к сожалению, нужно работать, а не заниматься распаковкой архивов и настройкой PATH.
По той же причине я покупаю билеты на, скажем, jpoint — чтобы не тратить время на самостоятельное изучение, а послушать людей, которые этим занимаются побольше меня.


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

Кто занимается эти сайтом? Как скоро выходят критические патчи?


Что вообще люди используют в проде? Есть ли такие, что 11 используют? Интересен практический опыт. Используют ли, например, банки 11, или сидят на 8?

Кто занимается эти сайтом?

Волонтёры. Но не кто попало, а высококвалифицированные люди. Например, лидер проекта Martijn Verburg является Java-чемпионом.

Как скоро выходят критические патчи?

Как обычно, примерно раз в три месяца. Как это всю жизнь делает Oracle.

Что вообще люди используют в проде?

Java 8 используется в 80% случаев. Java 11 пока слишком новая, поэтому серьёзные банки вряд ли на неё перешли.
>Кровавому ынтырпрайзу нужны LTS.
Oracle же продаёт 11 LTS. Никаких проблем не вижу.

Вы в оракл работаете? Для вас проблем нет. Сколько там стоит джава за ядро теперь?

Создаёте свой Docker-образ, в нём ваша программа на Java. Всё. Сам образ — это и версия релиза, и ваш артефакт для запуска.
В качестве поставщика Java (секция FROM в Docker-файле) используете, например, Zulu. Так вы и переходите на Java 11. При появлении патченных версий Java — подставляете свежий образ сборки в FROM.

Ваш комментарий наполнен слухами и не даёт ответ. Уж лучше написали нормальное краткое объяснение, что версии Java ранее выпускались 1 раз в несколько лет, а после перешли на цикл выпуска 1 раз в полгода. Это понятнее чем ваше: "… началась какая-то фигня, треш, угар и содомия".
Причина: желание поставлять новые готовые фичи тогда, когда они будут готовы, а не ждать «коллег» по году и более. Это отсылка к переносам модуляризации (Jigsaw).

Или вы действительно не разбираетесь в вопросе и пишете комментарий?
А кто-нибудь может объяснить, почему GraalVM для тестов только с java 8 можно скачать? Почему нет версии с 9+

GraalVM вошёл в 9-ку и далее везде

Нет. В девятку вошёл только Graal Compiler. GraalVM как продукт — это вообще совершенно другая вещь по отношению к OpenJDK, он не может «войти» в OpenJDK.

Есть предположение (это не официальная позиция), что все клиенты, которые реально платят за GraalVM, сидят на 8, поэтому чинить косяки на 12 не имеет смысла. Оно собирается под свежие джавы (если собирать вручную), "но есть нюанс".


Если действительно интересна тема, можете зайти в чат @graalvm_ru в Телеграме и задать вопросы Олегу Шелаеву. Я давал ему инвайт на Хабр, но похоже, у него не так много времени, чтобы ещё и наш флуд тут непрерывно читать.

все клиенты, которые реально платят за GraalVM, сидят на 8, поэтому чинить косяки на 12 не имеет смысла

Тогда получается проблема стандартная, типоразмера "яйцо и курица": если не чинить косяки в новых версиях (хотя бы в 11, раз уж на то пошло, LTS всё-таки) — то все клиенты так и будут сидеть на 8, и никто их оттуда не сгонит. Не то чтоб это что-то плохое, но вроде в противодействие такому сидению Java и начала проводить такую агрессивную политику EOL в релизах — а значит какие-то причины были.

Возможно это плата за переход на релиз 1 раз в полгода? Переходы на новые версии отнимают слишком много времени от разработки и поддержки текущего проекта.

Sign up to leave a comment.