Меня зовут Дима и я разработчик. Живу в Минске, люблю посещать зарубежные конференции. Ну вот устал однажды ездить и решил сходить локально. Но выбора было мало. Поэтому вдвоём со своим верным товарищем решили сделать конференцию самостоятельно.
Назвали JET. Потому что начинается с J, как и Java, а ещё можно сделать слоган "Let's fly to Java world". Ну что же, как это было?
Открытие
Началось все с выступления организаторов, где мы поделились тем, как зарождалась идея конференции. Рассказали о том, как мы прошли путь в 4 месяца подготовки, и что по итогу получилось. А получилось — 3 потока концентрированных знаний, 300 участников и первый кирпичик в фундаменте дома конференции JET.
Место
Нам очень нравится формат некоторых европейских конференций, которые проходят в кинотеатре. Поэтому у нас не оставалось выбора, нужно было найти подходящий. Выбор почти сразу пал Silver Screen, который расположен в самом центре города Минска.
Кейноут
Так как JET организовывался впервые, нам очень хотелось начать с самых глубоких истоков познания.
Поэтому мы пригласили выступить Брюса Эккеля, который, как вы могли видеть летом на баннерах Хабра, звал всех с собой. Брюс дал оценку развитию известных языков программирования и не очень был рад тому, как развивалась сама Java. Но не нужно печалится, это хорошая возможность взглянуть на технологию под критическим углом, чтобы в будущем не допускать подобных ошибок.
Активности
Среди активностей спонсоров конференции самым ярким оказался Java-бар. К сожалению, безалкогольный, но при этом не менее профессиональный. Настоящий бармен готовил коктейли в обмен на заполненную анкету или в обмен на жетон, полученный за правильные ответы на вопросы докладчиков.
А те, кому гранита знаний во время сессий было мало, могли получить его дополнительную порцию, решая задачки. Они были у каждого спонсора, даже мы, организаторы, придумали свои вопросы, ответив на которые, можно было получить пивной билетик на завершающей день вечеринке.
Ну и, конечно, не могли мы не пригласить ребят из минского музея ретрокомпьютеров рассказать и повеселить участников своей коллекцией. Здесь были и всем знакомые игровые приставки, а также можно было увидеть и первые портативные компьютеры.
Доклады
Идея разделения потоков конференции возникла само собой. Мои интересы последних лет послужили причиной, чтобы акцентироваться именно на этих темах. Очень было приятно видеть открытость докладчиков, которые помогли эту идею реализовать. Спасибо им!
Первый поток назывался JVM Inside.
Rafael Winterhalter на простых примерах рассказал о том, как происходит компиляция в java bytecode. Углубляясь все дальше, мы уже могли создавать целые пакеты классов, используя только bytecode инструкции. Своим вторым докладом Rafael поведал о том, какие популярные оптимизации происходят во время JIT компиляции. И что иногда грамотно написанный код может в разы уменьшить накладные расходы на его исполнение.
Volker Simonis говорил о final модификаторе, и почему он не является final-ом на самом деле. Показал, как ограничения, накладываемые компилятором, можно легко обойти различными «небезопасными» хаками, и к чему это приводит в реальном коде. Ну и в конце можно узнать, что делать, чтобы final стал по-настоящему final.
Алексей Фёдоров выступил со своим нашумевшим докладом о внутреннем устройстве неблокирующих примитивов, имеющихся на вооружении у jdk, начиная с 5-ой версии. Также продемонстрировал то, как реализуются эти примитивы, как можно их использовать и почему иногда их лучше не использовать.
Андрей Паньгин с большим энтузиазмом рассказал, почему unsafe настолько популярный инструмент для разработки низкоуровневых частей программного обеспечения. Но не был счастлив от того, что все же его решились выпилить, и что, к сожалению, взамен мы имеем очень слабый API на текущем этапе развития платформы.
Второй поток — Solutions Tour.
Леша Зиновьев переработал свой доклад годичной давности, где он объясняет место Java-разработчика в проектах, связанных с анализом и созданием данных. Какие типовые задачи встречаются на подобных проектах, какие есть алгоритмы для решения этих задач. И подчеркнул, что разнообразие мощных и эффективных инструментов в современном мире JVM дает преимущество получить такую задачу на реализацию именно Java-программисту.
Женя Борисов не удивлял, а продолжил покорять. Поучаствовав в настолько динамичном докладе про spring фреймворк, навряд ли останутся люди, непонимающие как он работает. Вы узнаете о жизненном цикле spring-а, какие стандартные bean post proccesor-ы существуют и как создать свои собственные. Как написать улучшенную версию аннотации Deprecated, используя bean factory post proccesor. И какие контексты spring-а вообще существуют. Вторым докладом Женя вместе с Барухом Садогурским закрепили свой успех и знания аудитории серией из spring puzzlers.
Николай Алименков знает не понаслышке, что тесты важны. Но тесты для кода, непосредственно отвечающего за работу с данным, важны вдвойне. Хотите знать как их писать и какие инструменты нам в этом помогают? Почти часовой мастер-класс от Николая на очень ярком и понятном примере.
Владимир Ляшкевич взял на рассмотрение задачу реализации распределенного ограничителя запросов. Он показал множество различных подходов, которые на первый взгляд могут показаться правильными, но имеют в себе скрытые для новичка подводные камни. А во второй части своего выступления он рассказал, какие практики накопления знаний можно использовать, чтобы избегать ситуаций создания собственных велосипедов.
Ну а третий поток Functional Boost.
Барух Садогурский не без помощи, конечно же, Жени Борисова выступил со своими уже классическими задачками в стиле puzzlers. Да, именно, про странности или, правильнее сказать, особенности Groovy, понимая которые, можно заметно упростить себе жизнь. И также у Баруха было соло-выступление. Хотите писать AST трансформации? Для Groovy это делать, ну, просто большое удовольствие. Главное не переборщить.
Роман Гребенников несколько был смущен производительностью языка Scala. И решил собственноручно в этом разобраться. А результаты этого исследования можно увидеть в его выступлении. Кто же не наслышан об удобных конструкциях языка. Но с комфортом приходят и другие расходы. Возможно, стоит взглянуть на bytecode, чтобы понять причины этих проблем производительности? Но Роман сразу ныряет на дно и не боится продемонстрировать публике несколько непривычный Аssembly x86_64.
Adam Warski решился на практике сравнить возможности потоковой обработки данных с помощью Akka- и Scalaz- streams. Он начал с небольшого введения в понятия, которые эти фреймворки используют для работы с данными. А после показал как уже обрабатывать эти данные одним и параллельными потоками. И, естественно, используя каждый раз Akka и Scalaz реализации.
Александр Слесаренко уже давно заметил имеющиеся проблемы производительности языка Scala. Но и понимает важность того, что читаемость кода превыше всего. Поэтому, выделив несколько классов часто встречаемых задач в различных предметных областях, был создан фреймворк под названием Scalan. Он позволяет делать компиляцию высокоуровневого кода в более производительные/низкоуровневые фрагменты, и которые могу быть написаны даже на отличном языке программирования.
Вечеринка
Ну и как же без вечерники! Это отличная возможность того, чтобы обсудить впечатления после столь насыщенного дня, продолжить общение с докладчиками и выпить добытое в интеллектуальной схватке пиво.
Видео
Ну и напоследок топ 5 докладов конференции.
Барух Садогурский и Женя Борисов — The Epic Groovy Puzzlers. Directors' Cut
Женя Борисов и Барух Садогурский — Spring Puzzlers. The Greatest Hits
Барух Садогурский — Groovy AST Transformations
Женя Борисов — Spring The Ripper
Rafael Winterhalter — Java byte code in practice
Автор: dzmitryvasin