С 1 июля по 15 августа наш любимый ресурс временно захватили джависты. Развлекались они, а разгребать 46 хардкорных технических текстов нам, читателям Хабра.
Или нет: я (@apoltavcev) попросил участников сезона Java выбрать лучшие статьи. Под катом вас ждут краткие итоги конкурса и посты, которые настоятельно рекомендуются к прочтению.
А если вы пишете не про Java, а на Java — посмотрите вакансии Сбера. Они проспонсировали нашу Java-вечеринку, за что им большое спасибо.
Кто победил
Пост с самым высоким рейтингом написал Олег Чирухин (@olegchir). Больше всех джавистам приглянулся подробный туториал по созданию cloud-native микросервиса на Amazon AWS.
Олег, поздравляю с заслуженной победой! Уже оформляем документы на приз от Сбера: ноутбук Lenovo IdeaPad 5 Pro Gen 6. В анонсе я обещал другую конфигурацию, но она пропала из продажи. У новой два отличия: винда посвежее и обычная DDR4 вместо low power.
От гранта в 30 тысяч рублей Олег отказался и предложил отдать его другому автору: говорит, что ему хватает мотивации, чтобы продолжать писать о Java. Скоро я свяжусь с тем, кто занял второе место.
Что интересного было в сезоне
Раньше мы не делали быстрые конкурсы, поэтому я волновался: не знал, готов ли Хабр к такому. «Технотекст» смотрит в прошлое (как Оскар), а соревнование в формате «пиши здесь и сейчас» требует от авторов серьёзного вовлечения. Так что планку мы себе поставили небольшую: 15 постов-участников.
В начале всё действительно шло со скрипом, но ко второй половине сезона я понял, что зря переживал. Мы получили 46 качественных технических статей, и ещё две не прошли модерацию. Из-за количества заявок даже пришлось продлить сроки голосования.
Качество контента было высоким: я понял это по взлетевшему рейтингу хаба. В конце сезона Java стал самым популярным техническим хабом после «Программирования» и «Информационной безопасности». И, соответственно, самым популярным из узкопрофильных. Рейтинг хаба вырос в четыре (!) раза.
Получается, что благодаря сезону Хабр стал гораздо дружелюбнее к тем, кто пишет и читает про Java. Эксперимент удался: у нас получился формат, который приносит много пользы и площадке, и спонсору. Хабр с помощью сезонов прокачивает узкие направления, пользователи получают много качественного контента без прямой рекламы, а спонсор — попадается на глаза специалистам, которых хочет нанять.
Лучшие статьи сезона по версиям разных участников
Я попросил некоторых авторов сезона выбрать самые интересные статьи — и объяснить, почему они выбрали именно их.
Я постарался прочитать все три десятка статей (на самом деле их было почти пять десятков. — Прим. ред.). Некоторые, каюсь, я листал по диагонали: например, все статьи про разбор монолита на микросервисы. В первую очередь меня интересовали облака, перформанс и клёвые, необычные штуки.
Олег Чирухин
@olegchir— Axiom JDK & Libercat: Developer Advocate
Моя любимая статья, точнее, цикл статей — Дюк, вынеси мусор! Про сборщики мусора написано бесконечное количество информации, и эта безразмерность мешает. Когда к тебе обращаются с просьбой подсказать туториал про GC, сложно указать на что-то одно. Возможно, этот цикл статей станет таким местом. А ещё обычно такие туториалы — нуднейшие из нудных. Текст Андрея нарушает эту традицию: он написан сочным, затейливым и одновременно понятным языком.
На втором месте — It is Wednesday, my java dudes, или насколько сложно сделать свою JVM. Какой программист не хочет написать свою VM? Ну и вот.
Алексей написал целый рассказ, с сюжетом, мемасами, иллюстрациями на кошках. Кошки меня зацепили, я когда-то придумал рисовать стеки в виде коробок с пиццей. Этот парень с кошками хорош. В конце концов, зачем мы тусуемся Хабре? Чтобы прочитать что-то увлекательное и пообщаться в комментариях. Эта статья — пример того, как техническую тему можно подать не хуже, чем фильмы Marvel, и обсудить в комментариях с соответствующим уровнем жара.
На третьем месте — Атака на String.hashCode: прообразы и коллизии. Есть множество интересных вопросов, обдумывать которые нет никаких рациональных предлогов. Как описать цвет слепому человеку? Где находится Hello World в числе π? Что если написать архиватор бесконечного файла для произвольнобитной операционной системы? Почему хеш-функция строки именно такая? И вот ты открываешь Хабр и на тебя смотрит эта статья. Как пирожок в столовой. Ты не знаешь в точности, почему пирожок в столовке на тебя смотрит, но съешь ты его всё равно.
Ещё хочется отметить Холостые циклы в Java и Производительность: нюансы против очевидностей. JDK edition. Две статьи про особенности работы Java, написанные и оформленные на высоком уровне, которые приятно читаются и моментально расширяют сознание.
Прежде всего хочу поблагодарить администрацию Хабра за сезон Java. Для меня это мероприятие послужило стимулом собрать воедино и оформить в виде статей накопившиеся материалы и идеи. А ещё я получил массу новой информации, которая однозначно пригодится в работе!
Иван Вахрушев
@IvanVakhrushev— Java-разработчик, Open Source энтузиаст, руководитель направления разработки финансовых сервисов в Банки.ру
Статический анализатор, который изменит вашу архитектуру — для меня это просто бальзам на душу. Во-первых, я всячески приветствую статический анализ и любые инструменты, повышающие качество кода. Во-вторых, альтернативные подходы к разработке ПО и проектированию кода очень развивают мозги, даже если вы не планируете в ближайшее время внедрять у себя идеи элегантных объектов (EO).
История одного OOM запала мне в душу. Ребята из hh.ru точно знают толк в тюнинге микросервисов под высокую производительность, а ещё используют мой любимый PostgreSQL в связке с JPA.
Обработка исключений в Java в функциональном стиле зацепила не столько предложенным в её рамках решением, сколько холиваром на тему использовать Vavr или нет. Материал будет полезен в связи с ростом популярности реактивного программирования, где активно используется функциональный подход.
Атака на String.hashCode: прообразы и коллизии. Это отличный материал для расширения кругозора и подготовки к сложным техническим собеседованиям.
Перейдём сразу к делу.
Сергей Цыпанов
@tsypanov— старший Java-разработчик
Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana. Понравилось, что статья направлена на конкретную задачу, подобную тем, что решают 9 из 10 разработчиков львиную долю своего времени. Руководство получилось простым и не сухим, только посмотрите: «Я решил использовать Lombok, туториал — не место для демократии» или «В этот момент вы должны понять, что Docker — это хорошо, а если не поняли — закрыть статью, отформатировать свой жёсткий диск и пойти мести крыши». Нотки юмора делают статью приятной для чтения и запоминающейся.
It is Wednesday, my java dudes, или насколько сложно сделать свою JVM. Понравилось препарирование внутренностей виртуальной машины, а также экскурсия в «как оно всё работает на самом деле». Вообще любые статьи про низкоуровневщину полезны для понимания устройства языка, рантайма и общего развития. Отдельно порадовали рисунки с «улица Потоковая» и «площадь Кучевая».
Атака на String.hashCode: прообразы и коллизии. Отличный коктейль из математики, алгоритмов и кодописания. Понравилась краткость и насыщенность изложения. Автор отлично потрудился на стыке разных областей.
Из такого большого числа статей трудно выбрать несколько. Сразу скажу, что я не пытался в объективность и руководствовался субъективными критериями. Больше всего мне понравились статьи, которые подробно рассматривают какую-то небольшую тему, и дополнительный плюс, если статья из «Песочницы». Ну и совсем вкусовщина: я недолюбливаю Spring, плохо знаю его (возможно, эти два факта связаны) и статьи про него не могу оценить по достоинству.
Алексей Гришин
@GRaAL— архитектор и старший разработчик ПО в Actimind
Как я реализовывал switch exhaustiveness checker для Java 8. Помимо решения хорошо описан процесс поиска, встреченные проблемы и подводные камни.
Производительность: нюансы против очевидностей. JDK edition. Автор сделал несколько статей, все из которых мне приглянулись, но я решил выделить эту.
Обработка исключений в Java в функциональном стиле. Небольшая задача, законченное решение. Плюс мне нравится, когда в язык привносится что-то новое, практики из других языков и парадигм.
Атака на String.hashCode: прообразы и коллизии. Небольшая задача, законченное решение, интересное повествование.
Сквозное и интеграционное тестирование просто, как юнит-тесты. Статья хорошо оформлена, подготовлен репозиторий с примером по шагам. Проделан большой труд, что для первой статьи особенно ценно.
Что дальше
А дальше будут сезоны по новым темам. Развивать формат мы будем, постепенно прокачивая узкие направления. Так Хабр будет становиться всё более экспертным и обрастёт новыми темами, которые, возможно, раньше даже не поднимались. По крайней мере часто.