JPoint всегда славился хардкорными докладами. Которые, так уж получилось, в основном состоят из рекомендаций по написанию сборщиков мусора, компиляторов, и прочей жести, которую далеко не каждый может применить в повседневной жизни.


Но дело в том, что многим перформанс не интересен. Существует ещё множество проблем, которые куда важней, чем ускорение приложения на 1%. Поэтому больше половины докладов на этой конференции представляют собой вполне разумный материал, который каждый может попробовать использовать у себя.


Обзор программы докладов по перформансу делался в отдельном посте, — поэтому в этой статье мы не выбрасываем их вообще, но описания будут максимально краткими.


За более подробной информацией — добро пожаловать под кат.



Disclamer. Статья написана по впечатлeниям от содержимого программы на официальном сайте. Всё ниженаписанное — мои собственные мысли, а не цитаты из докладов. В тексте могут быть (и точно есть) неверные предположения и неточности.



День 1




10:30





Spring Framework 5.0 on JDK 8 & 9

Конференция открывается кейноутом, в котором Juergen Hoeller расскажет о новой, актуальной в этом году проблеме — запуске Spring Framework на JDK 9 и выше. В общем, этот доклад не просто про Spring, а про совместимость низкоуровневых фреймворков с JDK 9, который основан на практическом опыте разработки Spring.


Juergen — это создатель Spring и в данный момент — главный человек в нём (стал им после ухода Rod Johnson), ведущий разработчик и релиз-менеджер Spring Core с 2003 года. Кроме того, он архитектор в Pivotal — компании, известной по Cloud Foundry, Greenplum Database, дистрибутиву Hadoop под названием Pivotal HD и версии Greenplum для него под названием Hawq, и так далее. Такой набор уникальных факторов делает его доклады одними из лучших в мире Spring.






12:00





Боремся с "Russian Hackers" с помощью Kafka Streams и Firehose API

Вот все говорят — русские хакеры. А был ли мальчик? В этом докладе мы попытаемся найти следы Cozy Bear, Fancy Bear и прочих медведей, анализируя поведенческие паттерны на платформе Bintray с помощью Apache Kafka и Firehose API. На реальном примере будет показано, как с помощью Kafka KSQL обрабатывать большие объемы поточных данных, которые в реальном времени отдает любой Firehose API, и как находить в нем зловредные (и не только) закономерности.


Никаких предварительных знаний о Kafka Streams, KSQL, Firehose APIs, Bintray или о Russian hackers не требуется!


Первый докладчик, Виктор Гамов (gamussa) — Solution Architect в компании Confluent, которая разрабатывает платформу на базе Apache Kafka. По сути, Виктор даёт информацию "из первых рук", только от него на русском языке можно услышать новейший эксклюзивный материал про внутренние механизмы работы Kafka и связанной экосистемы. Как лидер подкаста «Разбор Полётов», у него есть огромный опыт в объяснении сложных вещей легко, доходчиво и весело. Чуть позже я постараюсь записать и выложить на Хабр новое интервью с ним.


Второй докладчик, Барух Садогурский (jbaruch) — Developer Advocate в компании JFrog и (по его словам) делает в жизни ровно 3 вещи: зависает с разработчиками Bintray и Artifactory, пописывает для них код и рассказывает о впечатлениях в блогах и на конференциях, таких как JavaOne, Devoxx, OSCON, конечно же JPoint и Joker. На самом деле, Барух — один из самых популярных наших докладчиков, всё что он делает — попадает напрямую в топ.





Как загубить производительность с помощью неэффективного кода: Enterprise Edition

Доклад про то, как люди просаживают производительность своих программ, и что с этим делать. Несмотря на значок "смузи", этот доклад — про перфоманс, просто докладчик (перфоманс-инженер из Luxoft) его внятно объясняет.





The Eclipse OpenJ9 JVM: a deep dive!

Хардкорный доклад Tobi Ajila о внутренностях OpenJ9 (бывшего IBM J9) и его применимости к разработке облачных приложений от одного из разработчиков J9 и участников проектов Valhalla и Panama.





Дмитрий Жемеров — Идиоматический Kotlin

Начать писать на Kotlin несложно, ведь он похож на Java. В этом докладе рассказывается о возможностях языка и стандартной библиотеки Kotlin, которые позволят выйти на следующий уровень и начать писать по-настоящему компактный и выразительный код. Сочетание этих возможностей позволяет строить на базе Kotlin такие DSL, которые позволят декларативно выражать сложные наборы инструкций. Будут показаны примеры таких языков и то, как можно делать их самим.


Докладчик — Дмитрий Жемеров (yole) из JetBrains, один из создателей Kotlin, руководящий группой, отвечающей за инструменты разработки на нём (плагины к IDE и системы сборки). Кроме того, Дмитрий — один из соавторов книги «Kotlin in Action» («Kotlin в действии»).






13:45





Spring Boot и Xtend: сеанс чёрной магии c разоблачением

Андрей Когунь — эксперт по заказной разработке информационных систем с огромным стажем, работает в российской компании КРОК (известной по информатизации судов Москвы, устойчивой передаче данных в Аэроэкспрессе, работе с банками, заводами, и так далее).


Бытует мнение, что Spring Boot полон странной магии, но, если вы уже успели во всем подробно разобраться, не расстраивайтесь — много интересного и неожиданного можно добавить, если код приложения писать не на Java, а воспользоваться ее «улучшенной» версией.


Язык Xtend примерно так и позиционируется на официальном сайте. Со всем этим хайпом вокруг Котлина мы могли о нём забыть, но нет. Улучшения, прежде всего, позволяют писать меньше кода руками, а значит — делать это быстрее и с меньшим количеством ошибок.


В рамках доклада Андрей проведёт нас по разработке простого приложения на известных технологиях, таких как Spring Boot и Spring Data (Rest), с применением возможностей, которые предоставляет Xtend, в частности Active Annotations. Магии будет предостаточно, но, как мы увидим, всё можно держать под контролем, если выбрать правильный инструмент. Будут разоблачены основные фичи Xtend, базовый набор Active Annotations, как они работают, как и для чего можно написать свой процессор активных аннотаций и как его протестировать.





Developing Apache Camel and Java microservices on Kubernetes

Разработка на Java приводит к конкретной профдеформации. Зачастую люди так привыкают ко всяческим жирным application servers, что потом запуск даже простейшего приложения в докере вызывает когнитивный диссонанс, боль и отторжение. И тут нам спешит на помощью Claus Ibsen из RedHat, один из главных разработчиков небезызвестного Apache Camel.


Рандомный бесполезный факт: я сейчас слил репозиторий Camel из гита:


git clone https://github.com/apache/camel
find . -type f | sed -e 's/.*\.//' | sort | uniq -c | sort -n | grep -Ei '(java|class)$'
18077 java

А в вашем проекте есть 18 тысяч классов?


Ну так вот, Клаус расскажет как поднять с нуля Java-приложение, предназначенное для использования в облаке, и потом запустить под Kubernetes. Половина доклада — живая демонстрация. Вы же помните, что все участники конференции довольно скоро получают видео, и демки можно будет пересмотреть и повторить у себя?





Hardware Transactional Memory

Хардкорный доклад Никиты Коваля (ndkoval) про оптимизации с помощью аппаратной транзакционной памяти в новых процессорах.


Докладчик — инженер-исследователь в области многопоточности, верификации и анализа программ. Фанатично верит в будущее транзакционной памяти и заразил этим ПК.





Тонкости машобуча вместе со Spark ML

Будет очень практичный доклад на тему, что нужно уметь и понимать джависту на типичном BigData + ML проекте:


  • Как выбирать фичи;
  • Как перекодировать фичи;
  • Как скалировать;
  • Как очищать и заполнять пропуски;
  • Как оценивать качество кластеризации и бинарной классификации;
  • Что делать, если классификация внезапно небинарная;
  • Уметь делать кросс-валидацию.

И всё это на Java + Spark! Еще, будет рассказ о подводных камнях использования MLlib, особенностях реализации некоторых популярных алгоритмов, обсуждение open source-конкурентов и интеграции в существующие приложения.


Алексей Зиновьев (zaleslaw) — практикующий тренер в компании EPAM Systems, хорошо разбирающийся в больших данных — особенно в текстовых данных и больших графах. Рассказывает хороший доклад на популярную тему.






15:30





Анализ программ: как понять, что ты хороший программист

После шока, вызванного теоремой Райса, мир стремится обрести почву под ногами и отчаянно придумывает способы пролить хоть небольшой свет на то, что происходит внутри программ. Data race detectors, model-checking, другие методы динамического анализа появляются один за другим. В это время статические чекеры, javac-плагины и другие тулы статического анализа тоже начинают поднимать голову. За горизонтом маячит мираж автоматической верификации. Наш герой пытается сделать поверхностный обзор этих штуковин, старается попробовать их в своей практике и в конце концов приходит к… [чтобы понять это, необходимо прийти на доклад!] Докладчик — Алексей Кудрявцев уже 10 лет занимается программированием IntelliJ IDEA в JetBrains.





Extreme scaling with Alibaba JDK

Хардкорный доклад про внутренности собственного JDK, которого делают в недрах Alibaba: про сборщики мусора, лёгкую многопоточность на корутинах, эффективный мониторинг, и весь связанный с этим ужас, который мы так любим (или нет?). Докладчик — Sanhong Li из Alibaba, ведущий разработчик их JDK.





Погружение в Интернет Вещей с Java 9

Медленно, но верно, Интернет Вещей проникает в жизнь каждого. Java уверенно удерживает позиции не только в качестве технологии бэкенда, но и как платформа для гейтвея. Java 9 в дополнение к модульности принесла целый букет функциональности, бесценной для разработки IoT-решений. В этом докладе обсуждается инструментарий, позволяющий строить компактные приложений для сбора и пре-процессинга потоковых данных на устройствах.


Александр Белокрылов (alexbel) в компании Oracle руководил раньше развитием продукта Java ME Embedded, а позднее одного из компонентов Oracle IoT Cloud Service. В 2017 году вместе с единомышленниками основал компанию BellSoft, которая выпускает бинарный дистрибутив OpenJDK для процессоров ARM: Liberica, разрабатывает решения в области анализа больших данных и IoT.





Building scalable, back pressured services with Akka

Какая же Java-конференция теперь обойдётся без Akka? Асинхронщина и back pressure продолжают тревожить умы людей ничуть не меньше, чем в прошлом году, поэтому мы получим доклад по следующим темам:


  • Прибивать к риквесту или писать асинхронищу;
  • Что такое back pressure и как его делать, вплоть до сетевого уровня;
  • Как сделать это конкретно на Akka HTTP и Akka Streams;
  • Как всё это соотносится с уже существующими фичами типа CompletableFuture и Observable.

Рандомный бесполезный факт: вы уже заметили, что Observable помечен как @Deprecated, начиная с Девятки?


Докладчик — Christopher Batey, Senior Engineer в Lightbend. Lightbend раньше назывался Typesafe, и был основан Мартином Одерски, создателем Scala. Сейчас Lightbend делает саму Scala, Akka, Play Framework, и другие вещи в этой экосистеме. Кристофер там занимается разработкой Akka.






17:00





Refactoring your code to Java 9 modules

Насущный прикладной доклад о том, что предстоит в ближайшее время преодолеть каждому, переходящему на свежие версии Java. Рассказывается о том, как пилить монолит, какие инструменты и паттерны при этом применять. Rabea Gransberger, большую часть времени пишет приложения на Eclipse RCP, и должна знать о подобных рефакторингах непонаслышке, если вы понимаете, о чём я.


Rabea — не только инженер в MEKOS, но и международный опытный докладчик, участник Программного комитета Java One, настоящая звезда.





ReadyNow — an "AOT" with profiling for Java

Хардкорный доклад Дугласа Хокинса про Ahead-of-time компиляцию в Azul Zing от главного разработчика этой функциональности.





Kotlin DSL: Теория и Практика

Написание тестов — не самое приятное занятие. Это долгий процесс, требующий большой концентрации и внимания… Однако, писать тесты всё равно надо. Как известно, с помощью Kotlin можно легко набросать DSL. В докладе рассказывается, как Kotlin DSL заменил билдеры и статические методы, что превратило добавление новых тестов и поддержку старых из рутины в увлекательный процесс.


В докладе разбираются основные инструменты из арсенала разработчика и то, как их можно комбинировать для решения задач тестирования. Докладчик проведёт нас по пути от проектирования Идеального Теста до запуска максимально приближенного к реальности, чистого и понятного кода на Kotlin.


Докладчик — Иван Осипов (из подразделения аутсорсинговых проектов Haulmont). Доклад будет полезен практикующим инженерам — и тем, кто рассматривает Kotlin как язык для комфортного написания компактных тестов, и тем, кто хочет улучшить процесс тестирования в своем проекте.





Хочется странного — web UI на Java в desktop приложении

В описании доклада сказано: "Как показывает опыт ребят из GitHub и Slack, можно и нужно делать классные desktop-приложения на веб-стеке. Но есть одно но — вам нужно писать всё-всё-всё на JavaScript. Стоит ли напоминать, что далеко не все разработчики любят JavaScript? Возвращаясь к Java, мы попробуем подружить её с этими новыми безумными веб-технологиями для настольных систем и посмотрим, для каких задач применим такой подход".


Мне кажется, желание иметь современный десктопный Java UI на веб-технологиях — это не "странно", это мега актуально. Например, те кто использует десктопный GNU/Linux знают, как ужасно там всё выглядит (даже если поставить свежий KDE и Gnome с распоследними темами). Конечно, не у всех есть GNU/Linux, но давайте поделюсь болью. Писать нормальный UI под GNU/Linux очень сложно, Qt и тем более Gtk — это вещи не для всех, даже если забыть необходимость разбираться в C++ и Си. Писать его так, чтобы полученное запустилось на Windows и MacOS — ещё больней и сложней. В результате, существует, огромное количество наколенных поделок с плохо написанным UI, которые как бы и запускаются, но пользоваться ими душа не лежит. Появление Electron дало призрачную надежду улучшить ситуацию, но гораздо лучше было бы писать всё на Java — как минимум, такие приложения смогут не тормозить так ужасно (привет, Atom!). С нетерпением жду этого доклада.


Дколадчик — Юрий Артамонов, занимается архитектурой и фронтендом опенсорснго фреймворка CUBA Platform. У этого фреймворка есть своя IDE, которая оформлена в виде исполнимого файла под Windows/Linux/macOS, но весь интерфейс сделан на веб-технологиях. Это настолько необычно относительно того, что обычно рассказывают на Java-конференциях, что просто должно было попасть в программу.






18:30





Большие данные в современной биологии

День завершается эпическим кейноутом Михаила Гельфанда из «Высшей Школы Экономики». У Михаила огромный список регалий, например, он доктор биологических наук, член Academia Europaea, заместитель директора Института проблем передачи информации им. А.А.Харкевича РАН, и так далее, и тому подобное.


Чем же посвящён кейноут? С развитием высокопроизводительных экспериментальных методов молекулярная биология вступила на путь, по которому уже давно идут астрофизика и физика высоких энергий: она стала наукой, богатой данными. Вместо изучения отдельных генов и белков, теперь можно пытаться исследовать работу клетки в целом.


Однако за все надо платить: с одной стороны, в данных много шума, с другой, вместо конкретных биологических фактов объектом исследования становятся искусственные конструкты и модели; уровень абстракции зачастую превышает привычный и комфортный для биологов.


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






День 2




10:45





Boot yourself, Spring is coming

Это огромный доклад в двух частях, занимающих два слота по часу длиной, разделённых перерывом (не обеденным, так что на перерыве контекст не успеет выветриться из головы).


Много лет назад, Java-программисты пользовались «new» для создания сервисов. Они проделывали огромное количество ручных действий и смешивали конфигурацию с бизнес-логикой. Они даже использовали копипасту. Было написано много строк убогого кода, который временами даже работал.


Потом появился Spring. С ним многое изменилось… Мы получили много «магии» из волшебного цилиндра Spring, код стал более чистым, простым и поддерживаемым.


И вот появился Spring Boot. С одной стороны, он решает тысячи ранее существовавших проблем: конфликты версий, задачи конфигурации, работа с инфраструктурными бинами, проблему настройки окружения, и, конечно же, запуск или деплой приложения, включая сборку jar/war-архивов… С другой стороны, Spring Boot добавил в наш волшебный цилиндр еще больше магии. В результате имеют место быть два сценария:


  • Всё прекрасно работает, хотя никто не знает, как.
  • Ничего не работает, и никто не знает, почему.

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


Доклад ведут два признанных эксперта по Spring — Евгений Борисов (EvgenyBorisov) и Кирилл Толкачёв (tolkkv). Евгений, пройдя путь от простого программиста до архитектора и устав от рутины, ушел в свободные художники, его доклады широко известны (если кто-то ещё не смотрел "Spring-потрошителя", то вот вам часть 1, часть 2). Кирилл разрабатывает различные банковские API в Альфа-Банке, формирует принципы и наборы инструментов для работы с микросервисной архитектурой, и кстати — постоянный резидент подкаста «Разбор Полётов».


Рандомный бесполезный факт. Даже когда Кирилл просто приезжает на конференцию, не как спикер, он продолжает отвечать на вопросы. Каждый раз, когда мы берём интервью у Альфа-Банка, самый простой способ найти ответ на самые сложные вопросы — найти в толпе Кирилла и попросить рассказать о чём угодно. В частности, он спокойно топит не только за Spring, но например, за DevOps, Groovy и Gradle.





«Умный» релиз мультимодульного проекта в один клик

Вы занимаетесь выпуском релизов многомодульных проектов в вашей команде? Делаете по несколько релизов в неделю, а порой и в день? Являетесь поставщиком артефактов для других команд? О, тогда этот доклад для вас! Будут рассмотены задачи, возникающие в процессе выпуска релиза проекта, обозначены возможные проблемы, а также представлен готовый разработанный инструмент для автоматизации данного процесса.


Владислав Гончаров — ведущий IT-инженер в компании Сбербанк-Технологи, занимается разработкой Платформы Поддержки Развития Бизнеса (ППРБ), про которую у нас уже были доклады.





Один раз в год сады цветут: разбор семантики «exactly-once» Apache Kafka

Почти на любом докладе по Кафке так или иначе возникают вопросы про "exactly once"-семантику. Если вы ещё вдруг не знаете, что это такое, то добро пожаловать в наш мир! Интересный факт: понимание того, почему exactly once так важно, помогает легко отличить джуна от синьора. Кроме того, в доклде будет рассказано про влияние этого вопроса на соседние фреймворки — Kafka Streams и Kafka Connect.


У Виктора два доклада на этой конференции. Выше о нём уже написано, но на случай, если вы пропустили — повторю. Виктор является Solution Architect в компании Confluent, которая разрабатывает платформу на базе Apache Kafka. По сути, Виктор даёт информацию "из первых рук", только от него на русском языке можно услышать новейший эксклюзивный материал про внутренние механизмы работы Kafka и связанной экосистемы. Как лидер подкаста «Разбор Полётов», у него есть огромный опыт в объяснении сложных вещей легко, доходчиво и весело. Чуть позже я постараюсь записать и выложить на Хабр новое интервью с ним.





Deep dive into the Eclipse OpenJ9 GC technologies

Хардкорный, доклад Charlie Gracie о сборщиках мусора внутри виртуальной машины Eclipse J9 (бывашая IBM J9). Эксклюзивный для России — раньше такого не было. Докладчик — архитектор этого продукта. Доклад, наиболее близкий к творчеству Алексея Шипилёва, в отсутствии самого Алексея (да простит он мне такую формулировку). Кроме того, подобные доклады продвигают разнообразие в мире виртуальных машин: на одной конференции собираются все звёзды VM-ного мира, и рассказывают свои истории.






12:15





От монолита к микросервисам

Хайп по распиливанию монолитов не утихает. Только что у нас было два доклада по модулям, и вот ещё один — но уже про микросервисы. Николай Арчаков — старший архитектор в Сбертехе. Он расскажет о нелёгком пути, пройденном разработчиками «Кредитной фабрики» Сбербанка от монолитной архитектуры к микросервисной. "Кредитная фабрика" — это система сквозного процесса обработки и принятия решений по кредитным заявкам, тот самый "энтерпрайз"" из палаты мер и весов, однако же они как-то справились.





Linux container performance tools for JVM applications

Хардкорный доклад о профилировании контейнеризированных приложений с использованием perf, async-profiler, BCC, и т.п. Докладчик — CTO компании Sela Group, Microsoft MVP и региональный директор, автор в Pluralsight и O'Reilly, консультант, тренер, и так далее, и тому подобное. Рассказывает лютый хардкор.





Kotlin Coroutines

Хардкорный доклад о корутинах от создателя корутин — Романа Елизарова. Доступно о подходах к асинхронному вообще и программированию, Kotlin в частности. Докладчик — Роман Елизаров (elizarov), разработчик Kotlin, спец по хайлоаду в биржах и банках.






14:00





Designing for modularity with Java modules

В первый день уже был доклад про модули, Rabea Gransberger рассказывала про рефакторинг монолитных приложений. Этот доклад — более архитектурный, рассказывающий о трейд-оффах между преимуществами и недостатками модулей, способах правильной организации архитектуры. Как делать расширяемые сервисы, как это работает с dependency injection, что делать с циклическими и опциональными зависимостями, как динамически загружать модули, и многое другое.


Докладчик — Sander Mak, работает в Luminis Technologies (компания в Нидерландах, занимающаяся облаками и девайсами), занимается разработкой масштабируемых приложений на Java и TypeScript. Написал книгу по теме доклада: "Java 9 Modularity" (O'Reilly).





Как горизонтально масштабировать приложение, написанное на Vert.x с помощью Kubernetes

Надоело отлаживать критическую секцию в сто первый раз? Хочется писать полезный код, а не решать проблему с гонками потоков? Может, стоит попробовать что-то новое? Vert.x совершенно не похож на старый добрый Spring и Java EE. В этом его сила, это таит сложности. Легко написать код, который тяжело поддерживать. С другой стороны, имея опыт, Vert.x превращается в удобный инструмент разработки. А как после этого запускать приложение на Vert.x в промышленной среде?


Про всё это расскажет Антон Ленок. Доклад будет полезен тем, кто хотел бы начать использовать Vert.x, но не знает, с какой стороны подойти. Антон — инженер в Сбербанк-Технологиях, разрабатывает серверную часть для Сбербанк Онлайн и внедряет разные приятные вещи: ELK, Docker, Kubernetes, и т.п.





Как профилировать с точностью до инструкции

Хардкорный доклад Сергея Мельникова о профилировании с использованием perf, Intel Processor Trace, и других низкоуровневых средств. Хардкорный — но при этом сугубо прикладной, как Райффайзен повышает точность профилировки. новое слово в профилировании — впервые рассказан способ, как запрофилировать Java-приложение с точностью до микросекунд. Докладчик — спец по low-latency джавакоду и бывший перфоманс-инженер интеловских компиляторов.





На плечах гигантов: языки, у которых учился Kotlin

Андрей Бреслав (abreslav) возглавляет разработку языка Kotiln в компании JetBrains c 2010 года, занимается как дизайном языка и общим руководством проекта. Учитывая что на доклад в основном пойдут разработчики на Kotlin, вряд ли его нужно представлять. Андрей расскажет о языках, из которых были заимствованы идеи и концепции. В числе прочего, речь пойдет о Java, C#, Scala, Groovy, Python, Gosu и т.д. Будет продемонстрировано, как некоторые из этих идей были интерпретированы особым котлиновским способом. Некоторые языки наоборот, учатся на примере Котлина (Swift, Java, Hack, C#) — про это тоже будет пара слов.






15:45




A crafts man’s guide to designing a clean architecture

В 2018 году микросервисы стали чуть ли не стандартом архитектуры современных приложений. Но также понятно, что всё это поднялось на диком хайпе. Переживут ли микросервисы хайп? Чтобы пережить всё это, Marcus Biel предлагает нам делать хорошую модульную архитектуру, про которую и будет рассказывать в докладе. Опять будут модули из свежих версий Java, будет обсуждение принципов сильного и слабого связывания, паттерн hexagonal architecture, и всё такое прочее.


Докладчик — Marcus Biel, известный Java-евангелист, создатель видеотуториалов и спикер на конференциях, входящий в разные списки лидеров мнений Java-мира, несущий слово Java со своего сайта Clean Code Academy.





Статус проектов OpenJDK: прошлое, настоящее и будущее Java

Это мой доклад, информацию о докладчике можно прочитать в хабропрофиле :-) Кратко подведём итоги прошедшего года (выход Java 9 и Java 10, новая релизная политика) и обсудим основные направления развития OpenJDK: Graal/Truffle/Metropolis, Value Types, Valhalla, Panama, Amber, Loom, Shenandoah. Короче, всё то, про что я пишу посты на Хабре. Если повезёт, будут не только слайды, но и живые демки для неверующих, считающих что "они не видят смысла использовать Graal в повседневной жизни". Доклад будет полезен слушателям, желающим получить общую картину «поля боя» за свежую, современную и быстро развивающуюся Java.





Универсальные профилировщики и где они обитают

Хардкорный доклад Ивана Углянского про написание собственного профайлера для собственной JVM. Докладчик — один из разработчиков Excelsior JET.





Java EE 8 finally final! And now EE4J?

Недавно Оракл удивил всех передачей JavaEE в Eclipse Foundation. Правда, этот проект уже не смог называться JavaEE и был переименован в JakartaEE. Кстати, я (olegchir) даже поучаствовал в конкурсе на новый логотип проекта.


В этом докладе David Delabassee расскажет о новых возможностях Java EE 8 и том, как всё это относится к JakartaEE. Дэвид — известный оракловский Java-евангелист, который участвовал в разработке Java ещё во времена Sun Microsystems.






17:15





Spring Framework 5: feature highlights and hidden gems

Juergen Hoeller, ведущий разработчик Spring Core, о котором мы уже говорили, рассказывает о новых фичах Spring Framework 5. Juergen расскажет о хайповых темах функционального и реактивного программирования в Spring, и коснётся ряда других менее знаменитых, но не менее полезных фичей. Это не просто пересказ ченжлога, с скорей выборка вещей, которые нравятся самому Юргену (читай — с которыми нужно познакомиться в первую очередь). Кроме того, доклад должен дать понимание о том, какие фичи будут вводиться в ближайших релизах (на момент написания этой статьи, в мавене последняя версия была 5.0.4, соответственно Юрген будет говорить о 5.1).





VMStructs: зачем приложению знать о внутренностях JVM

Хардкорный доклад Андрея Паньгина (apangin) о кишках JVM. Докладчик — специалист по Java-хайлоаду в Одноклассниках, ранее работавший в команде HotSpot в Oracle, автор проектов one-nio, async-profiler, а также лидер по ответам в категории #JVM на Stack Overflow.





Escaping Developer Nightmares

Вы когда-нибудь работали на легаси-проекте с тоннами исходного кода, но без единого юнит-теста? Или без continuous delivery? Напрочь отсутствовал статический анализ кода или даже просто code style? А в ответ на жалобы на всё это, вас просили не думать о золочении продукта или просто подождать, слишком много всего надо исправить до этого?


Будут разобраны типичные ошибки и изъяны, которые встречались докладчику во множестве проектов, а также объяснено, почему на эти моменты стоит обращать внимание. Цель доклада — помочь разработчикам таких проектов понять, почему это важно, а также мотивировать вводить не только такие базовые вещи, как стандарт кода, автоматические тесты (на всех уровнях), среда развёртывания, системы автоматической сборки и т.д., но и более продвинутые аспекты, которые так важны во всех проектах разработки.


Будет много жизненных примеров с поля боя.


Докладчик — Рустам Мехмандаров из Computas AS. Computer scientist, лидер JavaZone, лидер и член правления норвежской Java User Group — javaBin, один из основателей и организаторов Arctic IoT Challenge.






18:45





Приключения Сеньора Холмса и Джуниора Ватсона в мире разработки программного обеспечения

Завершающий кейноут Барух Садогурского (jbaruch) и Евгения Борисова (EvgenyBorisov). У обоих спикеров уже были доклады сегодня — Барух весте с Гамовым рассказывал про Apache Kafka и Firehose API, а Евгений вместе с Кириллом Толкачёвым делали огромный доклад про Spring.


Это будет необычный доклад. В нём будут Холмс и Ватсон. Они раскроют несколько загадок, с которыми вы сталкивались, сталкиваетесь или будете сталкиваться при каждодневной разработке. Кишок сборщиков мусора и байткода не будет, зато будут инструменты, библиотеки и фреймворки, которые озадачивают рядовых разработчиков в каждодневной рутине, приводят к простою, профукиванию дедлайнов и затяжным депрессиям. Практически, в этом докладе Шерлок и Ватсон спасают ваш лоб от фейспалмов и граблей, на которые кто-то уже наступал.




Минутка рекламы. Напоминаем, что на JPoint всё ещё возможно зарегистрироваться. Билеты можно взять на официальном сайте конференции. Чтобы оценить качество докладов, можно посмотреть архив видеозаписей на YouTube.

Комментарии (11)


  1. CrazyFizik
    23.03.2018 18:16
    +1

    Существует ещё множество проблем, которые куда важней, чем ускорение приложения на 1%.

    Угу. А на 4000% по скорости и 800% не хотите? }:-)

    Всегда поражала эта святая непосредственность: «ну частота у процессоров сейчас высокая», «памяти много», «ну компилятор умный сам все соптимизирует»…


    1. lany
      23.03.2018 18:37
      +2

      Иногда лучше выкатить приложение в десять раз медленнее, но сегодня, чем заоптимизированное донельзя, но через полгода, когда конкуренты уже займут нишу.


      1. CrazyFizik
        23.03.2018 20:43
        +1

        Иногда лучше выкатить приложение в десять раз медленнее, но сегодня, чем заоптимизированное донельзя, но через полгода, когда конкуренты уже займут нишу.

        Все равно потом придется, ибо как нишу заняли, так и также легко вылетели. Это проканает только если совсем рынок монополизировать лет эдак на 5.


        1. lany
          24.03.2018 04:01
          +2

          Зато потом будут деньги с первых клиентов, на которые можно нанять больше хороших программистов. Вообще оптимизировать надо прибыль, а не скорость программы.


    1. olegchir Автор
      23.03.2018 18:57

      Прохладная история: в одном из соседних хабратопиков обсуждали 5% перфоманса, которые Грааль даёт просто по факту включения двух -XX опций в командной строке при вызове жабы, так там людям лень их включать, пять процентов — недостаточно убедительная цифра чтобы с этим разбираться =)


      1. CrazyFizik
        23.03.2018 21:33
        +2

        так там людям лень их включать

        Может не лень, а они просто некомпетентны в ключах командной строки и ключах компиляции :-)

        Я вот вообще хз че там у Жабы за ключики есть, ибо вижу её только на Пасху :-)
        И естественно не помню всех вкусных ключей gcc, mvsc и icc — ибо один раз набрал при создании проекта и забыл, они у меня в блокнотике записаны :-)


    1. jbaruch
      23.03.2018 19:02
      +1

      Как учит нас кривая имени Ш, нормально делай — нормально будет. Просто хорошо написанное приложение будет достаточно производительным. Красная зона это те самые 1%, и интересны далеко не всем (более того, в мире за пределами перформанс-культа — практически никому).


      1. CrazyFizik
        23.03.2018 21:23
        +1

        Дык в том то и прикол, что его надо нормально написать. А оно так получается, что одного без другого не бывает. Я вот как раз только сегодня наблюдал один коммит после которого появилась утечка памяти в 5 гигов за 1 час, хотя конкретно для этого места на все про все и 100 метров у меня хватало, и это еще в управляемой среде :-)

        По-любом там либо где-то ошибка (судя по всему древняя как гавно мамонта, но проявилась только сейчас), либо калокод.

        А так вот простой пример. Вам надо получить случайную величину распределенную нормально из обычного генератора случайных чисел, у которого распределние равномерное. Ну для этого есть преобразование Бокса-Мюллера:

                static double BoxMuller(this Random rng, double stddev = 1.0, double mean = 0)
                {
                    double u1 = 1.0 - rng.NextDouble();
                    double u2 = 1.0 - rng.NextDouble();
        
                    double randStdNormal =
                        Math.Sqrt(-2.0 * Math.Log(u1)) *
                        Math.Sin(2.0 * Math.PI * u2); 
        
                    double randomn = randStdNormal * stddev + mean;
        
                    return randomn;
                }

        В принципе если эту функцию вызывать раз в 10 лет, то ничего страшного. Но вообще синус фунция тяжелая, ряды Тейлора, все дела, лучше обойтись без неё:
                static double Marsaglia(this Random rng, double stddev = 1.0, double mean = 0.0)
                {
                    double u, v, rSquared, polar, randomn;
                    do
                    {
                        u = 2.0 * rng.NextDouble() - 1.0;
                        v = 2.0 * rng.NextDouble() - 1.0;
                        rSquared = u * u + v * v;
                    }
                    while (rSquared >= 1.0 || rSquared == 0);
        
                    polar = Math.Sqrt(-2.0 * Math.Log(rSquared) / rSquared);
                    randomn = u * polar * stddev + mean;
        
                    return randomn;
                }

        У меня на i7 разница в 8 раз по времени выполнения. Обычно в нормальных библиотеках используется этот вариант, а не первый, но не всегда…

        Я правда заленился — потому что за проход сразу 2 случайных числа получаетсяб которые используются одно за другим:
        
        randomn1 = u * polar * stddev + mean;
        randomn2 = v * polar * stddev + mean;
        

        Опять таки — меньше дергать цикл, и распределение не будет «рванным».

        В том то и прикол, что счет идет не на какие-то проценты, а обычно в разы. Буквально в том году инспектировал и рефакторил весь калокод за всех, средний прирост производительности оказался в среднем в 7-8 раз и я не удивлюсь если у кого были и больше цифры. Правда там совсем все жестко было.


  1. lany
    23.03.2018 18:36
    +1

    Что-то капец какой-то, столько интересных тем я не припомню. В некоторых слотах на три трека разрываться придётся…


    1. olegchir Автор
      23.03.2018 18:58

      Кстати, это уже третья версия программы, в первом приближении приходилось разрываться ещё сильней. А что делать? Как их не перераскидывай, придётся выбирать…


  1. real_ales
    23.03.2018 23:33
    +1

    Это хорошо! Главное чтоб не приходилось коротать время, попивая кофе, ожидая интересного доклада :)