- PVSM.RU - https://www.pvsm.ru -

Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США

Charles Nutter [1] — JVM-разработчик из Red Hat, работающий на OpenJDK, мейнтейнер проекта JRuby, Java Champion и Ruby Hero, первоклассный специалист и спикер многих Java-конференций. Впервые в Россию он приехал в прошлом году на Joker 2016, где выступил с двумя хардкорными докладами [2], после чего признался в том, что не ожидал такого теплого приема и решил во что бы то ни стало вернуться в Россию:

Все сложилось удачно, и Charles запланировал визиты в Новосибирск (JBreak, 4 апреля) и в Москву (JPoint, 7-8 апреля). Обзор программы JPoint 2017 [4] мы уже делали, вот руки дошли и до JBreak 2017. Под катом – длиннопост про всех, кто будет выступать в Новосибе, и про все, что они будут рассказывать.

Всего в программе будет 21 доклад. Давайте посмотрим, какие тематики вошли в программу в этот раз?

  • Кишочки JVM (и грядущей Java 9, кстати): модуляризация JVM, AOT и JIT-компиляция, векторизация, работа GC и Foreign Functions.
  • Фреймворки: Spark, Kafka, Spring, Hazelcast Jet, Elasticsearch.
  • Паттерны и подходы: предотвращение дедлоков, статический анализ кода и CRDT.
  • Перфоманс, конечно же. Отдельный доклад о производительности пока только один (от Алексея Шипилёва, разумеется), но почти все доклады так или иначе позволят вам улучшить производительность ваших решений.

Давайте посмотрим детально на каждый из докладов, начнем с перфоманса, а дальше пойдем по списку:

Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 1Алексей Шипилёв — Перформанс: Что В Имени Тебе Моём? [5]

Переработанный, дополненный и расширенный кейноут с Joker 2016 об оптимизациях в больших проектах: общих принципах и соотношениях; жизненном цикле проекта и экономике оптимизаций; жизненном цикле бенчмарков; типичных ловушках, в которых оказываются перформанс-инженеры.

Больше хардкора, больше деталей, больше тайминг, еще более кривая кривая имени «Ш»!


Анатомический атлас JVM

Как и всегда, у нас есть, что послушать про кишочки (на самом деле, это самый большой раздел): все о том, как JVM работает и будет работать в ближайшем будущем под капотом, и что нужно делать, чтобы под капотом происходило именно то, что нужно вам.

Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 2Charles Nutter — More Than You Want to Know about Java's String [6]

Вот, собственно, и ответ на вопрос из заголовка: Чарльз едет в Сибирь, чтобы рассказать о тех самых, родных и привычных всем Java-разработчикам стрингах. Ведь они везде: в API, в полях объектов, почти в любом взаимодействии JVM с внешним миром. Впрочем, реализация String в Java не лишена недостатков: об этом и пойдет речь, которая будет проиллюстрирована нетипичными примерами использования строк. Кроме того, посмотрим, как наши проблемы решали в других языках и какие библиотеки могут помочь в их решении.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 3Владимир Иванов — Техники векторизации кода в JVM [7]

В этом докладе разговор пойдёт о том, как сейчас выглядят векторные расширения процессора и на какие ухищрения приходится идти JVM, чтобы не давать им простаивать: CPU dispatching, VM intrinsic’и, автоматическая векторизация байт-кода в JIT-компиляторах. Будет упомянут и специализированный векторный API (Vector API), работы над которым активно ведутся в Project Panama.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 4Алексей Шипилёв — Shenandoah: сборщик мусора, который смог [8]

Shenandoah — новый сборщик мусора от Red Hat, который пытается решить проблему перемещения объектов без остановки приложения, тем самым сбивая паузы ещё больше. Этот доклад — об особенностях дизайна и реализации Shenandoah, достоинствах, которыми можно гордиться, и недостатках, с которыми приходится мириться.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 5Volker Simonis — Analyzing HotSpot Crashes [9]

В этом докладе будем разбираться с тем, что можно откопать в файлах с ошибками, которые создает HotSpot crash handler, а также с тем, как эти файлы могут помочь нам с анализом и воспроизведением падения системы. Кроме того, посмотрим на инструменты, такие как HotSpot Serviceability Agent, которые позволяют заглянуть в нативные файлы ядра и извлечь из них необходимые данные, которые было бы непросто достать с помощью стандартного дебаггера.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 6Никита @pjBooms Липский – Java 9 Модули. Почему не OSGi? [10]

В Java 9 с неизбежностью появятся модули. Кого-то это мало волнует, кого-то пугает, кто-то искренне недоумевает: зачем, ведь у нас уже больше 15 лет есть OSGi, который решает ровно те же проблемы, что и модули?

В этом докладе Никита попробует разобраться, какие проблемы пытается решить OSGi, как он их решает и решает ли в действительности. Затем расскажет, какие проблемы, которые пытается решить OSGi, Jigsaw совсем не решает и почему, а какие проблемы решает и как. Ну и на конец доклада: какие проблемы Jigsaw при этом привносит в экосистему Java и что с этим надо будет делать.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 7Дмитрий Чуйко – «Преждевременная» компиляция — это нормально? [11]

В Oracle JDK 9 появилась статическая (ahead-of-time) компиляция кода. Мы уже обсуждали, зачем это нужно, и рамки текущей реализации. Пришло время поговорить о технических деталях: Какая информация и как генерируется при работе AOT, как скомпилированный AOT код взаимодействует с Hotspot? Что можно поделать с AOT кодом внешними инструментами, и как встроиться в процесс компиляции? И, конечно, какие крутилки можно покрутить, и какая будет производительность при использовании AOT?


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 8Иван Крылов – Жизненный цикл JIT кода [12]

Все знают, что делает JIT. Знаете ли вы, как он это делает? Как компилятор принимает решения и к каким последствиям могут приводить его ошибки? Иван расскажет о механизмах сбора профилей и алгоритмов перехода между разными вариантами скомпилированного кода, а также интерфейсах для взаимодействия с JITом.


Java Developer Toolbox

Иметь инструменты – хорошо, однако уметь их правильно использовать – еще лучше. В этом блоке давайте описаны доклады, посвященные тулам, позволяющим комфортно работать с bigdata, поиском, распределенными системами и параллелизмом:

Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 9Алексей @zaleslaw Зиновьев — Kafka льёт, а Spark разгребает! [13]

В типичном ТЗ по real-time аналитике часто имеются пункты о том, что необходимо подсчитывать «на лету» некоторые агрегированные величины за небольшой период времени, фильтровать поток, уменьшая нагрузку на последующие стадии вычислений. Достаточно часто мы можем видеть проекты, где команды организуют своё «озерцо данных» в Amazon, просто сваливая все приходящие ивенты в Kafka. Справится ли Spark с потоками из Kafka? А если справится, то какой ценой и что ему в этом поможет? Не ждите на докладе введения в Spark, RDD, разговоров за Big Data. Один кейс — одно решение — немного теории — правим конфиги — пишем код.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 10Виктор @gAmUssA Гамов — Блеск и нищета распределенных стримов [14]

Вы из тех, кто гонится за производительностью, запихивая в любой цикл Collection.parallelStream()? Задумываетесь, как обойтись без глобальной переделки кода и решить все проблемы с помощью большего количества серверов? Как получить распределённую обработку с линейным ростом производительности? Если подобные вопросы звучат у вас в голове, тогда этот доклад для вас.

В нем Виктор расскажет обо всех деталях распределённой обработки, познакомит слушателей со своим другом – Ориентированным Ациклическим Графом – и покажет, как с его помощью организована обработка информации поверх API Java 8 Stream. Распределенная! Высокопроизводительная! «В памяти»!


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 11Philipp Krenn – Full-Text Search Explained [15]

Полнотекстовый поиск это то, чего многие ожидают от современных приложений. Вопрос в том, сложно ли его реализовать. Ответ – не так сложно, как кажется.

Из этого доклада вы узнаете, как работает полнотекстовый поиск, и в чем разница в работе с разными БД; как правильно оценивать качество и скорость поиска; как все это внедрить в свое приложение при помощи Elasticsearch.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 12Кирилл @tolkkv Толкачев — Проклятие Spring Test [16]

Чем проще инструмент, тем больше магии он делает «под капотом». Spring Boot не исключение. Более того, мало кто задумывается, что происходит при использовании привычных всем инструментов, описанных в документации Spring Test.

Вместе с Кириллом, главным разработчиком Альфа-Лаборатории, будем разобраться в деталях того, какие грабли нам аккуратно подложили тут и там. Для этого протестируем «типичное» приложение и зададим себе вопросы, которые должен задавать любой разработчик, использующий Spring и яростно внедряющий Spring Boot на своих проектах.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 13Яков Жданов — Масштабируемость в распределенных in-memory системах [17]

К сожалению, производительность распределенных систем на больших масштабах почти никогда не показывает линейного роста относительно количества задействованных машин. На примере Apache Ignite посмотрим, в чем заключается работа программиста в построении распределенной системы, а в чем – работа фреймворка. Посмотрим на внутренние компонены Apache Ignite, отвечающие за параллелизм и масштабирование и рассмотрим наиболее важные компромиссы и противоречия, возникающие при проектировании приложений на основе in-memory систем.


Code Complete: JBreak edition

Программирование – это не только про написание кода, это, как в свое время говорил Макконелл, конструирование. У вас может быть свой стиль, однако для того, чтобы он имел право на жизнь, вам следует знать о том, как правильно решаются задачи. Здесь мы собрали доклады, из которых вы сможете узнать о правильных подходах и способах решения известных проблем из области параллелизма, конкуренции и анализа кода.

Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 14Тагир @lany Валеев — Java-инспекции в IntelliJ IDEA: что может пойти не так? [18]

IntelliJ IDEA постоянно подчёркивает ваш код, предлагая заменить его на что-нибудь получше. Иногда результаты кажутся просто волшебными. Как IDE это делает? Как разбирается в вашем коде, как генерирует новый код на замену старого и какие тут есть подводные камни?

Мы посмотрим, из чего состоит типичная инспекция кода в IntelliJ IDEA и сколько седых волос появляется у разработчиков IDE ради того, чтобы вы могли одним нажатием улучшить свой код.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 15Андрей Ершов – CRDT. Разрешай конфликты лучше, чем Cassandra [19]

Подумайте только: инфраструктура из несколько дата-центров с асинхронной репликацией и отсутствием координации, дающая доступность и корректную работу в условиях сетевой сегментации, а также молниеносный отклик на клиенте и оптимистичный UI. Почему этого еще нет у всех? Всё это может привести к конкурентным изменениям, а конкурентные изменения приводят к конфликтам, которые не решить простым conflict resolver на timestamp’ах.
Однако проблему можно решить при помощи CRDT (Conflict-free replicated datatypes). В этом докладе Андрей расскажет о различных видах CRDT, их преимуществах и недостатках, а также границах применимости CRDT.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 16Никита Коваль — Динамический поиск потенциальных дедлоков в многопоточных приложениях на Java [20]

Дедлоки – одна из наиболее актуальных проблем при разработке многопоточных приложений. В рамках этого доклада будет рассмотрен инструмент Dl-Check, используемый для поиска потенциальных дедлоков. В ходе разработки подобного инструмента не обойтись без инструментации байт-кода, для реализации которого стандартом де-факто является фреймворк ASM. В первой части доклада будет представлен основной алгоритм указанного инструмента, который позволяет эффективно находить потенциальные дедлоки в процессе работы приложения. Вторая часть доклада будет посвящена инструментации байт-кода, а также полезным техникам и нетривиальным проблемам, связанным с ней.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 17Егор @yegor256 Бугаенко — Аннотации в Java — это ошибка [21]

Любителям дичи — очередной вызов Java-сообществу от Егора Бугаенко! Как известно, аннотации появились в Java 5 и привели к серьезному упрощению многих библиотек, а также к появлению новых. Всем понравилась идея сокращения размера кода благодаря использованию аннотаций и возможность отказаться от сложных XML файлов конфигурации в Hibernate и Spring.

В свое время Егор тоже был большим поклонником аннотаций. Однако все изменилось, и на сегодняшний день он категорически против них и считает, что аннотации — большая ошибка в дизайне Java. Почему? Об этом и будет доклад.


Java-конференция JBreak 2017, или зачем Charles Nutter едет в Новосибирск из Миннеаполиса, США - 18Олег @olegchir Чирухин – Девопс: теперь Java не тормозит [22]

Пользуясь случаем, напомню, что DevOps — он как Слава КПСС, — вообще не человек. И доклад Олега посвящен тому, как правильно «готовить» DevOps на Java-проектах, чтобы старушка Java дала прикурить модным Golang и node.js в вопросах поддерживаемости и деплоя. Какие инструменты управления инфраструктурой позволяют сделать жизнь админов лучше, а жизнь разработчика интереснее, насыщеннее и продуктивнее.


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

В общем, интересного действительно будет много, и если вы живете в Сибири и пишете на Java — мы будем рады видеть вас на JBreak. Регистрация открыта, милости просим на сайт конференции [23].

Автор: JUG.ru Group

Источник [24]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/250647

Ссылки в тексте:

[1] Charles Nutter: https://twitter.com/headius

[2] хардкорными докладами: http://2016.jokerconf.com/speakers/charles-nutter/

[3] October 17, 2016: https://twitter.com/headius/status/788079926159216640

[4] Обзор программы JPoint 2017: https://habrahabr.ru/company/jugru/blog/323040/

[5] Алексей Шипилёв — Перформанс: Что В Имени Тебе Моём?: https://2017.jbreak.ru/talks/performance-whats-in-it-for-you/

[6] Charles Nutter — More Than You Want to Know about Java's String: https://2017.jbreak.ru/talks/going-native-foreign-functions-on-the-jvm/

[7] Владимир Иванов — Техники векторизации кода в JVM: https://2017.jbreak.ru/talks/vector-programming-in-java-jb/

[8] Алексей Шипилёв — Shenandoah: сборщик мусора, который смог: https://2017.jbreak.ru/talks/shenandoah-the-garbage-collector-that-could/

[9] Volker Simonis — Analyzing HotSpot Crashes: https://2017.jbreak.ru/talks/analyzing-hotspot-crashes/

[10] Никита @pjBooms Липский – Java 9 Модули. Почему не OSGi?: https://2017.jbreak.ru/talks/java-9-modules-why-not-osgi/

[11] Дмитрий Чуйко – «Преждевременная» компиляция — это нормально?: https://2017.jbreak.ru/talks/compile-ahead-of-time-its-fine/

[12] Иван Крылов – Жизненный цикл JIT кода: https://2017.jbreak.ru/talks/lifecycle-of-a-jit-compiled-code/

[13] Алексей @zaleslaw Зиновьев — Kafka льёт, а Spark разгребает!: https://2017.jbreak.ru/talks/handling-with-spark-what-kafka-is-streaming/

[14] Виктор @gAmUssA Гамов — Блеск и нищета распределенных стримов: https://2017.jbreak.ru/talks/the-splendors-and-miseries-of-the-distributed-streams/

[15] Philipp Krenn – Full-Text Search Explained: https://2017.jbreak.ru/talks/full-text-search-explained/

[16] Кирилл @tolkkv Толкачев — Проклятие Spring Test: https://2017.jbreak.ru/talks/spring-test-horror/

[17] Яков Жданов — Масштабируемость в распределенных in-memory системах: https://2017.jbreak.ru/talks/scalability-in-distributed-in-memory-systems/

[18] Тагир @lany Валеев — Java-инспекции в IntelliJ IDEA: что может пойти не так?: https://2017.jbreak.ru/talks/java-vs-intellij-how-we-develop-code-inspections-jb/

[19] Андрей Ершов – CRDT. Разрешай конфликты лучше, чем Cassandra: https://2017.jbreak.ru/talks/crdt-conflict-free-synchronization-in-distributed-systems/

[20] Никита Коваль — Динамический поиск потенциальных дедлоков в многопоточных приложениях на Java: https://2017.jbreak.ru/talks/dynamic-potential-deadlock-detection-in-concurrent-java-programsbr/

[21] Егор @yegor256 Бугаенко — Аннотации в Java — это ошибка: https://2017.jbreak.ru/talks/utility-classes-are-killing-us/

[22] Олег @olegchir Чирухин – Девопс: теперь Java не тормозит: https://2017.jbreak.ru/talks/devops-for-java/

[23] на сайт конференции: https://2017.jbreak.ru/

[24] Источник: https://habrahabr.ru/post/324668/