Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Ушедший 2020 год, как мы все знаем, выдался тихим и спокойным, даже вспомнить нечего. Дом-работа, тихие будни, уютные посиделки — ничего интересного. Разбавить скуку нам помогли онлайн-конференции, и я как джавист поучаствовал в JPoint и Joker.
Ранее уже публиковал свои конспекты некоторых докладов Joker. Однако теперь были открыты все видеозаписи 2020-го, так что любой читатель может лично увидеть доклады, а организаторы позвали меня написать, какие из них привлекли меня больше всего. Дважды меня просить не надо, так что публикую эту статью, в которой перечислю самые интересные для меня доклады. Надеюсь, что она поможет найти полезную информацию и для вас. Ссылки на полные плейлисты конференций — в конце.
Примечание от автора: хотя пост написан по предложению JUG Ru Group, я пишу только о том, что интересно мне самому, и моё мнение может не совпадать с мнением организаторов.
Доклады по теме Performance
Начну я, пожалуй, с доклада Свена Рупперта «Hidden pearls for high-performance-persistence in Java».
Свен отправляется с нами в увлекательный поход по дикому лесу в реальном мире — и по джунглям опенсорсных проектов мира виртуального. За час с небольшим он успевает перечислить несколько интересных библиотек, о которых вы, возможно, ещё и не слышали, но которые помогут вам ускорить и упростить свои проекты.
Среди упомянутых Свеном библиотек прозвучало несколько проектов на OpenHFT от Chronicle Software. К Joker подключился также и Питер Лоури — CEO Chronicle Software, специалист по low latency-системам и человек с самым большим числом ответов про Java и JVM на StackOverflow. Если вы хотите знать, какая чёрная магия поможет вам находить место создания объекта по стрек трейсу, как создавать динамические энумы, как эффективно округлять числа с плавающей запятой (и многое другое!), то обязательно посмотрите его доклад.
Существует закон, по которому любой, кто использовал в одном предложении слова "Java" и "Performance", обязательно должен упомянуть и Алексея Шипилёва.
Не буду нарушать этот закон и я и вспомню интервью с ним на JPoint, где тот делился советами и секретами из своей практики.
Чтобы понимать, как ведёт себя приложение под высокой нагрузкой, стоит разобраться с тем, что же такое Safepoint-ы. Сделать это нам поможет эксперт по JVM, работавший ещё в Sun Microsystems и Oracle над JVM, а теперь — Principal Software Engineer в Одноклассниках, Андрей Паньгин. Его доклад "Safepoint — И пусть весь мир подождёт" можно посмотреть по этой ссылке.
Кто-то может подумать, что код можно оптимизировать, просто переписав проблемные части на нативные ЯП и вызывая эти библиотеки через JNI, однако Иван Углянский предупреждает, об ужасной цене, которую приходится платить любому, кто покидает уютную территорию родной JVM и отправляется в нативный Мордор. Если лень смотреть видео целиком — на Хабре уже публиковали расшифровку (часть 1, часть 2). В конце своего доклада Иван упоминает GraalVM. А вот с GraalVM нам поможет разобраться воркшоп от Томаса Вюртингера, состоящий из двух частей.
Впрочем, иногда для того, чтобы ускорить свой код, не надо делать ничего. Тагир Валеев может очень живо и интересно рассказать о том, какие оптимизации происходят под капотом у JVM между разными версиями джавы и как это может ускорить ваш код. Кстати, на Хабре есть текстовая расшифровка этого доклада.
Обновление версий Java
Проблема обновления версий Джавы была всегда, но особенно остро она встала после восьмой версии. Обновление политики Oracle, развитие опенсорсных альтернатив привело к тому, что большинство компаний просто-напросто осталось сидеть на восьмой версии. Если вы как разработчик хотите убедить команду или менеджеров в том, что пора обновляться (и даже улучшенная производительность не аргумент), то на помощь вам придёт доклад от Триши Джи «Life beyond Java 8». Здесь она подробно объяснит, как же всё-таки работают версии Джавы, какие плюсы принесёт обновление на 11 версию и какие плюсы от обновления на 14-ю.
Kotlin — настоящее и будущее
Любая Java-конференция становится лучше с докладами про Kotlin, и эти конференции не стали исключением. В этом интервью с Романом Елизаровым можно узнать его мнение и планы на будущее Kotlin'а.
Если же вам интересен практический опыт, то стоит обратить внимание на доклад Акифа Абасова, в котором он расскажет, как Kotlin помог при создании такого большого и сложного продукта как Space. Разбирается и Kotlin DSL и то, как переиспользовать код на сервере и на клиентах, и работа с базой данных, и тесты.
Тем временем, Джош Лонг показывает и рассказывает про то, какую поддержку для Котлина добавили в пятой версии Спринга.
Кстати, Spring
Прозвучало много хороших докладов, позволяющих познакомиться с этим фреймворком поближе. Лично меня впечатлил доклад Евгения Борисова Spring Patterns для взрослых, где он на протяжении двух с половиной часов, без запинок, рассказывал приём за приёмом, перечислял интересные трюки, помогающие писать более простой и выразительный код на Спринге. Как я уже и писал, доклад смотрится на одном дыхании, и я рекомендую его всем.
Владимир Плизга может рассказать о том, как устроен "fat" JAR, как можно оптимизировать создание слоёв Docker-образа, какие вообще во всем этом есть тонкости.
Кто-то может сказать, что Спринг пригоден только для крупных легаси-монолитов, а будущее — за микросервисами, но Алексей Нестеров считает, и готов это доказать, что Спринг — отличный фреймворк для написания микросервисов.
Альтернативы Spring — MicroProfile, Heldion, Micronaut
Если аргументы Алексея для вас неубедительны, паттерны Евгения не впечатляют, и вообще душа просит какого-то разнообразия, то возможно вам стоит взглянуть на что-то, что составляет конкуренцию Спрингу. Здесь как нельзя кстати придётся доклад в котором Джейми Коулман затронул целый срез опенсорс-решений и фреймворков. Начиная с того, что такое MicroProfile и JakartaEE, рассказал, для чего подходит Open Liberty, в чём преимущества OpenJ9 и как это всё работает с кубернетесом под OpenShift. Доклад, может, и не вдаётся в детали, но поможет быстро ввести вас в курс дела и понять, что, как и с чем соотносится.
Дмитрий Корнилов представляет сравнительно новый проект Helidon, выходящий в двух версиях и способный служить как микрофреймворк, так и как MicroProfile-based фреймворк.
Сам не проверял, но Грейм Роше утверждает, что Micronaut отлично подходит как для микросервисов, так и для serverless-приложений. Как написан и работает фреймворк, не использующий рефлексию, можно узнать из его доклада.
Тестирование
Напоследок, давайте вспомним и о тестах. Лучше всего начать с воркшопа Алексея Нестерова (часть 1, часть 2).
Алексей объясняет, что о тестах лучше думать заранее, и что TDD — это совсем не страшно. Если в TDD-стиле работать вам ещё не доводилось, или вы так и не смогли понять, где же тут выгода для разработчика, то возможно, именно этот воркшоп сможет вам помочь.
Работа в крупных организациях может стать сущим кошмаром. Никогда не знаешь, когда другая команда опять поломает вам функционал (скорее всего это произойдет в наименее подходящее для это время). На помощь приходят контрактные тесты, представленные Всеволодом Брекеловом. Если хотите узнать, как упростить коммуникацию между командами и избежать конфликтов, то посмотрите его доклад.
Вместо итогов
Ну что, вот такие доклады запомнились мне больше всего — они наиболее близки к моей повседневной работе. Несколько идей, почёрпнутых из этих выступлений, мне даже удалось внедрить у себя на работе, а что-то легло в бэклог и будет ждать своей очереди. Много докладов прошло мимо меня, но это нормально, так как нельзя знать всего и разбираться во всех технологиях сразу. А что было наиболее интересно вам? Какие выступления запомнились, с кем из докладчиков вам захотелось бы познакомиться поближе, какие темы для вас наиболее актуальны?
Как и обещал в начале, вот плейлист Joker 2020, а вот — JPoint 2020.
А у следующего JPoint, который пройдёт в апреле, ещё открыт приём заявок на доклады — так что о чём мы услышим там, зависит в том числе от вас.