Вечерний Java-дайджест за 18 декабря
Вышел первый пробный билд JDK 15. Страничка проекта — здесь, но смотреть там пока совершенно нечего.
RedHat зарелизили WildFly 18. Заявлена поддержка Jakarta EE 8, MicroProfile 3.0, JDK 13, есть куча изменений в подсистемах безопасности и EE, и многое другое.
Tobias Hartmann, HotSpot-инженер в Oracle, опубликовал в почтовой рассылке valhalla-dev большое письмо «Optimizing the way to Valhalla: JIT Status Update». Valhalla — это проект в OpenJDK, представляющий из себя инкубатор самых крутых современных идей в виртуальной машине и языке Java, такие как Value Types и Generic Specialization. Письмо представляет собой сплошной чеклист, и копипастить его в этот дайджест бессмысленно. В целом, там подробности про оптимизацию доступа к массивам и скаляризацию в C2.
Ionuț Baloșin опубликовал результаты своего JVM Garbage Collectors Benchmarks Report 19.12. В качестве основы был выбран AdoptOpenJDK версии 13, а проверяемые GC — все подряд, включая даже Concurrent Mark Sweep GC, который предлагается зверски истребить в JDK 14, согласно Приказу 363. В частности, автор нашел ZGC и Shenandoah очень эффективными в случаях, когда происходит достаточно большое количество аллокаций. (Что такое «большое»? На 60% хипа, например).
Дальше будет пара новостей про наше сообщество. Сергей Егоров, наш давний друг и докладчик, присоединился к Oracle Groundbreakers. Oracle Groundbreaker Ambassadors — это группа людей, особо отличившихся в области Java-разработки, облаках, микросервисах, контейнерах, девопсе. Кстати, если зайти на сайт Groundbreakers, то можно на второй сверху фотографии увидеть другого известного в сообществе человека — первого рыцаря и евангелиста GraalVM, Олега Шелаева.
Stephen Chin, еще один наш давний друг и докладчик на Joker, с которым мы в этом году делали интервью, опубликовал поджигающую статью «JavaFX — Not Dead Yet», в которой анонсировал свою новую книгу и по пунктам объяснил, почему JavaFx живее всех живых. Книга, кстати, уже доступна в магазине издательства Apress за 26.99 евро в электронном виде и за 32.99 евро — в мягкой обложке. Напишите в комментариях, как вы считаете, сейчас JavaFx скорее жив, чем мертв, или наоборот? Что там со сборкой под JDK 11 и выше? (Насколько понимаю, старый опакечиватель больше не работает, а новый — в нестабильном превью, но это неточно).
На The Server Side опубликован странный и немного истерично выглядящий пост о том, что не следует использовать не-LTS версию Java на продакшне, со ссылкой на Gil Tene. Чем ближе Java 14, тем больше разгарается этот спор, ведь 14 — уже ближе к следующему LTS, чем к Java 11. Сдаваться сейчас — это как в анекдоте про Чапаева, переплыть две трети реки и повернуть назад.
Зарелизился assertj-vavr v0.2.0. Библиотека лежит на GitHub (95 коммитов, 30 звездочек) и предоставляет ассерты для vavr. Vavr, в свою очередь — это некая библиотека для функциональщины на свежих версиях джавы (8+), предоставляющая иммутабельные типы данных и инструменты для записи вычислений в функциональном стиле. Свежая версия assertj-vavr добавила новые ассетрты для Multimap, Map и Either.
Появился сайт, который в автоматическом (?) режиме ищет новые опенсорсные репозитории по различным языкам, включая Java. (Пригодится мне для написания дайджестов… хотя стоп, информации и так слишком много, нет, не пригодится).
Eclipse представляет еще один новый проект — EMF.cloud. Это проект для тех, кто разбирается в Eclipse Modeling Framework (EMF) и хочет использовать его в браузере. Так уж получилось, что у EMF огромное количество существующих пользователей (привет, Xored!), вокруг него написано огромное количество кода и инфраструктуры, и от всего этого теперь можно не отказываться при переезде в облако. В наличии облачный сервер для моделей, есть облачное же расширение для Theia, проект-пример «The coffee editor», возможность делать JSON-формы и даже целый фреймворк Graphical Language Server Platform/Protocol (GLSP) для создания браузерных редакторов диаграмм.
OpenHAB дожил до версии 2.5. Сам по себе openHAB — это софт для автоматизации умного дома, написанный на Java. Проекты лежат на GitHub и имеют приличное количество звездочек и форков. Большая часть работы там произошла под капотом — рефакторинги, улучшающие качество кода, например, реинтеграция с Eclipse Smart Home. Более подробно чудовищно огромный список изменений можно посмотреть здесь.
Вышла Kafka 2.4. Огромное количество KIP-ов, которые лучше посмотреть прямо в официальном анонсе. Выглядит как что-то, на что стоит обновляться.
Amazon анонсировали Managed Apache Cassandra Service (MCS) для AWS. Подробней про MCS можно прочитать здесь. Как понятно из названия, это некий способ иметь Cassandra (точней, некую совместимую с ней базу) напрямую от Amazon, а не покупать у сторонних поставщиков. MCS довольно serverless, так что платить придется только за ресурсы, которые используешь: MCS автоматически масштабирует таблицы в соответствии с объемом входящего трафика (подробней можно послушать/почитать у Danilo Poccia).
Atlassian анонсировал Forge — совершенно новый, никогда такого не было, способ собирать и запускать приложения для облака Atlassian. По сути, теперь можно делать свой Functions-as-a Service (FaaS), используя их Forge UI — специальный декларативный язык. Ясно, что нижний уровень обслуживают не они, и под капотом у всего этого находится AWS Lambda.
RedHat продолжает цикл статей, посвященных юбилею Enterprise Java. Если кто не помнит (или еще не родился в этом году), Java 2 Platform, Enterprise Edition (J2EE) 1.2 появилась в декабре 1999 года и стала символом эпохи веба. В 2017 году Oracle задонатила Java EE в Eclipse Foundation, и кажется — это все еще не конец. В этой статье RedHat рассказывает, какие вехи мы прошли между 1999 и 2019 годами.
JetBrains продолжает цикл статей про Reactive Spring Boot. В свежей 10-й (и последней!) части Триша расскажет, как использовать профили Spring, чтобы переключаться между RSocket и WebClient.
На JavaCodeGeeks появилась совершенно дичайшая статья про то, как устанавливать Java. Там все написано очень подробно, включая скриншоты. Быть может, это статья для неразработчиков? Напоминаю, если вы — разработчик, то получить ссылки на скачивание Java можно на сайте https://jdk.dev.
Очень крутая хабростатья «Hello World» вам в облако». Java, Docker, Kubernetes, CI/CD — все как мы любим, на очень простых и понятных примерах. На прошлой конференции DevOops мы обсуждали, не сделать ли на похожую тему доклад — и ура, Вячеслав запилил про это целую статью! У статьи много больше 50 плюсов, десятки комментариев — всячески рекомендую. В особенности, если вы ничего не понимаете в докерах и кубернетисах (эй, почему только мы должны страдать?).
Еще один лонгрид на Хабре про применение паттерна Pipes & Filters. Шаг за шагом показано, как рефакторится изначальный пример, и в результате код становится куда более гибким и удобным. Показано, что решает и что не решает выбранный пример — все как в классических книжках по паттернам. Из мозговзрывающего: идентификаторы на русском языке. (Напишите в комментариях — хотите ли вы видеть больше такого кода? Стоит ли нам перейти на русскоязычный код в своих постах?).
Ещё один лонгрид «Не все патчи одинаково полезны», на этот раз — довольно хардкорный. Автор продолжает разбор улучшений производительности, которые могли бы стать явью, если бы не разные «но». Объяснения даются со ссылками на почтовую рассылку OpenJDK core-libs-dev с цитатами, комменатриями и примерами кода.
Статья «Hello World из байт-кода для JVM» продолжает неделю Java-хардкора на Хабре. Автор компилирует Hello World, показывает дизассемблер и дотошно разбирает всё что там происходит до самого низа, ссылаясь на JVMS и разные источники вроде постов Джеймса Блума или блога компании JRebel.
Если кто-то в 2019 году все еще надеется, что какой-то фреймворк даст возможность не изучать JS-фронтенд, то на Хабре написали туториал по Vaadin на Spring Boot. Очень короткий, по делу, с примерами кода и репозиторием. Имхо, не изучать фронтенд это всё равно не поможет — раньше у вас была одна проблема, а теперь у вас та же проблема плюс Vaadin.
Ну и напоследок, есть хабрастатья »5 скрытых cекретов в Java». Секреты скрытые, поэтому подробности не будет.
Подписаться на обновления этого дайджеста можно не только на Хабре, а на моем личном канале @javawatch в Телеграме, там же есть чат для обсуждения. Сообщать о ошибках и опечатках в дайджесте лучше всего в личку на Хабре.
«Картинка для привлечения внимания» предоставлена Daniel Cheung — он в миру консультант по SEO, а в свободное время делает клёвые художественные фотки Lego.