Мы провели эксперимент вместе с подкастом «Разбор Полётов» и выпустили этот дайджест синхронно с очередным выпуском подкаста. В студии были Виктор Гамов, Барух Садогурский и Олег Чирухин. Получить запись подкаста можно либо пройдя по ссылке на сайт РП, либо скачав MP3-файл.
Платформа Java
- На конец июня приходится плановая фаза замедления разработки, все в ожидании JDK 11;
- В JDK 11 войдёт еще один JEP, на этот раз посвященный Transport Layer Security 1.3;
- Один JEP всё еще в подвисшем состоянии: Deprecate the Nashorn JavaScript Engine. Сегодня, 26 числа — дата завершения ревью по нему, но вероятность, что его не примут, невелика;
- В JDK 11 исчезнут методы
destroy()
,stop(Throwable)
иcountStackFrames()
классаThread
. Есть дискуссия в рассылочке; - Многих продолжает колбасить от движения за отказ от встроенной сериализации. Обращаем внимание на такие строчки во втором драфте «Java SE 11 (18.9) (JSR 384)»:
Warning: Deserialization of untrusted data is inherently dangerous and should be avoided. Untrusted data should be carefully validated according to the «Serialization and Deserialization» section of the Secure Coding Guidelines for Java SE.
Однако JEP по полному выпиливанию сериализации закрыт, а JDK 10 получил по ней новую документацию (старая удалена), так что можете спать спокойно.
- Kevin Rushforth, лид проекта OpenJFX, в рассылке OpenJDK написал, что хочет релизить OpenJFX 11 почти одновременно c JDK 11. Может быть, это и конец JavaFX, но не конец разработки вообще.
- Выпущен кэширующий C++ комилятор Zapcc, который может ускорить сборку больших проектов на C++ в несколько раз. Интересно, можно ли собрать с его помощью OpenJDK?
Жизнь замечательных компаний
- Новая политика по оплате саппорта Oracle для Java. Основной смысл в том, что минимальная стоимость будет 25 баксов за CPU в месяц.
- Годовая выручка Oracle выросла на 6%, до 39.8 миллиардов долларов. Однако не всё так просто, так как по расчётам co-CEO Oracle, Safra Catz, важнейшее направление облаков (SaaS + PaaS + IaaS) упало с 18% в третьем квартале до 15% в текущем;
- Новая информация об роспуске команды Java Mission Control в Oracle. Портал InfoQ расспросил бывшего сотрудника о судьбе проекта. Коротко: похоже, JMC не умрет, но работать там будет на полставки кто-то из Индии. Портал попробовал узнать что-нибудь у официальных представителей Oracle, но они отвечать наотрез отказались;
- RedHat тоже поделилась циферками. Eric Shander, исполнительный вице-президент RedHat, прокомментировал это так: «We are focused on building our strategic partnerships within our mid-market customers. In Q1, our mid-market deals greater than $250,000 increased 138% year-over-year from 21 deals to 50 deals, with notable growth in Ansible and OpenShift». К сожалению, Ansible — это Python, а OpenShift — Golang и Angular.js, какая недоработка для джавистов.
- Teradata обвинила SAP Hana в том, что они в конце 2000х украли у них какие-то суперважные секреты о базах данных. Запасаемся попкорном! (При чем тут Java? Ну например, HANA — это, по сути, еще и веб-сервер, и ее XS Advanced Engine поддерживает только Java и Node.js)
IDE
PVS-Studio Java
Это новый статический анализатор от PVS-Studio.
- Для получения синтаксического дерева и семантической модели используется Spoon:
- Является не просто парсером, а целой экосистемой — предоставляет не только дерево разбора, но и возможности для семантического анализа, например, позволяет получить информацию о типах переменных, перейти к объявлению переменной, получить информацию о родительском классе и так далее;
- Основывается на Eclipse JDT и умеет компилировать код;
- Поддерживает последнюю версию Java и постоянно обновляется;
- Неплохая документация и понятный API.
- Основной механизм — Data-Flow анализ;
- Переполнения;
- Выход за границу массива;
- Доступ по нулевой или потенциально нулевой ссылке;
- Бессмысленные условия (always true/false);
- Утечки памяти и ресурсов;
- Деление на 0;
- И некоторые другие.
- Инкрементальный анализ;
- Плагины;
- Механизмы и аннотации диагностических правил (по сути, визиторы с перегруженными методами, в которых обходятся интересующие элементы):
Например, так выглядит каркас диагностики V6004:
class V6004 extends PvsStudioRule { .... @Override public void visitCtIf(CtIf ifElement) { // if ifElement.thenStatement statement is equivalent to // ifElement.elseStatement statement => add warning V6004 } }
IntelliJ IDEA
- В официальном блоге JB выпущена статья про поддержку Java 11. Например, если у вас прописаны классы в параметрах лямбды, то теперь есть квикфикс, который заменяет их на
var
:
- 2018.1.5
- The IDE can keep on track after using or canceling navigation pop-ups or menus (IDEA-191839);
- No more errors when navigating to class with Ctrl+N or cmd+O (IDEA-191860);
- Projects can store .iml externally without a compile fail (IDEA-191328);
- No more duplicate changelists if parts of the files are submitted to a Perforce changelist (IDEA-191521);
- Expressions can be evaluated in the lambda body now (IDEA-191797);
- 2018.2 EAP 5
- Darkula еще темнее!
Preferences | Appearance & Behavior | Appearance and enable the Use dark window headers
- Если встать курсором на break или continue, подсветится соответствующий цикл;
- Команда Browse Repository at Revision появилась при просмотре лога VCS;
- Репозитории Git и Mercurial регистрируются автоматически, сообщения «unregistered roots detected» больше не будет;
- Плагин Kotlin обновлён до 1.2.50 и добавилась поддержка scratch-файлов;
- Release notes. Проведена большая работа по 42 подсистемам;
- Darkula еще темнее!
- 2018.2 EAP 6
-
- Улучшения в поддержке Docker, например, добавлено поле «Context folder» (это место, откуда будет запускаться
docker build
)
- Улучшения в поддержке Docker, например, добавлено поле «Context folder» (это место, откуда будет запускаться
-
- Добавлена возможность делать глобальные file watchers
Eclipse IDE
- Сообщество не забывает Eclipse Theia, и недавно на сайте EclipseSource опубликовали обзор о том, что это такое и как у них дела. Вкратце, это фреймворк для создания IDE, написанный на TypeScript. Там есть Node.js-бэкенд, браузерный фронтенд (или можно сделать десктопное приложение с использованием Electron), JSON-RPC между ними, и собственный легкий фреймворк для dependency injection;
- Выпущены JBoss Tools 4.6.0.AM3 для Eclipse Photon.0.RC3.
- Camel URI completion with XML DSL;
- Поддержка JAX-RS 2.1 (JavaEE8. Server-side events. Благодаря аннотации
@Context
,Sse
иSseEventSink
можно инжектить в аргументы методов);
Языки JVM
- Два месяца прошло с выпуска Kotlin 1.2.40, и вот выходит 1.2.50. Несмотря на то, что циферка поменялась только на третьей позиции, изменений множество, включая, но не ограничиваясь:
- Улучшенной поддержкой в Eclipse IDE и IntelliJ IDEA (в Идее можно теперь создавать котлинские scratch-файлы );
- Новые функции в стандартной библиотеке (common и JS);
- Поддержка JUnit 5 в kotlin.test;
- Улучшенная поддержка скриптования (например, можно передавать в скрипт переменные внешним образом, и они будут восприниматься как глобальные);
@JvmDefault
научилась в бинарную совместимость;- И многое другое, о чем можно почитать в официальном описании релиза или множестве статей в блогах.
Spring
- Josh Long объявил об окончании 4 сезона Spring Tips. Архив есть по ссылке. Напоминаю, Spring Tips — это набор скринкастов о разработке на Spring, который в первом сезоне начал Pieter Humphrey и продолжил Josh Long;
- Spring Cloud Finchley.RELEASE Release Train. Один самых больших релизов за последнее время.
- Хорошая статья The Road to Reactive Spring Cloud в блоге Spring Engineering;
- Spring IO Platform
- Brussels SR11;
- Cairo SR2;
- Напоминаем, что 9 апреля проект дожил до end-of-life, а через 12 месяцев будет end-of support;
- Две новые CVE опубликованы и исправлены в свежих версиях (нужно обязательно обновиться):
- CVE-2018-11039: Cross Site Tracing (XST) with Spring Framework
- CVE-2018-11040: JSONP enabled by default in MappingJackson2JsonView
Веб-разработка
- Вышел Vaadin 10. Суть в том, что раньше это был фреймворк на основе GWT, а сейчас он вырос в целую платформу. Все компоненты разрабатываются как Web Components, можно повыбирать между Angular, React или Vue.js на фронте и так далее. Имеется свой фреймворк Flow, который, по сути, сервер-сайд коннектор до веб-компонентов с использованием Java API. Версии Vaadin 7 и 8 будут поддерживаться до конца 2019, 9 — до конца 2022.
- Значительная часть фулстек Java-разработчиков завязана на веб-фреймворки, поэтому вот очередная новость про Ангуляр: началась бета 6.1.0 и команда уже смотрит, что бы выпустить в версии 7. Список фичей можно посмотреть в статье On the road to Angular v7: 6.1.0 beta.1 is here. Также про это можно прочитать у Brad Green, который сейчас работает Angular platform engineering director в Google.
Базы данных
- Второй maintainance-релиз Hibernate Search 5.10:
- Шесть мажорных багов;
- Огромное количество минорных задачек;
- Важное улучшение — возможность устанавливать минимальное количество
should
для матчинга булевых предикатов в QueryDSL:
Query luceneQuery = queryBuilder.bool()
.minimumShouldMatchNumber( 2 ) // This is new
Тестирование
Статьи
- Calling Custom Java Code in Karate API Tests — вводная статья про Karate Framework, фреймворку, который заявляет одной из основных своих фич «no coding», но что, если все-таки нужно дергать кастомный Java-код?
- Scatter Assertions — статья про JUnit 5 и то, как правильно записывать несколько проверок относительно одного и того же объекта;
- WireMock Tutorial: Request Matching, Part Two — рассказывает про то, как записывать проверки на куки, заголовки HTTP и параметры запросов.
Обновление зависимостей
- AssertJ Joda-Time 2.2.0
- Arquillian Cube Extension 1.16.0
- Arquillian Extension Byteman 1.0.0
- Kafka JUnit (5) 0.1.0
- TestContainers 1.8.0
Разбор Полётов
- Episode 163 – РП: Конференции — JPoint 2018: Liberica, Xtend и Alibaba;
- Episode 164 – РП: Конференции — swampUP 2018 Special
События
- Анонсирован Joker 2018;
- Хакатон Jenkins 18-22 июня. Можно было писать плагины для Jenkins, учить Java 10/11, общаться с братьями по разуму по Hangouts и IRC;
- Конференция J-Spring 2018 в Нидерландах;
- Статья о митапе JavaJam в блоге Яндекса на Хабре;
ar-results-show-6-growth-but-cloud-revenue-opaque