- PVSM.RU - https://www.pvsm.ru -

Java-дайджест за 10 марта

Java-дайджест за 10 марта - 1

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

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

Статьи

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


Java-дайджест за 10 марта - 2Дайджест публикуется при поддержке JUG Ru Group и конференции JPoint. Следующий JPoint пройдет 15-16 мая в Москве, в большом и свободном Крокус Экспо. На сайте уже можно ознакомиться с частью программы [30] и приобрести билеты [31].

Автор: olegchir

Источник [32]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/349087

Ссылки в тексте:

[1] Milkman: https://github.com/warmuuh/milkman/tree/feature/graal

[2] по ссылке: https://github.com/warmuuh/milkman/blob/feature/graal/milkman-dist-graal/readme.md

[3] создать тикет: https://github.com/warmuuh/milkman/issues/46

[4] Concurnas: https://concurnas.com/

[5] JavaFX 14: https://github.com/openjdk/jfx/blob/9db2ff258fde2a60b1494857e2cacbf76791f4aa/doc-files/release-notes-14.md

[6] Jersey 2.30.1: http://blog.supol.cz/?p=190

[7] чинили в свежей версии: http://blog.supol.cz/?p=164

[8] SimpleNet v2: https://github.com/jhg023/SimpleNet/tree/v2

[9] слёзно просит сообщество: https://www.reddit.com/r/java/comments/ffltcb/request_to_testing_for_materialuiswing_111_with/

[10] в виде исходника: https://github.com/atarw/material-ui-swing/releases/tag/v1.1.1-prelease6.1

[11] полностью собранной джарки: https://github.com/atarw/material-ui-swing/releases/download/v1.1.1-prelease6.1/Demo-Swing-set3.tar

[12] подняли тему: http://mail.openjdk.java.net/pipermail/loom-dev/2020-March/001122.html

[13] вот этот файл: http://gee.cs.oswego.edu/dl/wwwtmp/Carrier.java

[14] JEP 374: Disable and Deprecate Biased Locking: https://openjdk.java.net/jeps/374

[15] JEP 375: Pattern Matching for instanceof (Second Preview): https://openjdk.java.net/jeps/375

[16] JEP 305: https://openjdk.java.net/jeps/305

[17] JDK 14 в середине 2019: https://mail.openjdk.java.net/pipermail/jdk-dev/2019-November/003653.html

[18] preview feature: http://openjdk.java.net/jeps/12

[19] Netflix выкатили: https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072

[20] Есть на GitHub: https://github.com/Netflix/dispatch

[21] 1.1.6.RELEASE, 1.2.5.RELEASE: https://spring.io/blog/2020/03/09/spring-boot-for-apache-geode-pivotal-gemfire-1-1-6-release-1-2-5-release-available

[22] 2.1.9.RELEASE, 2.2.3.RELEASE, 2.3.0.RC1: https://spring.io/blog/2020/03/09/spring-session-for-apache-geode-pivotal-gemfire-2-1-9-release-2-2-3-release-and-2-3-0-rc1-available

[23] в блоге JetBrains: https://blog.jetbrains.com/idea/2020/03/profiling-tools-and-intellij-idea-ultimate/

[24] Андрея Паньгина: https://github.com/jvm-profiling-tools/async-profiler

[25] в блоге jOOQ рассказывает: https://blog.jooq.org/2020/03/06/create-empty-optional-sql-clauses-with-jooq/

[26] более функциональный: https://blog.jooq.org/2017/01/16/a-functional-programming-approach-to-dynamic-sql-with-jooq/

[27] «Map merge and compute, hidden API diamonds»: https://blog.frankel.ch/map-merge-compute/

[28] что нужно знать о concurrency: https://www.devdiaries.net/blog/Java-Interview-Questions-Multithreading/

[29] пришел несчастный молодой человек: https://www.reddit.com/r/java/comments/fe1ow3/there_i_said_it_i_hate_spring/

[30] частью программы: https://jpoint.ru/2020/schedule/?utm_source=habr&utm_medium=491686

[31] приобрести билеты: https://jpoint.ru/registration/?utm_source=habr&utm_medium=491686

[32] Источник: https://habr.com/ru/post/491686/?utm_campaign=491686&utm_source=habrahabr&utm_medium=rss