Java-дайджест (30 июля — 6 августа)

Этот дайджест взаимодополняет выпуск подкаста «Разбор Полётов». На этот раз в студии были Барух Садогурский и Олег Чирухин, а Виктор Гамов присутствовал с нами морально и помогал доработать выпуск. Получить запись подкаста можно либо пройдя по ссылке на сайт РП, либо скачав MP3-файл.


  • JDK: Rampdown Phase Two. До 16 августа остались считаные дни, последний шанс что-то поправить. Более подробно схема релизов объяснена в JEP 3.
  • John Rose опубликовал новый черновик JEP: «Type operator expressions in the JVM». Он вводит понятия type operators и descriptors, которые (насколько я понял) в конечном итоге нужны для корректной записи вещей вроде List<int> или value type List<ComplexDouble>.
  • Возможно, в будущем в OpenJDK будут использовать Git вместо Mercurial. Ранее к Mercurial возникало множество неприятных вопросов, и вот теперь в рассылке Call for Discussion: New Project: Skara предлагают обсудить несколько критериев:
    • Производительность: время на клонирование, на локальные операции и т.п.;
    • Эффективность использования диска;
    • Использование в разных регионах;
    • Поддержка в популярных средах разработки, включая Linux, Mac и Windows;
    • Способность выдержать груз истории правок с учетом предполагаемого роста нагрузок в ближайший десяток лет;
    • Поддержка практик ревью кода, принятых в JDK;
    • Программные API, позволяющие автоматизировать работу с репозиторием.
      Как на это реагируют люди, можно услышать, например, в интервью Stephen Colebourne (Java Champion, известный по работе над Joda Time и JSR 310), в котором он прямым текстом сказал: «Using Git instead of Mercurial is a great idea».
  • Вышел GraalVM 1.0-rc5. Улучшения коснулись как community edition, так и enterprise edition. Про улучшения хорошо написал на своём Medium Олег Шелаев. Это огромный проект с безумно большим списком изменений, поэтому в дайджесте кратко описать не получится — читайте блог Шелаева.
  • Kubernetes теперь доступен в Docker Desktop (Stable).
  • Появился новый фреймворк Liquicouch, который, как и следует из названия — нечто вроде Liquibase, но для Couchbase. Какой там API, можно сразу предположить:
  • Пополнение в ряду фреймворков: Asity 2.0.0, легкая абстракция над различными JVM-фреймворками. Вообще, версия 2.0.0 вышла уже месяц как, но особо не продвигалась, и вот сейчас создатель фреймворка Donghwan Kim дал подробное интервью. Идея в том, чтобы написать какой-то вебный код и потом запускать его поверх любой популярной технологии для JVM. Технически, предлагается писать веб-фрагменты, использующие классы вроде ServerHttpExchange и ServerWebSocket, которые сдизайнены для воплощения основных спецификаций интернета: RFC2616 для HTTP/1.1, RFC6455 и так далее. Типичный код выглядит вот так: 
  • Вышел большой последний релиз-кандидат библиотеки Javalin 2.0. Javalin — это легкий веб-фреймворк, который во главу угла ставит максимальную простоту и интероперабельность между Java и Kotlin. По большей части, все улучшения касаются кишков фреймворка, а из API самое важное изменение — полностью переписанная работа с вебсокетами. Как выглядит код на Javalin, лучше посмотреть в документации (благо это легко и просто — она состоит из набора коротких примеров). А хэлловорлд выглядит так: Java:  Kotlin: 
  • Рубрика «Тяжелая жизнь в изгнании». В инкубаторе появился NetBeans 9.0. Пока что все фичи заключаются в поддержке Java 9 и 10, и конкретно — local variable type inference, Jigsaw module system, JShell. Добавили новый тип проекта Java Modular Project. Надо понимать и радоваться, что NetBeans вообще пережил трансфер в Apache: решение о передаче было сделано в сентябре 2016 года, и вот так оно все тянулось до тех пор, пока в июне этого года передача исходников не была доведена до конца. Но конечно, по сравнению с тем пиром духа, что сейчас творится в IntelliJ IDEA и Eclipse IDE, всего лишь поддержка фичей годовалой давности выглядит бледно и заставляет задуматься о будущем NetBeans.
  • Еще один известный проект в изгнании — JakartaEE, избрал членов основных рулевых комитетов. Встречайте:
    • Specification Committee — Participant: Alex Theedom (LJC)
    • Specification Committee — Committer Member: Werner Keil
    • Marketing & Brand Committee — Participant: Simon Maple (LJC)
    • Marketing & Brand Committee — Committer Member: Ivar Grimstad
    • Steering Committee — Participant: Martijn Verburg (LJC)
    • Steering Committee — Committer Member: Ivar Grimstad
  • В блоге Eclipse опубликован мотивационный пост «We Are Open» о том, какие Eclipse большие и перспективные. 350+ Open Source проектов, начиная от энтерпрайзной джавы, заканчивая IoT и автономными машинами.
  • Вышел Hibernate ORM 5.3.4.Final. На этот раз — никаких десятков закрытых багов, всего 14.
  • Недавно мы писали об анонсе Google Knative. Не прошло и недели, а люди уже попробовали приготовить его для Spring. Первый запрос обрабатывался 17 секунд — это время уходит на запуск пода, а вот все следующие запросы уже быстры как всегда. Автор статьи по ссылке пользовался Knative Serving: официальным интеграционным проектом, предоставляющим мидлварь для следующих вещей:
    • Rapid deployment of serverless containers
    • Automatic scaling up and down to zero
    • Routing and network programming for Istio components
    • Point-in-time snapshots of deployed code and configurations
  • Кстати, Istio-таки дожил до версии 1.0, но так как он написан на Golang, на этом и хватит. Ну и раз уж про Golang, то Hashicorp Terraform в новой версии заполучил First-Class Expressions.
  • Вышли Mockito 2.20.5 и JUnit Pioneer 0.1.2 (набор экспериментальных расширений для JUnit 5 и Jupiter API). Нужно обновить зависимости.

Spring

  • Вышел Spring Security 5.1.0.M2. Множество улучшений в поддержке OAuth 2, конфигурировании и безопасности.
  • Объявлено об End of Life линейки Spring Boot 1.x, который состоится 1 августа 2019 года. До этого будут выпускаться небольшие поддерживающие релизы ветки 1.5.x.
  • В рамках этого выпущен Spring Boot 1.5.11. 35 фиксов, улучшений, обновлений зависимостей.
  • За ней 1 июля 2018 года закончит жизнь и Spring Cloud Edgware. На всякий случай напоминаем, что Camden уже дошел до своего EOL, а Dalston помрёт в декабре 2018, то есть — совсем скоро. В мире Spring Cloud «медленный — значит, мёртвый», нужно постоянно быть в курсе трендов и своевременно обновляться.
  • Ветка 2.x.x активно продвигается вперед, и в новом выпуске Spring Boot 2.0.4 было представлено целых 90 изменений.
  • Несмотря на такое количество изменений в 2.0.4, уже готов новый майлстоун: Spring Boot 2.1 M1. Там ченжестов уже целых 180 штук. Он основан на последних достижениях Spring Framework 5.1.RC1, Spring Data Lovelace RC1, Spring Security 5.1 M2 и других проектов. Заявленные фичи:
    • Servlet 4 support with Undertow 2.0 and Tomcat 9.0;
    • Caches endpoint;
    • Support for querying an individual component’s health;
    • Support for profile expressions in multi-profile YAML documents and Logback configuration;
    • И многое другое, что есть в описании релиза.
  • Много выпусков дайджеста подряд мы отслеживаем судьбу Spring Cloud Data Flow. Ура: наконец-то вышла финальная версия Spring Cloud Data Flow 1.6 GA. Заявленные фичи:
    • Task Scheduling on PCF;
    • Dashboard improvments;
    • Kubernetes support enhancements;
    • App hosting tool;
    • Composed Task Runner security;
    • DSL and deployment property parsing refinements;
    • Batch Database Schema and Optimization.
  • Вышли два поддерживающих релиза Spring IO Platform — Cairo-SR3 и Brussels SR12.
  • Вышел Spring Cloud Finchley.SR1. Состав релиза:
    • Основан на Spring Boot 2.0.4.RELEASE;
    • Spring Cloud Consul 2.0.1.RELEASE (issues);
    • Spring Cloud Gateway 2.0.1.RELEASE (issues);
    • Spring Cloud Sleuth 2.0.1.RELEASE (issues);
    • Spring Cloud Config 2.0.1.RELEASE (issues);
    • Spring Cloud Netflix 2.0.1.RELEASE (issues);
    • Spring Cloud Commons 2.0.1.RELEASE (issues);
    • Spring Cloud Contract 2.0.1.RELEASE (issues);
    • Spring Cloud Stream Elmhurst.SR1 (Release Notes);
    • Spring Cloud Vault 2.0.1.RELEASE (issues);
    • Spring Cloud Openfeign 2.0.1.RELEASE (issues).

Дайджест готовили

  • Текстовая версия: Олег Чирухин (контент, верстка, проверка фактов) и редакция JUG.ru Group;
  • Подкаст «Разбор Полётов» (ссылка на запись): Виктор Гамов, Барух Садогурский и Олег Чирухин.