Всем привет! Не так давно мы закончили загружать видео прошедшей весной конференции, поэтому настало время поделиться очередным отчётом. В этот раз, помимо уже опробованного формата в 6 часовых сессий и 3-х потоков, площадка позволила добавить ещё один. И мы решили посвятить весь этот поток новому и на тот момент уже окрепшему языку Kotlin. Получилось очень много выступлений, все стоит посмотреть, но в повествовании остановлюсь детально лишь на нескольких.
Как всегда, слова благодарности тем, кто нам помогал — друзьям и компаниям. Друзьям за то, что продолжают приходить и поддерживать нас. А компаниям за то, что доверяют умы своих разработчиков, не боясь получить на следующий день неожиданно большую коммит историю. И, конечно же, напутственные слова на предстоящий день. Главным посылом которых было то, что конференция, безусловно, это труд, большое вложение, но нужно не забывать об удовольствии новых встреч, новых идей и новых целей!
Нам продолжают нравиться кинотеатры в качестве площадок для конференций. Прошлый кинотеатр для нас оказался слишком большим, чтобы смочь арендовать его целиком. Предыдущие отзывы показали, что было бы здорово ограничить площадку от посторонних лиц полностью, поэтому в этот раз мы выбрали немного меньший вариант. Встречайте кинотеатр Silver Screen в Arena City!
Выбрать докладчика для кейноута — задача не из легких. Мало того, что это должна быть яркая, активная личность, мнению которому доверяют, но также и открытая к новой аудитории. Идея пришла почти сразу, и далеко ходить не пришлось. Опираясь на результаты прошлогодней конференции, где борьба за лучшее выступление получилась столь драматичной, мы осознали, что пригласить Баруха будет отличным решением!
Легко ли писать программное обеспечение? А если это программное обеспечение является базовым инструментом в работе пользователя? А что, если пользователи это мы — разработчики? В общем, Модульный софт и менеджеры зависимостей: Добро пожаловать в ад!
В этот раз активностей было не так много. Сказалось совсем малое присутствие спонсоров. Но те, что были, поработали на славу. Приставки, викторины, лотереи и самое главное развлечение — настоящая своя игра.
» No container: a Modern Java Stack with Bootique
Как много из вас действительно пишут программы? Да, именно программы, а не большой развесистый плагин, который запускается потом вашим контейнером? Bootique, как и Spring Boot, так и Dropwizard, пытается решить одну и ту же проблему — готовим проект быстро и запускаем наш «мирный» jar. Но Bootique дает возможность контролировать «начинку» программы изначально за счет того, что использует Google Guice как механизм разбиения на модули и контроля зависимостей. Вы можете использовать уже существующие модули или написать свои. А автоматический загрузчик поможет собрать все нужные зависимости среди уже объявленных Bootique-модулей.
» An Immutable Object Oriented Web Framework
Данное выступление тоже апеллирует к тому, как мы строим программы. Анализируя концепции ООП, Егор совсем недоволен тем, какие идеи вкладывают разработчики, когда занимаются композицией своего приложения. Объект должен восприниматься как сущность, ответственная за свое поведение, которая запрещает любое вмешательство в это поведение во время исполнения. Безусловно, создавая приложение как плагин для контейнера, мы тем самым и снимаем всю ответственность с себя за исполнение написанного. Поэтому Takes предлагает писать веб приложения именно как программы.
» MyBatis, Thanks God not JPA
Здесь все, что вы можете знать о MyBatis — только суровые факты и трезвый взгляд на мир. Безумно простое решение, которое позволяет получить преимущества над голым JDBC, но не страдать от перегруженности JPA подхода. Действительно, когда JPA обещает избавить нас от SQL, он добавляет новых абстракций, но никак не помогает уйти от понимания SQL совсем, конечно, за исключением простых CRUD систем. Поэтому MyBatis для всех любителей прозрачности и простоты. Но как и в любом решении не обходится без подводных камней и темных углов, которых благо не так много и они отлично освещены в этом выступлении.
» Apache Cayenne: Java ORM Alternative
Из названия можно сделать вывод, что Apache Cayenne был создан вопреки существующим решениям. Но это совсем не так. Его история началась в 2001 году. И успешно продолжается в рамках Apache сообщества. Основываясь на концепции «Database First», Cayenne оперирует понятиями моделей и классов. Модель создается на основе существующей схемы в базе. Мы впоследствии можем её править, добавляя, например, новые отношения между объектами, которых нет на уровне таблиц. Следующим этапом будет генерация классов. Мы получаем их двух типов. Есть основные классы, которым можем добавлять новое поведение, и которые остаются неизменным для генератора. И есть суперклассы, которые содержат поведение для управления свойствами объектов и создания запросов. А интуитивный API этих же запросов может дать дополнительный повод задуматься об отказе от условной совместимости, предлагаемой JPA.
» Testing RESTful services: The What, The How and The Automated
Что нужно тестировать в RESTful API? На какой стадии разработки стоит задумываться о будущем тестировании? А что, если совсем забыли о слое изоляции с другими сервисами? Какие инструменты для помощи в тестировании тогда существуют? А какие варианты работы с базой данных во время тестирования? Теперь пришло время запустить наш RESTful сервис. Какие здесь инструменты нам помогают? Конечно же, они будут разными в зависимости от типа архива нашего приложения. Запустили, теперь займемся тестированием наших конечных ресурсов. Начинаем тестирование с того, что проверяем достижим ли ресурс, возвращает ли ожидаемый результат. И заканчиваем проверкой на отсутствие каких-либо ошибок и тем, что на сервере действительно выполнилась нужная логика. А полный сценарий тестирования наших ресурсов будет зависеть от конкретного типа CRUD операций, выполняемых данными ресурсами.
» Advanced Testing Tools
А это выступление расскажет вам немножко о параметризованном unit-тестировании. Здесь рассмотрены наиболее популярные фреймворки такие, как TestNG и JUnit 4. К рассмотрению добавлены расширения, которые привносят более дружелюбный API для JUnit 4. В рамках параметризованного тестирования в выступлении освящены подходы, которые предлагает и новый JUnit 5. Также Tomasz успел поделиться, в каких случаях нам стоит прибегнуть к системному тестированию или, если перефразировать, нефункциональным тестам. И предложил несколько интересных библиотек для classpath мониторинга, для разного типа нагрузочного тестирования и тестирования юзабилити функциональных частей программы.
В этот раз вечеринка прошла в маленьком и уютном пабе. Нам очень не хотелось, чтобы все сидели отдельно со своими компаниями за столами. Их малое присутствие просто вынуждало людей ходить и общаться. Конечно, не обошлось без недовольных. В следующий раз постараемся организовать место побольше, а низкие столы уберем вообще. И это на самом деле сработало, и получилось по-настоящему весёлое и живое общение.
А вот и долгожданный топ 5 докладов конференции. Совсем чуть-чуть и все 5 мест достались бы докладам про Kotlin.
1. Dmitry Jemerov — Caught in the Act: Kotlin Bytecode Generation and Runtime Performance
2. Anton Keks — Kotlin in real projects: Pragmatic opinion on pragmatic language
3. Nicolas Frankel — Improve your tests quality with Mutation Testing
4. Jaroslaw Palka — Social networks and recommendation engines, here comes Neo4j
5. Dmitry Jemerov — Kotlin: Making JVM Development Fun Again
Открытие
Как всегда, слова благодарности тем, кто нам помогал — друзьям и компаниям. Друзьям за то, что продолжают приходить и поддерживать нас. А компаниям за то, что доверяют умы своих разработчиков, не боясь получить на следующий день неожиданно большую коммит историю. И, конечно же, напутственные слова на предстоящий день. Главным посылом которых было то, что конференция, безусловно, это труд, большое вложение, но нужно не забывать об удовольствии новых встреч, новых идей и новых целей!
Место
Нам продолжают нравиться кинотеатры в качестве площадок для конференций. Прошлый кинотеатр для нас оказался слишком большим, чтобы смочь арендовать его целиком. Предыдущие отзывы показали, что было бы здорово ограничить площадку от посторонних лиц полностью, поэтому в этот раз мы выбрали немного меньший вариант. Встречайте кинотеатр Silver Screen в Arena City!
Кейноут
Выбрать докладчика для кейноута — задача не из легких. Мало того, что это должна быть яркая, активная личность, мнению которому доверяют, но также и открытая к новой аудитории. Идея пришла почти сразу, и далеко ходить не пришлось. Опираясь на результаты прошлогодней конференции, где борьба за лучшее выступление получилась столь драматичной, мы осознали, что пригласить Баруха будет отличным решением!
Легко ли писать программное обеспечение? А если это программное обеспечение является базовым инструментом в работе пользователя? А что, если пользователи это мы — разработчики? В общем, Модульный софт и менеджеры зависимостей: Добро пожаловать в ад!
Активности
В этот раз активностей было не так много. Сказалось совсем малое присутствие спонсоров. Но те, что были, поработали на славу. Приставки, викторины, лотереи и самое главное развлечение — настоящая своя игра.
Доклады
» No container: a Modern Java Stack with Bootique
Как много из вас действительно пишут программы? Да, именно программы, а не большой развесистый плагин, который запускается потом вашим контейнером? Bootique, как и Spring Boot, так и Dropwizard, пытается решить одну и ту же проблему — готовим проект быстро и запускаем наш «мирный» jar. Но Bootique дает возможность контролировать «начинку» программы изначально за счет того, что использует Google Guice как механизм разбиения на модули и контроля зависимостей. Вы можете использовать уже существующие модули или написать свои. А автоматический загрузчик поможет собрать все нужные зависимости среди уже объявленных Bootique-модулей.
» An Immutable Object Oriented Web Framework
Данное выступление тоже апеллирует к тому, как мы строим программы. Анализируя концепции ООП, Егор совсем недоволен тем, какие идеи вкладывают разработчики, когда занимаются композицией своего приложения. Объект должен восприниматься как сущность, ответственная за свое поведение, которая запрещает любое вмешательство в это поведение во время исполнения. Безусловно, создавая приложение как плагин для контейнера, мы тем самым и снимаем всю ответственность с себя за исполнение написанного. Поэтому Takes предлагает писать веб приложения именно как программы.
» MyBatis, Thanks God not JPA
Здесь все, что вы можете знать о MyBatis — только суровые факты и трезвый взгляд на мир. Безумно простое решение, которое позволяет получить преимущества над голым JDBC, но не страдать от перегруженности JPA подхода. Действительно, когда JPA обещает избавить нас от SQL, он добавляет новых абстракций, но никак не помогает уйти от понимания SQL совсем, конечно, за исключением простых CRUD систем. Поэтому MyBatis для всех любителей прозрачности и простоты. Но как и в любом решении не обходится без подводных камней и темных углов, которых благо не так много и они отлично освещены в этом выступлении.
» Apache Cayenne: Java ORM Alternative
Из названия можно сделать вывод, что Apache Cayenne был создан вопреки существующим решениям. Но это совсем не так. Его история началась в 2001 году. И успешно продолжается в рамках Apache сообщества. Основываясь на концепции «Database First», Cayenne оперирует понятиями моделей и классов. Модель создается на основе существующей схемы в базе. Мы впоследствии можем её править, добавляя, например, новые отношения между объектами, которых нет на уровне таблиц. Следующим этапом будет генерация классов. Мы получаем их двух типов. Есть основные классы, которым можем добавлять новое поведение, и которые остаются неизменным для генератора. И есть суперклассы, которые содержат поведение для управления свойствами объектов и создания запросов. А интуитивный API этих же запросов может дать дополнительный повод задуматься об отказе от условной совместимости, предлагаемой JPA.
» Testing RESTful services: The What, The How and The Automated
Что нужно тестировать в RESTful API? На какой стадии разработки стоит задумываться о будущем тестировании? А что, если совсем забыли о слое изоляции с другими сервисами? Какие инструменты для помощи в тестировании тогда существуют? А какие варианты работы с базой данных во время тестирования? Теперь пришло время запустить наш RESTful сервис. Какие здесь инструменты нам помогают? Конечно же, они будут разными в зависимости от типа архива нашего приложения. Запустили, теперь займемся тестированием наших конечных ресурсов. Начинаем тестирование с того, что проверяем достижим ли ресурс, возвращает ли ожидаемый результат. И заканчиваем проверкой на отсутствие каких-либо ошибок и тем, что на сервере действительно выполнилась нужная логика. А полный сценарий тестирования наших ресурсов будет зависеть от конкретного типа CRUD операций, выполняемых данными ресурсами.
» Advanced Testing Tools
А это выступление расскажет вам немножко о параметризованном unit-тестировании. Здесь рассмотрены наиболее популярные фреймворки такие, как TestNG и JUnit 4. К рассмотрению добавлены расширения, которые привносят более дружелюбный API для JUnit 4. В рамках параметризованного тестирования в выступлении освящены подходы, которые предлагает и новый JUnit 5. Также Tomasz успел поделиться, в каких случаях нам стоит прибегнуть к системному тестированию или, если перефразировать, нефункциональным тестам. И предложил несколько интересных библиотек для classpath мониторинга, для разного типа нагрузочного тестирования и тестирования юзабилити функциональных частей программы.
Вечеринка
В этот раз вечеринка прошла в маленьком и уютном пабе. Нам очень не хотелось, чтобы все сидели отдельно со своими компаниями за столами. Их малое присутствие просто вынуждало людей ходить и общаться. Конечно, не обошлось без недовольных. В следующий раз постараемся организовать место побольше, а низкие столы уберем вообще. И это на самом деле сработало, и получилось по-настоящему весёлое и живое общение.
Видео
А вот и долгожданный топ 5 докладов конференции. Совсем чуть-чуть и все 5 мест достались бы докладам про Kotlin.
1. Dmitry Jemerov — Caught in the Act: Kotlin Bytecode Generation and Runtime Performance
2. Anton Keks — Kotlin in real projects: Pragmatic opinion on pragmatic language
3. Nicolas Frankel — Improve your tests quality with Mutation Testing
4. Jaroslaw Palka — Social networks and recommendation engines, here comes Neo4j
5. Dmitry Jemerov — Kotlin: Making JVM Development Fun Again
Поделиться с друзьями
UbuRus
Ну что ж, видимо Kotlin окончательно победил в борьбе JVM языков
jbaruch
Толстовато, Руслан.