23 мая нашей любимой Java исполнилось 25 лет. Все эти годы один из самых популярных запросов в гугле — когда же Java наконец умрёт? Не дождётесь.
К летней конференции JPoint присоединяется сам Джоэл Спольски — один из двух создателей Stack Overflow. Олды должны хорошо помнить его по классической книге «Джоэл о программировании» и по всё ещё работающему оплоту Mercurial — системе контроля версий Kiln. Шипилёв, Гослинг, Хорстман — и вот теперь ещё и Спольски, это будет очень хороший JPoint.
Германия делает приложение для информирования про коронавирус, оно написано на Spring Boot и лежит на GitHub.
Java
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. Ченжлог новой версии находится здесь.
IDE
Вышел свежий EAP для IntelliJ IDEA. Срочно расчехляйте вашу кнопку «Update» в Toolbox!
NetBeans 12.0 дожил до версии Beta 5. Впрочем, не каждый догадается, как его установить на MacOS. Этому посвящена безблагодатная дискуссия в рассылке о том, как запускать скрипты, а в MacOS делать «Show Package Contents» и патчить директорию «Resources». Пикантности добавляет то, что это не просто бета, она чинит какие-то блокирующие проблемы.
Eclipse
- Jersey 2.31 продолжает эволюционировать. Напоминаю, это REST-фреймворк, референсно реализующий спецификацию JAX-RS (JSR-370) для GlassFish. В новой версии появилась официальная поддержка JDK 14, JDK 15 и даже Helidon. А ещё, для коннекторов можно будет использовать System properties, ура (кстати, какой сегодня год?).
DevOps, облака, сервисы
Вышел 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
- Вышел очередной выпуск This week in Spring Джоша Лонга.
Вышли свежие релизы:
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. Зарегистрироваться на летнюю онлайн-конференцию можно на официальном сайте.
AnthonyKot
Спасибо за Дайджест — отличная вещь!
olegchir Автор
Нууу, стараюсь! :-)