Java-дайджест за 14 декабря
Дело Google vs Oracle будет рассматривать Верховный Суд США. В последний раз. Запасаемся попкорном, русская рулетка начинается. Прочитать суть проблемы можно в оригинальной PDF-ке, в которой Oracle утверждает, что у них скопировали 11500 строк кода из 37 пакетов, тем самым стибрив черезвычайно сложную и важную архитектуру, и хотят они за это 8.8 миллиардов баксов. Google же возражает, что пытаться запатентовать API — это безумие какое-то, и без возможности открыто использовать API современная жизнь невозможна. Дуэль между мегакорпорациями будет проводиться в формате блица, когда Google нужно будет за 30 минут объяснить суть проблемы, а Oracle за 30 минут должны будут на всё это ответить.
JDK 14 перешел в первую фазу заморозки, про это есть сообщение в рассылке и твит Марка Рейнхольда. Много изменений, только JEP-ов 16 штук, последним подтвердили Foreign-Memory Access API. Репозиторий форкнут в jdk/jdk14. В новостях каждый раз перечислять одни и те же JEP-ы, список которых больше не изменится, кажется, не имеет смысла: полноценная развернутая статья будет сразу же после финального релиза Java 14.
В JDK 14 появляется возможность попробовать records. Самый простой способ попробовать новую фичу: запустить командную строку через jshell --enable-preview
. Как именно выглядят рекорды описано в отдельном документе (может, его стоит перевести на Хабр?). Где скачать свежую JDK написано в постоянно обновляющейся странице на jdk.dev. (Здоровый самопиар никогда не помешает, верно?)
Eclipse Ditto добрался до версии 1.0.0. Это такой набор инструментов для работы с Digital Twins — то есть, парами между устройством в реальном мире и его цифровой проекцией внутри облака. По сути, это фреймворк для организации Device-as-a-Service, решающий утилитарные проблемы вроде менеджмента состояния. В прошлом году мы часто постили новости о нём и рассказывали, как Eclipse собирается стать лидером в IoT, но многие не верили, что Ditto доживёт хотя бы до утра — ну вот, дожил. Вообще, у Eclipse есть отдельная IoT Working Group, куда входит ещё пара десятков больших и маленьких проектов на разных стадиях развития, начиная от чего-то про стандарты (вроде Eclipse Unide и Eclipse OM2M), и вплоть до конкретных реализаций (вроде Eclipse SmartHome и Eclipse Hono). Самые интересные вещи ещё впереди.
Eclipse выпускают четвертый майлстоун Vert.x 4. Очень много всего улучшено, затронуты: Shell, Mail Client, Consul Client, RabbitMQ Client, Stomp, Mongo Client. Я не разбираюсь в вопросе, к сожалению, поэтому читайте ченжлоги сами.
Вышла IntelliJ IDEA 2019.3, о чём появился хабрапост в блоге JetBrains. Куча мелких, но полезных улучшений: например, теперь intention actions перестанут магически исчезать (оказывается, это происходило, когда вы выбрали действие и не применяли его). Наконец-то появилась поддержка Micronaut, Quarkus и Helidon — у вас появилась дополнительная причина попробовать их. Мне понравился новый пункт меню «New Branch from Selected», которая создает новый локальный бранч, но не приклеивает его к бранчу на сервере. Перечислять всё это по второму разу, кажется, не имеет смысла — просто давите кнопку «Update» в вашем тулбоксе, улучшения стоят двух минут ожидания.
Вышла IntelliJ IDEA Edu 2019.3, соответствующий блогпост — по ссылке. Эта версия Идеи — бесплатная и открытая, основывается на IDEA Community Edition и использует EduTools Plugin. Прямо в интерфейс встроен браузер учебных курсов, с возможностью читать текст заданий и тут же видеть результаты проверки. Подробней можно посмотреть вот в этом видео.
В блоге JetBrains продолжают просвещать нас туториалами про Reactive Spring Boot. В девятой части эпопеи мы заюзаем клиент RSocket для общения с сервером, который был написан в предыдущей статье.
Вышла статья «Как предотвращать проблемы с JPA и Hibernate»: какие проблемы существуют и как их решает Hypersistence Optimizer от Vlad Mihalcea (это он написал книжку High-Performance Java Persistence). Заметка эта, конечно, насквозь рекламная (лицензия стоит 50 баксов в год). Здесь она только чтобы пошутить, что в 2019 году пользователи Hibernate продолжают страдать.
Вышла вторая часть статьи «Modern garbage collection». В первой части статьи Марк рассказывал о важных для GC характеристиках (вроде переносимости и совместимости), а здесь рассматривает их на примере ZGC и Shenandoah. Тем, кто в теме про эти два коллектора и смотрел доклады, статья нафиг не нужна. Для всех остальных это довольно неплохой обзор, читающийся минут за десять. Mark Hearn — бывший гуглер, сейчас работает лидом в R3 CEV (контора про блокчейн-разработку и консорциум из семи десятков блокчейновых компаний). Это если вы вдруг подумали: «да кому нужны эти новые коллекторы».
Какой-то юзернейм пришел на Reddit и спросил, нужен ли кому-то GraalVM. Отписалось человек десять, разговор ещё идёт. Шелаеву я ссылку закинул. Не забываем, что не реддитом единым жив человек, у нас в Telegram есть свой канал @graalvm_ru, где присутствуют реальные пользователи и разработчики этого продукта.
В Gremlin Chaos Engineering Platform добавили нативную поддержку Kubernetes. У Gremlin есть бесплатная подписка, и эта фича работает даже на ней. Использование элементарное: создаём новую атаку, на вопрос «чего будем атаковать?» отвечаем: «Kubernetes», выибираем кластер и объекты в нем, начинаем орбитальную бомбардировку. Если кто не в курсе, chaos engineering в том виде как его популяризовал Netflix — это когда мы рандомно отключаем сервера на продакшене и смотрим, переживёт ли это ваш продукт. Кроме Gremlin для Kubernetes есть совершенно опенсорсная утилита kube-monkey (328 коммитов, полторы тысячи звезд на GitHub) и Litmus (1035 коммитов, 486 звезд). Кажется, по фичам лучше Litmus, а по известности — kube-monkey.
Релизнулись Spring Session for Apache Geode & Pivotal GemFire — сразу для веток 2.1.7 и 2.2.1. Это просто обновление до актуальных версий Spring Framework/Boot/Data/Session. Apache Geode — хороший распределённый in-memory data grid, который можно использовать для кэша и вычислений. (У себя на сайте они называют это другими словами, но если прочитать их определение вслух, можно выиграть в bullshit bingo либо вызвать дьявола). Pivotal GemFire — это IMDG от Pivotal, который основан на Geode. Spring Session — это API для управления пользовательскими сессиями, который можно подсунуть в разные места спринговой инфраструктуры (например, подменить HttpSession в Tomcat).
Вышли новые версии JMetro: 11.6 и 8.6. JMetro — это тема для JavaFx, которая может пригодиться, если вы пишете десктопные приложения для Windows на Java. И при этом почему-то всё еще не делаете GUI на Electron:-) JMetro сохраняет верность заветам Fluent Design System в понимании Microsoft и органично выглядит внутри метро-интерфейса (Modern UI, начиная с Windows 8). Добавлены нативно выглядящие модальные диалоговые окна, новый статус-бар, поле для ввода пароля с характерной картинкой глаза и куча мелких фиксов.
На Хабре появился перевод туториала по Spring Boot Admin. Это модуль, предоставляющий GUI для ендпоинтов Spring Boot Actuator. Зачастую мы пишем такой гуй самостоятельно вручную, а тут уже кое-что сделали за нас. Сделан он не в Pivotal, а в немецкой компании Codecentric (кажется, это какой-то аутсорсер). Код лежит на GitHub (1331 коммит, 8.1 тысяча звезд). Код примера, который обсуждают в туториале, тоже есть на GitHub.
В другой хабрастатье, уже самописной и достаточно хорошей чтобы НЛО подняло её из Песочницы, Сергей Беспалов рассказывает свою историю отвратительного обмазывания аннотациями Jackson, которая закончилась дата-классами в Kotlin. Время чтения — минута.
Вышел свежий 2020 Digital Innovation Benchmark report. Как и положено по законам жанра, они опросили около 200 принимателей решений из компаний-лидеров в США, и пришли к выводу, что сейчас миром правит идея микросервисов. Отчет всего на несколько листочков, веселые цветные картинки, если вам интересна микросервисная тема — стоит взглянуть. Порадовало, что 11% опрошенных вообще не видят никаких проблем с микросервисами, а 36% не смогло осилить безопасность.
О другом интересном исследовании рассказал Joe Drumgoole, Director of Developer Relations в MongoDb. Они опросили 1516 людей во Франции, Германии и Великобритании, задавая вопросы на тему: насколько бизнес доверяет решениям, которые делают разработчики? Интересный вывод из отчёта: наиболее согласны с выбором технологий молодые разработчики, не старше 44 лет. В группе 45+ всё плохо.
По отчету 2020 state of enterprise machine learning видно, что масштабы продолжают расти: только у 2% опрошенных за последний год наблюдается уменьшение бюджетов! Создатели отчета ожидают, что дальнейшее развитие связано с увеличением количества дата-сатанистов в компаниях среднего размера, а вот в больших компаниях отчаянно режут косты, и соответственно, ожидается падение удовлетворенности клиентов.
У меня болит зуб, поэтому в этой статье может быть море опечаток по невнимательности. Пожалуйста, присылайте их в личку, а не комментариями к статье!
«Картинка для привлечения внимания» — на самом деле, фотография Сергея Перцева, члена Союза фотохудожников России, EFIAP и призёра Travel Photographer of the Year.