• Есть такая штука, Milkman — это альтернатива Postman, расширяемый воркбенч для работы с запросами и ответами с интерфейсом на JavaFx и с идеей «всё есть плагин». Несмотря на плагинную архитектуру, эта штука почти не использует reflection, и поэтому стало возможно пересобрать её как бинарник GraalVM Native Image. Плагины, конечно, нельзя добавлять в рантайме — что собрал, то и будет. Сборка делается через Maven. Обсуждение в документации — по ссылке. Не обошлось и без ложки дегтя: так же как пользователи GNU/Linux называют операционную систему просто (и неправильно) «Linux», здесь автор Milkman написал просто «Graal» вместо «GraalVM» — пришлось пойти и создать тикет на исправление этой несправедливости.
  • В прошлом декабре появился новый язык для JVM под названием Concurnas. На нем можно писать что угодно, но заточен он для легкого и приятного создания многопоточных, распределенных и параллельных систем. Сейчас вышла версия 1.14.020: в ней поправлены баги с escape-символами в REPL, там же добавлены номера строк, добавлены инструменты по работе со строками вроде взятия буквы по индексу (их не было?!), методы и функции теперь можно красиво печатать с помощью toString, добавлена совместимость с JDK 11 (теперь поддерживаются JDK 8-13).


  • Вышла JavaFX 14. К сожалению, с маркетингом у них там не очень, и кроме этого списка закрытых тикетов пока увидеть ничего нельзя. Вкратце, они запилили HTTP/2 в WebView, добавили регулировку размера табов в Text и TextFlow, оптимизировали диспетчеризацию событий когда нет ни одной подписки, добавили возможность прятать курсор для embedded, исправили гору багов.
  • Вышла Jersey 2.30.1 (это такой REST-фреймворк, предоставляющий референсную реализацию JAX-RS (JSR-370, JSR 3-11, JSR-339) и все на эту тему). Про изменения в API лучше почитать по ссылке, а мимо проходящим троллям может оказаться интересно поржать над тем, как они чинили в свежей версии Apache HttpClient Connector, чтобы в клиентском коде не нужно было делать таймаут в секунду.
  • Клиент-серверный фреймворк SimpleNet превратился в SimpleNet v2, получив поддержку Project Loom. Обещает эффективный и масштабируемый блокирующий I/O. 162 коммита, 140 звездочек, 14 форков.
  • На Reddit разработчик material-ui-swing слёзно просит сообщество потестить библиотеку на разных непонятных и редких платформах вроде Microsoft Windows. Демка, которую нужно протестировать, если вы возьметесь за эту миссию, лежит либо на гитхабе в виде исходника, либо в виде полностью собранной джарки.
  • В рассылочке подняли тему о том, что, улучшая в java.util.concurrent поддержку различных стилей программирования, может понадобиться сделать что-то на стыке BlockingQueue и AutoCloseable, что будет хорошо работать с Project Loom, но не будет прибито гвоздями к Loom. Набросок такого API есть в письме по ссылке, но читателям на Хабре будет проще открыть вот этот файл. Автор предполагает опубликовать реализацию LinkedCarrier сразу же, как буря в почте уляжется.
  • Обновился совсем свежий JEP 374: Disable and Deprecate Biased Locking. В феврале цель этого JEP-а поменялась с того, чтобы просто убрать косты на поддержку biased locking на то, чтобы понять, насколько нужна поддержка легаси оптимизации синхронизации. Сейчас Марк Рейнхольд скинул эту задачку с себя на Patricio Chilano Mateo. А он, в свою очередь, расширил список рассматриваемых продуктовых опций до BiasedLockingStartupDelay, BiasedLockingBulkRebiasThreshold, BiasedLockingBulkRevokeThreshold, BiasedLockingDecayTime, UseOptoBiasInlining, и диагностических опций до PrintBiasedLockingStatistics и PrintPreciseBiasedLockingStatistics. (Если вы задаетесь вопросами, откуда я это знаю: надо читать комментарии в JBS и диффать состояния текста вручную).
  • Обновился еще один свежий JEP 375: Pattern Matching for instanceof (Second Preview). Рейнхольд добавил туда заметку, что фича появилась в JEP 305 в середине 2017, и была предназначена для JDK 14 в середине 2019 в виде preview feature. JEP 375 предлагает переделать эту фичу в JDK 15: добавить паттерн-матчинг по рекордам и учесть обратную связь от сообщества.
  • Netflix выкатили новый опенсорсный инструмент, crisis management orchestration framework, называющийся Dispatch. Эта штука управляет метаинформацией и ресурсами, связанной с инцидентом, и протаскивает вас основным шагам реакции на инцидент. Важно, что Dispatch не прибит гвоздями к AWS (слишком часто это случается, чтобы неприбитость к AWS стала фичей!). С другой стороны, Dispatch не заставляет учить кучу новых инструментов, а интегрируется с API уже знакомых штук вроде Jira, PagerDuty и VictorOps. Есть на GitHub, написано на Python, фронт на Javascript + Vue.js (нам как Java-разработчикам трогать их не обязательно).
  • Вышли Spring Session for Apache Geode & Pivotal GemFire: 1.1.6.RELEASE, 1.2.5.RELEASE, 2.1.9.RELEASE, 2.2.3.RELEASE, 2.3.0.RC1

Статьи


  • Mala Gupta в блоге JetBrains сделала иллюстрированный обзор работы с профайлерами. IDEA может работать с Async Profiler Андрея Паньгина и JFR в свежих версиях JDK. Можно посмотреть глазами красивые флеймграфы, вызовы в разрезе дерева или списка методов и делать по ним поиск.
  • Lucas Eder в блоге jOOQ рассказывает о том, что делать, если куски запроса должны добавляться в зависимости от разных условий, а реализация этих веток по-умолчанию должна ничего не делать. На эту тему есть куча разных мелких опций, делающих похожие вещи, в которых легко потеряться. Например, можно сделать SelectConditionStep и приклеивать последний кусок с помощью if-а, но лучше вынести условия where в отдельную переменную, и дальше использовать более функциональный подход.
  • Статья «Map merge and compute, hidden API diamonds» про change-if-present. Честно говоря, непонятно, чего там скрытого в этом API, но хорошо, что автор поднял эту тему :-)
  • Michal Fabjanski написал смузи-статью про то, что нужно знать о concurrency на собеседовании.
  • На r/java пришел несчастный молодой человек и рассказал, как он ненавидит Spring. «Три дня я гналась за Вами, что бы сказать, как Вы мне безразличны». У вас еще есть шанс немного его потролить.




Дайджест публикуется при поддержке JUG Ru Group и конференции JPoint.