Java-дайджест (27 апреля — 4 мая)

Netflix Titus

Netflix начали выкладывать в open source свою платформу для управления контейнерами — Titus. Netflix уже хорошо известна в Java-мире такими продуктами, как Eureka и поддержкой в Spring Cloud Netflix. Уже сейчас видно, что часть исходников (вроде Titus Control Plane) использует Java, но есть и исходники на Golang.

Titus работает поверх Apache Mesos и AWS EC2. В ноябре прошлого года они уже писали о множестве испытаний, которые им пришлось пройти при разработке такой системы — например, о разворачивании и на контейнеры, и на виртуальные машины. Из этой статьи нам интересна общая структура компонентов системы:

Разработчики Titus, конечно, знали о Kubernetes, но решили сделать всё по-своему. Например, у них есть два уровня планирования загрузки: первый предполагает держать запущенным какое-то минимальное количество виртуалок, чтобы быстро стартовать контейнеры, а второй — напротив, выделяет их только по запросу.

Начать знакомство можно c официального репозитория на GitHub (который, в свою очередь, ведет еще на три других), и пока еще короткой документации.

General Data Protection Regulation

Иногда от политики безумно сложно убежать. Сейчас она захлестнула нас проблемами адаптации GDPR. General Data Protection Regulation — новые правила обработки персональных данных в Европе для международного IT-рынка. Правил много, в качестве примера: компании обязаны предоставлять бесплатную электронную копию персональных данных по требованию самого субъекта этих персональных данных. Прочитать об этом можно где угодно (например, на Хабре).

Технически это может означать перемещение огромного количества данных из публичных облаков в корпоративные датацентры. По этому поводу высказался Стюарт Рум (Data Protection Lead в PwC): «Так как до дедлайна, 25 мая 2018, остался всего месяц, разработчики должны сфокусироваться на создании минимально жизнеспособного продукта (minimum viable product, MVP), который сможет выполнить поставленные задачи».

Не секрет, что современный Java-бэкенд часто создается для использования в публичных облаках, и вся эта ситуация может оказаться серьезной проверкой жизнеспособности наших технологий и архитектурных принципов. Кому-то придется серьезно переделать инфраструктуру, пересмотреть отношения к девопсу, переписать код и так далее.

Тем не менее, песня облаков как таковых еще не спета. Например, Сатья Наделла (гендиректор Microsoft) утверждает, что «для большинства клиентов будет куда эффективней и дешевле перенести свои данные в GDPR-совместимое облако Microsoft, чем самостоятельно поддерживать инструменты для совместимости с GDPR». Amazon также утверждает, что все их сервисы готовы к GDPR.

Google vs Oracle

Ранее в сериале:

  • 2010 — Oracle подала в суд на Google по нарушению двух патентов
  • 2012 — судья говорит, что Google ничего не нарушает
  • 2014 — апелляция, теперь в пользу Oracle
  • 2016 — суд считает, что это fair use, и Google не виноваты
  • 2018 — апелляция, снова в пользу Oracle

Вне зависимости от того, на чьей вы стороне в этом конфликте, теперь вам известна конкретная сумма. Oracle хочет 8.8 миллиардов долларов. Но эта сумма не окончательная и может возрасти — оценкой ущерба занимаются специальные люди.

Влияние этого конфликта велико. Например, легко представить ситуацию, когда возросшие лицензионные отчисления приведут к тому, что некоторые разработчики откажутся от языка Java и начнут использовать что-то другое (не будем показывать пальцами). Мы будем следить за развитием ситуации.

Spring

Pivotal исполнилось 5 лет! С днем рождения!

Выпущено множество интересных постов про Spring. Среди них стоит отметить следующее:

Kafka

Jakarta EE

Эта неделя в значительной степени определялась событиями предыдущей. Интернет переполнился новостями о Jakarta EE: изначально мрачные статьи о неопределенном будущем технологии стали замещаться множеством мелких интересных туториалов и историй из жизни (например, как Java EE 7 использовалась для разработки медицинских приложений).

Java

Последние новости по завершению бесплатной публичной поддержки Java 8 приводят к дискуссиям о судьбе платформы и составлениям всевозможных сводных графиков. Похоже, ни для кого не секрет, что Java 8 продолжает оставаться самой популярной версией в продакшне, Spring и Maven продолжают доминировать в своих областях, а вот на Kotlin за последний год свалился по-настоящему ошеломляющий успех.

С другой стороны, переход на Java 10 и 11 оказался не таким уж простым, как казалось ранее. Например, Lombok всё еще не запускается на Java 10, в Graal нужно проделать работу, связанную с исчезновнием JAXB и так далее. Тем не менее, интерес к новым версиям Java никуда не делся, и такие вопросы, как «использование var в JShell» становятся уже даже не просто популярными, а обыденными.

Тестирование и Java

Во-первых, вышел JUnit 5.2.0, не забудьте обновить зависимости! Вот что изменилось.

Из всего ченжлога можно выделить пару интересных фичей:

  • JUnit Platform Surefire Provider (junit-platform-surefire-provider) теперь работает вместе (и требует по зависимостям) Surefire 2.21.0, а это означает, что теперь можно работать с Java 9 и 10.
  • include pattern по умолчанию теперь захватывает классы, начинающиеся с Test или заканчивающиеся на Test или Tests. Меньше бесполезной писанины!

Во-вторых, есть несколько интересных статей:

Насчет Cypress. Это ведь JavaScript, правда? Тем не менее, оно отлично запускается и под Graal — мы проверили. Вот здесь есть отличный туториал по тестированию приложения на React.

Node.js 10

Раз уж с помощью Graal на JVM теперь можно запускать JavaScript, трудно обойти самую большую новость JS-мира.

Тихо и незаметно вышла Node.js 10, параллельно обновился и npm, теперь он версии 6.

То есть если вы используете GraalVM, он начал нудить: обнови меня, обнови меня. А обновляться-то нельзя, точно всё сломается. Интересно, насколько оперативно на это отреагируют в Oracle Labs.

Несмотря на то, что Node.js 10, вроде как, должна быть небольшим инкрементальным обновлением, там есть и серьезные изменения. Например OpenSSL 1.1.0 серьезно переколбасили: IPv6, EVP, Bignum, core structs, state machine, negotiation. Добавлены CCM, OCB, ChaCha/Poly, scrypt, BLAKE2. Если вдруг к этому что-то прибито гвоздями, ребятам из Оракла предстоят веселые деньки.

Pluralsignt Technology Index

Pluralsight (известные товарищи, занимающиеся онлайн-обучением) запилили собственный технологический индекс: https://www.pluralsight.com/tech-index. Сравнение окончилось ожидаемым исходом.