Расписание дайджестов
Мы провели небольшие исследования, и теперь Java-дайджест будет выходить в понедельник. Новый график действует в экспериментальном режиме до получения стабильного фидбэка от читателей.
Сообщество
- Вышли первые два (раз, два) из примерно шести выпусков «Разбора Полётов», записанные на JPoint вместе с Антоном Черноусовым.
Платформа Java
- Встречайте нового члена Java Community Process (JCP) Executive Committee (EC) — Alibaba. В своем питче «почему за нас стоит голосовать» Kingsum Chow (занимающий должность Chief Scientist в Alibaba System Software Hardware Co-optimization group) сказал: «Alibaba имеет долгую историю участия в open source и сообществе […] Мы делаем софт на основе богатой экосистемы Java, выложенной в open source, и мы возвращаем наработки в сообщество, включая jStorm, fastJSON, и т.п. У нас есть два коммитера в OpenJDK и еще один человек в экспертной группе по JSR 353».
- В Оракле хотят выбросить джавовую стандартную сериализацию. Это долгосрочная цель, являющаяся частью Project Amber. Вместо неё в JDK предлагается впилить фреймворк, который будет делать сериализацию над графами рекордов. Конечно, это может произойти только тогда, когда рекордами можно будет пользоваться — а когда это произойдет, в точности никто и не знает (включая Рейнхольда и Гёца).
- Предлагается добавить метод
Files.isSameContent
, нужный сами понимаете для чего. Обсуждение в рассылочке заключается в решении довольно скучных вопросов:- А может назвать
haveSameContents()
? - Объяснить взаимоотношения с существующим методом
isSameFile()
. Например, обсудить, чтоisSameFile(Path,Path)
возвращаетtrue
просто по факту совпадения аргументовPath
, даже не проверяя существование этих файлов. - А существуют ли реальные жизненные примеры использования такого метода? Ну например, чтение файла сразу в строку.
- Интересное сообщение от Remi Forax о том, как в шесть строк джавакода можно захэшировать содержимое файла, используя няшные нововведения из JDK 9 и 10 (
InputStream.transfer(OutputStream)
, local variable type inference,MessageDigest
,DigestOutputStream
).
- А может назвать
- Скорей всего,
isSameContent
примут, потому что он уже обсуждается в другом предложении — Add methods to Files for reading/writing a string from/to a file, добавляющее следующие методы:readString(Path)
readString(Path, Charset)
writeString(Path, CharSequence, OpenOption...)
writeString(Path, CharSequence, Charset, OpenOption...)
- Новые JEP:
- JEP 329: ChaCha20 and Poly1305 Cryptographic Algorithms. Если ты не понимаешь, что это, то тебе оно и не нужно 🙂 В целом, RC4 (Rivest Cipher 4) отключили в современных браузерах, потому что он небезопасный, а ChaCha20 пришел ему на замену — таким образом можно идти в ногу с другими криптографическими тулкитами и реализациями TLS;
- JEP 330: Launch Single-File Source-Code Programs. Можно из командной строки, как скрипт, запускать такие джава-файлы, у которых в заголовке есть shebang (то есть строка вида
#!/path/to/java --source version
).
Фреймворки
- Только ленивый на этой неделе не написал, что недавно вышедший Wicket 8 не очень-то умеет в лямбды. Дело в том, что лямбд нет в API, и разработчики объясняют это производительностью и использованием памяти. Но мы-то понимаем. При этом фабрики с поддержкой лямбд для форм, моделей и behavior имеются, в результате разработчик может использовать лямбды там же, где и модели. Раньше вся привязка данных делалась с помощью
PropertyModel
поиском по строке и выглядела чрезвычайно убого и неподдерживаемо в IDE. Теперь же можно использоватьLambdaModel
, и это хотя бы позволяет подключить кое-какие рефакторинги.
IDE
- Вышла IntelliJ IDEA 2018.2 EAP3
- Улучшилась работа с аннотацией
@Contract
; - Jump outside closing bracket/quote;
- В отладчике, intentions на брейкпоинтах теперь могут срабатывать или не срабатывать в зависимости от вызывающего метода;
- В диалоге Git Checkout работает автодополнение тэгов.
- Улучшилась работа с аннотацией
- Обновление статуса Theia.
- Переход в Eclipse Foundation, лицензия — EPL2 и GPL;
- Eclipse Che переходит на Theia;
- Над Theia будут трудиться RedHat, Ericsson и TypeFox. В рамках сотрудничества начата работа над визуальным отладчиком, поддержкой протокола отладки из VSCode и новой моделью и API плагинов, которая делается с учетом возможности поддержки плагинов VSCode.
- Куча ништяков в визуальной части: шелл переписан для поддержки drag and drop, улучшена интеграция с Git (diff, history, staging), полноценная поддержка поиска текста по проекту (регулярки и т.п).
- Вышел очередной release candidate для Apache NetBeans 9.0. Качать здесь. Среди улучшений:
- Module Path в дополнение к classpath;
- Добавлен новый тип проекта — Java Modular Project, который позволяет разрабатывать несколько Java-модулей внутри одного проекта NetBeans.
- Для модулей поддерживается полный цикл Edit-Compile-Debug+Profile;
- Зависимости модуля можно посмотреть прямо в IDE;
- Поддержка JShell;
- Улучшения в интерфейсе профилировщика;
- Всестороннее улучшение поддержки PHP и С++ (это ведь так важно для нас, джавистов? 🙂
- Вышел Gradle 4.7, список фичей стал еще длинней:
- Инкрементальная обработка аннотаций;
- Поддержка рантайма Java 10;
- Группировка в неинтерактивных консольных логах (там есть rich и plain режимы, и теперь они отображают одинаково хорошо):
- Перезапуск упавших тестов для более быстрого фидбэка;
- Kotlin DSL 0.16, в котором появились предкомпилированные скриптовые плагины (после подключения,
src/main/kotlin
становится доступен как обычный Gradle-плагин).
Eclipse
- Mike Milinkovich в своем посте сформулировал текущий статус проектов Jakarta EE. Напомню, что ранее был анонс Оракла по поводу фронта предстоящих работ, и вот как он выполнен:
- Перелицензирование всего в Eclipse — выполнено на 99%. Лицензии — EPL 2 и GPL 2 с classpath exception.
- Продемонстрировать способность сообщества разработать совместимую реализацию — в процессе. Там нужно хотя бы перенести на инфраструктуру Eclipse целых 39 проектов, и это ой как непросто.
- Разобраться с брендингом — сделано. Придумано имя и логотип. Решены проблемы с ASF, которые тоже использовали имя Jakarta.
- Глобальное обновление политики приватности для веб-сайтов Eclipse в соответствии с GDPR.
- Вышел JBoss Tools 4.6.0.AM2 for Eclipse Photon.0.M7. Полное описание изменений есть на этой странице:
- Camel Rest DSL from WSDL wizard
- Camel Editor REST tab
- Camel Rest DSL from WSDL wizard
- Вышел Xtext 2.14. В то время как прошлые релизы фокусировались на повышении стабильности и исправлении багов, в 2.14 добавили множество новой функциональности. В частности:
- Поддержка Java 9 и 10
- Поддержка JUnit 5
- Новые аннотации:
@Deprecated
,@Final
и@Exported
; - Интеграция с Eclipse:
- Проверка ошибок конфигурации;
- Улучшения в Quickfixes;
- Отмена рефакторингов;
- Content Type Descriptor;
- Новые API:
- EMF Model Manipulation API;
- Новый Rename Refactoring;
- Улучшения в Xbase Library (
org.eclipse.xtext.xbase.lib
);
- Трейсинг по сгенерированному Java-коду;
В целом, ситуация с багами в Xtext выглядит как-то так:
Базы данных
- Hibernate ORM 5.3 только-только вышел, а ему уже завезли багфикс-релиз с двадцатью багами. Ну хоть что-то в этой жизни остается неизменным!
- Что паровозом потянуло за собой багфикс-релиз для Hibernate Search по трём веткам. Хотя свои собственные баги там тоже есть.
- Выпущен Hibernate OGM 5.4.0.Beta1. Основные отличия:
- обновление зависимостей до Hibernate ORM 5.3.0.Final;
- поддержка Infinispan Remote Queries (native, JPQL);
- использование cluster counters для локальных кэшей при генерации sequences для Infinispan Embedded.
- Выпущен MySQL 8.0. С одной стороны, новость не напрямую про Java, но многие у нас все еще используют MySQL. В этом релизе интересно появление документного хранилища, позволяющего внутри одной базы работать как в парадигме SQL, так и NoSQL с применением schema-less JSON. Интересно, как отреагирует на всё это сообщество Hibernate?
- Рекомендую статью про Redis Streams, которые в начале года-таки добрались до бранча
unstable
. API ещё не зафиксированы, так что, если вам действительно важна эта фича, ещё можно связаться с разработчиками и повлиять на её дизайн.
DevOps
- containerd 1.1 ушел в GA. Теперь он поддерживает все фичи Kubernetes. Победное шествие Kubernetes по планете продолжается!
Тестирование
Важные обновления
Интересные статьи
- Get Started With JUnit 5 — толковый мини-курс из семи частей;
- Database testing with Citrus — если вы еще не пробовали Citrus, то можно посмотреть, как в нем решаются подобные проблемы и стоит ли с ним связываться;
- Inline unit tests in Clojure — рассказывает об интересной практике в Clojure, когда юнит-тесты пишутся в том же файле, где написана тестируемая функция;
- TestContainers and Spring Boot — TestContainers набирают популярность, и неплохо иметь готовые рецепты по использованию в современном окружении, чему и посвящена статья.
Разное
- Вышел openHAB 2.3 — платформа для разработки умного дома, позволяющая интегрировать девайсы и писать автоматизацию на специальном движке правил и запускающаяся на Linux, Raspberi Pi, Docker и куче других платформ. Технически эта штука основана на фреймворке Eclipse SmartHome и работает на OSGi-рантайме (Apache Karaf + Eclipse Equinox), а в качестве веб-интерфейса используется Jetty. Скачать его можно с BinTray.
- Enterprise Ethereum Alliance (EEA) выпустил Enterprise Ethereum Client Specification 1.0, посвященную открытому, кросс-платформенному, распределенному фреймворку для леджеров. Задача фреймворка — создать основу для разработки энтерпрайзных стандартизированных блокчейнов. Возможно, скоро разработка блокчейнов станет куда более популярной работой для энтерпрайзных джавистов.
Дайджест готовили
- Олег Чирухин (контент, верстка, проверка фактов) и редакция JUG.ru Group.