23 мая нашей любимой Java исполнилось 25 лет. Все эти годы один из самых популярных запросов в гугле — когда же Java наконец умрёт? Не дождётесь. К летней конференции JPoint присоединяется сам Джоэл Спольски — один из двух создателей Stack Overflow. Олды должны хорошо помнить его по классической книге «Джоэл о программировании» и по всё ещё работающему оплоту Mercurial — системе контроля версий Kiln. Шипилёв, Гослинг, Хорстман — и вот теперь ещё и Спольски, это будет очень хороший JPoint. Германия делает приложение для информирования про коронавирус, оно написано на Spring Boot и лежит на GitHub. Phoronix сделал очередной фирменный бенчмарк для GraalVM 20.1, OpenJ9 0.20 и OpenJDK. Делали это они из тех соображений, что 19 мая вышел GraalVM 20.1, со «значительно улучшенной производительностью». Кстати, для GraalVM появился новый язык Yatta. Это минималистичный, параллельный и неблокирующий, строгий функциональный язык с сильной динамической типизацией и синтаксисом в стиле ML. Yatta ставит своей целью легкость восприятия написанного кода — простой синтаксис, минимум ключевых слов, бойлерплейт больше не нужен (ну, почти). Интероп с Java существует и выглядит как Java::type "java.math.BigInteger". Рон Пресслер написал огромную стену текста в двух частях под названием «State of Loom». Зато всё нормально объяснено. На Хабре есть статья Алексея Сошина AlexeySoshin, в которой он проверяет, что Loom работает на JDK 15. JEP 385: Deprecate RMI Activation for Removal заявлен на JDK 15. Выбросить предлагается только RMI Activation, а не весь RMI. Проблема в том, что за последнее десятилетие мир поменялся, распределенные системы теперь делаются в вебе. Фаерволы, фильтрация запросов, аутентификация, безопасность — это область веб-сервисов. Ленивым управлением ресурсами занимаются балансировщики, оркестраторы, контейнер. Этих механизмов нет в модели RMI Activation, поэтому по факту RMI Activation давно заброшена. Её уже сделали опциональной в Java 8, и вот настал момент выпилить её совсем. JEP 383: Foreign-Memory Access API второй раз тянет срок в инкубаторе. Тред с предложениями и замечаниями есть в рассылочке, но он пока пуст. Вышла новая версия библиотеки Testcontainers, на этот раз — 1.14.3. Testcontainers дает возможность быстро запускать одноразовые экземпляры баз данных, браузеров для Selenium и вообще чего угодно, что запускается в Docker. Ченжлог новой версии находится здесь. Вышел свежий EAP для IntelliJ IDEA. Срочно расчехляйте вашу кнопку «Update» в Toolbox! NetBeans 12.0 дожил до версии Beta 5. Впрочем, не каждый догадается, как его установить на MacOS. Этому посвящена безблагодатная дискуссия в рассылке о том, как запускать скрипты, а в MacOS делать «Show Package Contents» и патчить директорию «Resources». Пикантности добавляет то, что это не просто бета, она чинит какие-то блокирующие проблемы. Вышел GitLab 13.0. Появилось отказоустойчивое хранилище без NFS, работает так: Gitaly запускается в кластере и запросы отправляются на свободные узлы с роутингом через Praefect. Автоматическое развертывание в AWS Elastic Container Service, тёмная тема в WebIDE. 18-ого мая вышла Grafana 7.0. Переделали UI для панелей (теперь у них есть консистентные параметры вроде unit, min, max, threshold и т.п.). Новый UI для распределенной трассировки — данные берутся из Jaeger и Zipkin. Теперь можно не только смотреть на данные глазами, но и на ходу превращать их в JSON-файлы или чего душа пожелает, по пути навертев простые манипуляции с этими данными. В целом, всё стало выглядеть красивее. Travis CI научился использовать AWS Graviton2. Процессоры Graviton делаются в недрах AWS с использованием 64-битных ядер Arm под названием Neoverse. Их очень дешево использовать на Amazon EC2 — это были первые Arm-машины на AWS. Если запуск чего-то на Arm выглядит сложновато, то сэкономить на сборке через Travis выглядит куда более осмысленно. Вышла Pulumi 2.0 — платформа для Infrastructure as Code. В новой версии добавили CrossGuard, инструмент для Policy as Code. Например, можно ограничить косты или типы инстансов. Политики можно сгруппировать в наборы и переиспользовать. Вот здесь лежат примеры таких наборов для разных платформ (Kubernetes, AWS, Azure, Google Cloud). AWS зарелизили свой поиск для энтерпрайзов, использующий машинное обучение — Amazon Kendra. Превью запустили на декабрьском re:Invent и с тех пор прикрутили к нему кучу всяких штук вроде коннекторов для Salesforce и OneDrive, расширили список предметных областей (Automotive, Health, HR, Legal, Media and Entertainment, News, Telecom, Travel and Leisure). Вышли свежие релизы: Spring Tools 4.6.2. Пофиксили баги, производительность, и все в таком духе. Spring Tools — это возможность писать на Spring с помощью Eclipse, Visual Studio Code и Theia, если ваш ключ от IntelliJ IDEA Ultimate съела собака. Spring Fu 0.3.0. В дополнение к KoFu (the Kotlin DSL) к нам вернулся JaFu (Java DSL). К следующему релизу (0.4.0) Себастиан обещает добавить spring-init, поддержку GraalVM native без настройки рефлекшена, пример масштабируемого приложения на JaFu + GraalVM native + Knative, выбросить XML и SpEL. Spring Security OAuth 2.5.0. Важно: жизнь Spring Security OAuth подходит к концу, прочитайте анонс если еще не сделали этого. Spring Data Elasticsearch 4.0. Улучшили описания маппинга, добавили возвращаемое значение SearchHit<T>, разрешили использовать прокси и свой SSLContext, разрешили писать обработчики заголовков для каждого запроса. Придумали pathPrefix на случай, если Elasticsearch находится за каким-то балансировщиком. Дональд Рааб рассказал свои впечатления от двух десятков лет работы в Java-мире. Пост приурочен к 25-летию Java. Дональд — создатель Eclipse Collections, популярный докладчик (вы точно могли слышать его регулярно обновляемые доклады «Java Collections Reloaded») и Java Champion. Доктор Хайнц Кабуц, известный Java Champion, написал статью «Upgrading ReadWriteLock». В Java ReentrantReadWriteLock никогда не апгрейдит read lock до write lock. В Kotlin функция ReentrantReadWriteLock.write() обходит эту проблему, отпуская read lock перед апгрейдом, тем самым появляется опасность создать гонку. Лучше использовать StampedLock, у которого есть метод для превращения во write lock. Мартин Фаулер, кажется, дописал свою монументальную статью про паттерны бранчевания в системах контроля версий. Он добавил ещё немного текста, и наконец, последний раздел. Учитесь у корифеев, как превращать написание блог-поста в захватывающее шоу. JUG Ru Group продолжает серийно делать онлайн-митапы. Каждый день можно зайти на сайт митапов и увидеть что-то новенькое: там есть и Java, и C++, и тестирование, и всё остальное. Следите за анонсами в нашем блоге на Хабре! Джош Лонг записал Bootiful Podcast c доктором Малини Бхандару, в котором они поговорили про EdgeX и том, какой для разработчиков толк в использовании IoT. Адам Бин продолжает жечь стримы — на этот раз стрим будет про Java Record JSON Serialization и JSON-B в Java 14. Кстати, Адам будет участвовать в летнем JPoint! Дайджесты публикуются при поддержке JUG Ru Group и конференции JPoint. Зарегистрироваться на летнюю онлайн-конференцию можно на официальном сайте.

 Деврел Axiom JDK, продюсер в Failover Bar