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

Java-дайджест за 29 мая

Java-дайджест за 29 мая - 1

  • 23 мая нашей любимой Java исполнилось 25 лет [1]. Все эти годы один из самых популярных запросов [2] в гугле — когда же Java наконец умрёт? Не дождётесь.

  • К летней конференции JPoint присоединяется сам Джоэл Спольски [3] — один из двух создателей Stack Overflow. Олды должны хорошо помнить его по классической книге «Джоэл о программировании» [4] и по всё ещё работающему оплоту Mercurial — системе контроля версий Kiln [5]. Шипилёв, Гослинг, Хорстман — и вот теперь ещё и Спольски, это будет очень хороший JPoint.

  • Германия делает приложение для информирования про коронавирус, оно написано на Spring Boot и лежит на GitHub [6].

Java

  • Phoronix сделал очередной фирменный бенчмарк [7] для GraalVM 20.1, OpenJ9 0.20 и OpenJDK. Делали это они из тех соображений, что 19 мая вышел GraalVM 20.1 [8], со «значительно улучшенной производительностью».

  • Кстати, для GraalVM появился новый язык Yatta [9]. Это минималистичный, параллельный и неблокирующий, строгий функциональный язык с сильной динамической типизацией и синтаксисом в стиле ML. Yatta ставит своей целью легкость восприятия написанного кода — простой синтаксис, минимум ключевых слов, бойлерплейт больше не нужен (ну, почти). Интероп с Java существует и выглядит как Java::type "java.math.BigInteger".

  • Рон Пресслер написал огромную стену текста в двух частях под названием «State of Loom» [10]. Зато всё нормально объяснено. На Хабре есть статья Алексея Сошина [11] AlexeySoshin [12], в которой он проверяет, что Loom работает на JDK 15.

  • JEP 385: Deprecate RMI Activation for Removal [13] заявлен на JDK 15. Выбросить предлагается только RMI Activation, а не весь RMI. Проблема в том, что за последнее десятилетие мир поменялся, распределенные системы теперь делаются в вебе. Фаерволы, фильтрация запросов, аутентификация, безопасность — это область веб-сервисов. Ленивым управлением ресурсами занимаются балансировщики, оркестраторы, контейнер. Этих механизмов нет в модели RMI Activation, поэтому по факту RMI Activation давно заброшена. Её уже сделали опциональной в Java 8, и вот настал момент выпилить её совсем.

  • JEP 383: Foreign-Memory Access API [14] второй раз тянет срок в инкубаторе. Тред с предложениями и замечаниями есть в рассылочке [15], но он пока пуст.

  • Вышла [16] новая версия библиотеки Testcontainers, на этот раз — 1.14.3. Testcontainers дает возможность быстро запускать одноразовые экземпляры баз данных, браузеров для Selenium и вообще чего угодно, что запускается в Docker. Ченжлог новой версии находится здесь [17].

IDE

  • Вышел свежий EAP [18] для IntelliJ IDEA. Срочно расчехляйте вашу кнопку «Update» в Toolbox!

  • NetBeans 12.0 дожил до версии Beta 5. Впрочем, не каждый догадается, как его установить на MacOS. Этому посвящена безблагодатная дискуссия в рассылке [19] о том, как запускать скрипты, а в MacOS делать «Show Package Contents» и патчить директорию «Resources». Пикантности добавляет то, что это не просто бета, она чинит какие-то блокирующие проблемы.

Eclipse

  • Jersey 2.31 [20] продолжает эволюционировать. Напоминаю, это REST-фреймворк, референсно реализующий спецификацию JAX-RS (JSR-370 [21]) для GlassFish. В новой версии появилась официальная поддержка JDK 14, JDK 15 и даже Helidon [22]. А ещё, для коннекторов можно будет использовать System properties, ура (кстати, какой сегодня год?).

DevOps, облака, сервисы

  • Вышел GitLab 13.0 [23]. Появилось отказоустойчивое хранилище без NFS, работает так: Gitaly запускается в кластере и запросы отправляются на свободные узлы с роутингом через Praefect. Автоматическое развертывание в AWS Elastic Container Service, тёмная тема в WebIDE.

  • 18-ого мая вышла Grafana 7.0 [24]. Переделали UI для панелей (теперь у них есть консистентные параметры вроде unit, min, max, threshold и т.п.). Новый UI для распределенной трассировки — данные берутся из Jaeger и Zipkin. Теперь можно не только смотреть на данные глазами, но и на ходу превращать [25] их в JSON-файлы или чего душа пожелает, по пути навертев простые манипуляции с этими данными. В целом, всё стало выглядеть красивее.

  • Travis CI научился [26] использовать AWS Graviton2. Процессоры Graviton делаются в недрах AWS с использованием 64-битных ядер Arm под названием Neoverse. Их очень дешево использовать на Amazon EC2 — это были первые Arm-машины на AWS. Если запуск чего-то на Arm выглядит сложновато, то сэкономить на сборке через Travis выглядит куда более осмысленно.

  • Вышла Pulumi 2.0 [27] — платформа для Infrastructure as Code. В новой версии добавили CrossGuard [28], инструмент для Policy as Code. Например, можно ограничить косты или типы инстансов. Политики можно сгруппировать в наборы [29] и переиспользовать. Вот здесь [30] лежат примеры таких наборов для разных платформ (Kubernetes, AWS, Azure, Google Cloud).

  • AWS зарелизили [31] свой поиск для энтерпрайзов, использующий машинное обучение — Amazon Kendra [32]. Превью запустили на декабрьском re:Invent и с тех пор прикрутили к нему кучу всяких штук вроде коннекторов для Salesforce и OneDrive, расширили список предметных областей (Automotive, Health, HR, Legal, Media and Entertainment, News, Telecom, Travel and Leisure).

Spring

Вышли свежие релизы:

  • Spring Tools 4.6.2 [34]. Пофиксили баги, производительность, и все в таком духе. Spring Tools [35] — это возможность писать на Spring с помощью Eclipse, Visual Studio Code и Theia, если ваш ключ от IntelliJ IDEA Ultimate съела собака.

  • Spring Fu 0.3.0 [36]. В дополнение к KoFu (the Kotlin DSL) к нам вернулся JaFu [37] (Java DSL). К следующему релизу (0.4.0) Себастиан обещает добавить spring-init [38], поддержку GraalVM native без настройки рефлекшена [39], пример масштабируемого приложения на JaFu + GraalVM native + Knative, выбросить XML и SpEL.

  • Spring Security OAuth 2.5.0 [40]. Важно: жизнь Spring Security OAuth подходит к концу, прочитайте анонс [41] если еще не сделали этого.

  • Spring Data Elasticsearch 4.0 [42]. Улучшили описания маппинга, добавили возвращаемое значение SearchHit<T>, разрешили использовать прокси и свой SSLContext, разрешили писать обработчики заголовков для каждого запроса. Придумали pathPrefix на случай, если Elasticsearch находится за каким-то балансировщиком.

Статьи

  • Дональд Рааб рассказал свои впечатления [43] от двух десятков лет работы в Java-мире. Пост приурочен к 25-летию Java. Дональд — создатель Eclipse Collections [44], популярный докладчик (вы точно могли слышать его регулярно обновляемые доклады «Java Collections Reloaded») и Java Champion.

  • Доктор Хайнц Кабуц, известный Java Champion, написал статью «Upgrading ReadWriteLock» [45]. В Java ReentrantReadWriteLock никогда не апгрейдит read lock до write lock. В Kotlin функция ReentrantReadWriteLock.write() обходит эту проблему, отпуская read lock перед апгрейдом, тем самым появляется опасность создать гонку. Лучше использовать StampedLock, у которого есть метод для превращения во write lock.

  • Мартин Фаулер, кажется, дописал свою монументальную статью про паттерны бранчевания в системах контроля версий. Он добавил ещё немного текста [46], и наконец, последний раздел [47]. Учитесь у корифеев, как превращать написание блог-поста в захватывающее шоу.

Онлайн-митапы, стримы, подкасты

  • JUG Ru Group продолжает серийно делать онлайн-митапы. Каждый день можно зайти на сайт митапов [48] и увидеть что-то новенькое: там есть и Java, и C++, и тестирование, и всё остальное. Следите за анонсами в нашем блоге на Хабре!

  • Джош Лонг записал Bootiful Podcast [49] c доктором Малини Бхандару, в котором они поговорили про EdgeX [50] и том, какой для разработчиков толк в использовании IoT.

  • Адам Бин продолжает жечь стримы — на этот раз стрим [51] будет про Java Record JSON Serialization и JSON-B в Java 14. Кстати, Адам будет участвовать [52] в летнем JPoint!


Java-дайджест за 29 мая - 2Дайджесты публикуются при поддержке JUG Ru Group и конференции JPoint. Зарегистрироваться на летнюю онлайн-конференцию можно на официальном сайте [53].

Автор: Олег Чирухин

Источник [54]


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

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

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

[1] исполнилось 25 лет: https://www.oracle.com/java/moved-by-java/

[2] запросов: https://www.google.com/search?q=java%20is%20dying

[3] Джоэл Спольски: https://jpoint.ru/2020/people/3zuvaa8fronif0h24dn7rm/?utm_source=habr&utm_medium=504402

[4] «Джоэл о программировании»: https://www.ozon.ru/context/detail/id/2820575/

[5] Kiln: https://www.fogbugz.com/version-control

[6] лежит на GitHub: https://github.com/corona-warn-app

[7] очередной фирменный бенчмарк: https://www.phoronix.com/scan.php?page=article&item=graalvm201-openj920-jvm&num=1

[8] GraalVM 20.1: https://www.phoronix.com/scan.php?page=news_item&px=Oracle-GraalVM-20.1-Released

[9] язык Yatta: https://yatta-lang.org/

[10] «State of Loom»: http://cr.openjdk.java.net/~rpressler/loom/loom/sol1_part1.html

[11] статья Алексея Сошина: https://habr.com/ru/post/503412/

[12] AlexeySoshin: https://habr.com/ru/users/alexeysoshin/

[13] JEP 385: Deprecate RMI Activation for Removal: https://openjdk.java.net/jeps/385

[14] JEP 383: Foreign-Memory Access API: https://openjdk.java.net/jeps/383

[15] есть в рассылочке: https://mail.openjdk.java.net/pipermail/jdk-dev/2020-May/004306.html

[16] Вышла: https://twitter.com/testcontainers/status/1266381162156634113

[17] здесь: https://github.com/testcontainers/testcontainers-java/releases/tag/1.14.3

[18] свежий EAP: https://blog.jetbrains.com/idea/2020/05/intellij-idea-2020-2-early-access-program-is-starting/

[19] дискуссия в рассылке: https://lists.apache.org/thread.html/r80c1ba82be06f6c04e54d7c1d5c5089c877e84ccee294c54901773c8%40%3Cusers.netbeans.apache.org%3E

[20] Jersey 2.31: https://github.com/eclipse-ee4j/jersey/wiki/Road-Map?v=231

[21] JSR-370: https://jcp.org/en/jsr/detail?id=370

[22] Helidon: https://medium.com/helidon/helidon-web-client-72e22f5d509a

[23] GitLab 13.0: https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-released/

[24] Grafana 7.0: https://grafana.com/docs/grafana/latest/guides/whats-new-in-v7-0/

[25] превращать: https://grafana.com/docs/grafana/latest/panels/transformations/

[26] научился: https://blog.travis-ci.com/AWS-Graviton-2-support-comes-to-Travis-CI

[27] Pulumi 2.0: https://www.pulumi.com/blog/pulumi-2-0/

[28] CrossGuard: https://www.pulumi.com/docs/guides/crossguard/

[29] в наборы: https://www.pulumi.com/docs/guides/crossguard/configuration/

[30] Вот здесь: https://github.com/pulumi/examples/tree/master/policy-packs

[31] зарелизили: https://aws.amazon.com/about-aws/whats-new/2020/05/amazon-kendra-is-now-generally-available/

[32] Amazon Kendra: https://aws.amazon.com/kendra/

[33] This week in Spring: https://spring.io/blog/2020/05/27/this-week-in-spring-may-26th-2020

[34] Spring Tools 4.6.2: https://spring.io/blog/2020/05/28/spring-tools-4-6-2-released

[35] Spring Tools: https://spring.io/tools/

[36] Spring Fu 0.3.0: https://spring.io/blog/2020/05/28/spring-fu-0-3-0-and-beyond

[37] JaFu: https://github.com/spring-projects-experimental/spring-fu/tree/master/jafu

[38] spring-init: https://github.com/spring-projects-experimental/spring-init/

[39] без настройки рефлекшена: https://github.com/oracle/graal/issues/2500

[40] Spring Security OAuth 2.5.0: https://spring.io/blog/2020/05/28/spring-security-oauth-2-5-0-released

[41] прочитайте анонс: https://spring.io/blog/2020/05/07/end-of-life-for-spring-security-oauth

[42] Spring Data Elasticsearch 4.0: https://spring.io/blog/2020/05/27/what-s-new-in-spring-data-elasticsearch-4-0

[43] рассказал свои впечатления: https://medium.com/@donraab/happy-25th-birthday-java-8ed836ab07d8

[44] Eclipse Collections: http://www.eclipse.org/collections/

[45] «Upgrading ReadWriteLock»: https://www.javaspecialists.eu/archive/Issue279.html

[46] немного текста: https://martinfowler.com/articles/branching-patterns.html#LookingAtSomeBranchingPolicies

[47] последний раздел: https://martinfowler.com/articles/branching-patterns.html#FinalThoughtsAndRecommendations

[48] на сайт митапов: https://meetup.jugru.org/?utm_source=habr&utm_medium=504402

[49] Bootiful Podcast: https://spring.io/blog/2020/05/28/a-bootiful-podcast-dr-malini-bhandaru-on-edgex-and-the-opportunities-for-developers-in-the-iot-space

[50] EdgeX: https://www.edgexfoundry.org/

[51] на этот раз стрим: https://adambien.blog/roller/abien/entry/java_14_java_record_json

[52] будет участвовать: https://jpoint.ru/2020/talks/6m2ous2iilbdqr0odnikl6/?utm_source=habr&utm_medium=504402

[53] можно на официальном сайте: https://jpoint.ru/registration/?utm_source=habr&utm_medium=504402

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