Поймать перо jar-птицы: новый сезон Java на Хабре

Спят усталые игрушки, книжки спят… А вот Хабр не дремлет. Уже целый год прошёл с прошлого сезона Java. Стал ли за это время язык менее актуальным? Его всё ещё путают с JavaScript? Помогла ли Java 20 поставить новый рекорд длины Hello World? Чтобы ответить на эти и другие вопросы, мы запускаем новый сезон Java.

Программирование — это про целесообразность. Для многих простых задач достаточно подружиться со слонёнком. Однако когда хочешь сотворить настоящее, крупномасштабное чудо вроде национальной платёжной системы, без jar-птицы никак не обойтись — можете поверить опыту НСПК, партнёра этого сезона.

С 31 июля по 19 сентября мы будем говорить о чудесах больших и поменьше, о кровавых ритуалах энтерпрайза и защитных пентаклях тестовых окружений. Лучший кудесник, избранный народным голосованием, получит в награду Apple MacBook Air 13, а его имя навсегда останется на страницах нашей сказки.

Java и энтерпрайз

Наверное, Java на сегодня — самый «энтерпрайзный» из языков программирования. Обычно именно на нём реализуются большие сложные системы с высокими требованиями к надёжности. Многим нравится гибкость Python и простота JavaScript, другие хотят хайповать на Go или писать высоколобый функциональный код на Scala — и всё же кровавый энтерпрайз держится на (или за?) Java. Почему всё обстоит именно так?

460bc12fab9b4169a426cc2461980be4.jpgАнтон Будкевич

глава разработки IT-решений Мир Plat.Form aka @Wanderrer

Вопрос многогранный. Можно выделить несколько ключевых моментов:
1. Высокая производительность Java-платформы в принципе. Если сравнивать с другими распространёнными языками, такими как Python или PHP, — они проигрывают в производительности в десятки-сотни раз.
2. Большое сообщество. Многие вопросы, которые встают перед разработчиком, уже так или иначе в Java-сообществе кто-то решал.
3. Большая экосистема. Есть не только ответы на вопросы, как разработать что-то, но и готовые реализации. Экосистема библиотек, пакетов для реализации бизнес-задач.
4. Кадры. Разработчиков-джавистов объективно больше, чем программистов на других языках. На двух гошников, например, приходится 10 джавистов.

919ec207ab6eb1552e86a289fd41945e.jpgСергей Петрелевич

ведущий разработчик Мир Plat.Form aka @Petrelevich

Один из ключевых факторов — обратная совместимость. Ни один из популярных языков и платформ не обладает таким свойством. Java появилась в 90-е годы, и до сих пор код, написанный в 90-е годы, функционирует. В банке, где я работал лет 6 назад, была система, написанная на первой версии Java, — и она до сих пор в деле. Причём это крупная система, тысячи серверов по всему миру, за 20 лет разработки над ней успели потрудиться порядка 100 человек со всех континентов.

В других языках бывает, что выходит третья версия — и объявляют, что вторая была сделана по ошибке, и теперь всё будет не так. Для системы, где срок разработки измеряется десятками лет, это была бы катастрофа. А когда есть гарантированная обратная совместимость, можно смело вкладывать сотни миллионов долларов в разработку, и система будет работать годами, столько, сколько надо.

Java и разработчик

Джависты любят делать всё обстоятельно. Говорят, если за столом попросить джависта передать хлеб — он начнёт строить хлебозавод. Врут, конечно, — он просто загрузит его с Maven Central. Пока другие холиварят по поводу того, чей язык лучше, джависты тихо и скромно пилят мегапроекты на своём любимом языке.

d15ec21a7f809051f8c2626d733037f4.jpgСергей Петрелевич

ведущий разработчик Мир Plat.Form aka @Petrelevich

В Java ничего не устаревает — просто появляются новые инструменты, позволяющие решать новые задачи или старые, но по-другому.

Допустим, раньше все приложения были монолитными. Их масштабирование достигалось за счёт многопоточности и увеличения количества потоков. С появлением «двенадцати факторов» от Heroku и моды на микросервисную архитектуру масштабирование стало делаться не за счёт потоков, а за счёт процессов. Мы запускаем кучу реплик нашего процесса и достигаем тех же целей. Появился Kubernetes, появилась новая идеология, под это подстраивается в том числе и Java. Например, все мы ждём virtual threads в Java 21. Но старые подходы при этом никто не отменял, и у них по-прежнему есть своя область применимости.

Конечно, есть определённая инерционность, запаздывание. Вспомнить хотя бы, когда в других языках появились лямбды и когда они приехали в Java. Но это плата за обратную совместимость, ничего не поделаешь.

402239054a31bc0b6ad460ad65f013f3.jpgАнтон Будкевич

глава разработки IT-решений Мир Plat.Form aka @Wanderrer

На любом языке можно решить любую задачу, хоть на Visual Basic. Вопрос не столько в скорости обработки транзакций, сколько в стоимости разработки. В изменчивости бизнес-функциональности. Мы много дорабатываем наши системы, и скорость, надёжность, стоимость этих доработок для нас критичны.

Важен не столько сам язык, сколько его экосистема, инструменты, комьюнити. Больше разработчиков на языке — больше комьюнити — больше мощных инструментов. Например, в Go нет аналога Spring. И, допустим, веб-клиент на Go написать посложнее, потребуется больше кода. Грубо говоря, у нас это одна строчка, а в Go понадобилось бы пять.

Впрочем, джависты сами про себя всё знают. А читателю, возможно, интересно, насколько сложно стать Java-разработчиком в 2023 году.

e648e888ae1e0d2ee9d9760c9e2af2ef.jpgАлександр Ланцов

ведущий разработчик Мир Plat.Form

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

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

Java — как швейцарский нож: на ней можно разрабатывать Android, десктопные приложения, веб, программировать микроконтроллеры и т. п. Однако основная фишка джавы — это универсальность («написал однажды — работает везде») и возможность работы в многопоточной среде. Большая доля рынка джавы — это крупные предприятия, высоконагруженный бизнес-бэкенд, куча интеграций.

Важное качество для wannabe-джависта — усидчивость и стремление к результату в долгосрочной перспективе. Быстренько наклепать сайтик можно на питоне. То же самое можно сделать и на джаве, — работать это скорее всего будет даже лучше, но время, затраченное на разработку, будет больше.

Вторым качеством можно выделить стремление к совершенству. Джава очень многогранна, и код, написанный на ней, можно улучшать бесконечно. Написать простой алгоритм, потом можно переписать его на более низком уровне, потом прикрутить асинхронность и многопоточность — можно даже JVM затюнить.

Java и евангелист

Некоторые люди не просто используют Java, но и хотят обратить в свою веру других. А тех, кто уже обращён, — мотивировать к росту в этой области. Победитель прошлого сезона Java расскажет, почему в 2023 году этот язык особенно хорош (и в каких областях — не очень).

c5a78a28dd5247ef084fc45d1cd16c36.jpgОлег Чирухин

победитель прошлого сезона Java aka @olegchir

У Java поменялся релизный цикл, и теперь новые версии выходят дважды в год. Это позволило выпустить множество новой функциональности, в том числе той, которую ждали годами. Например, в Java 21 у нас появятся Virtal Threads, которые позволят улучшить эффективность использования оборудования. Сегодня Java — это крутой, современный, динамично развивающийся язык, выгодным преимуществом которого является то, что он не оторвался от своих изначальных ценностей: совместимости между версиями, фокусом на производительность и безопасность, использование строго типизированного языка с поддержкой IDE и так далее. Безусловно, далеко не всем системам нужна безопасность или необходимо думать о производительности. Например, у браузерного фронтенда совершенно другие ценности. Но если вы совпадаете по ценностям с Java, то это идеальный выбор.

Есть ряд областей, в которых Java уже нормально можно использовать, но уровень применения не очень большой. Например, инфраструктура для создания умных домов, в том же Eclipse IOT есть много готовых наработок. На Java можно работать с машинным обучением и большими данными: в качестве примера — Apache Spark MLlib, предназначенный для сборки пайплайнов машинного обучения с использованием навыков работы со Spark, которые уже имеются у data-инженеров.

Если говорить о потерянных областях, то это мобильная разработка. На Android стали повсеместно использовать Kotlin. Строго говоря, на Android никогда и не было «настоящей» Java — там всегда был компилятор, который собирал код на Java во что-то своё, что живёт по своим правилам и необязательно регулируется спецификацией языка и виртуальной машины, как в OpenJDK. Но теперь это вообще свой отдельный мир. В какой-то другой параллельной реальности, Android бы перешёл с «не совсем настоящей Java» на «полностью настоящую Java», но в нашей версии мультивселенной этого не случилось. У нас случился Kotlin. Может быть, и к лучшему.

Когда Java только появлялась, была большая ставка на использование в браузере через апплеты. Сейчас же, многие Java-разработчики никогда и не видели никаких апплетов. Современный браузерный фронтенд делается на чем-то с условным названием JavaScript (в реальности это множество технологий — от TypeScript с миллионом фреймворков на клиенте, до Node.js и Deno на бэкенде). Всё это заворачивается в «рамочки» от Electron или его мобильных аналогов и получаются «почти нативные» приложения.

Java-интерфейсы всё ещё используются там, где они жизненно необходимы, где важна максимальная переносимость и сопровождение на протяжении десятилетий — IDE, торговые терминалы и так далее. Swing, SWT, JavaFX никуда не делись и продолжают развиваться в рамках крупных и общественно-важных продуктов. Тем не менее в ближайшие пять лет мы вряд ли увидим Java в роли основной технологии разработки веб-сайтов. Возможно, с развитием Web Assembly что-то изменится, но пока воз и ныне там.

Java и авторы Хабра

Наверное, некоторые читатели уже задумались — о чём бы таком написать на этот сезон, чтобы собрать много лайков и забрать суперприз… Вряд ли это хорошая постановка вопроса. Писать надо о том, что хорошо знаешь, что интересно самому, — тогда выйдет хорошая статья. Зайдёт ли она аудитории лучше, чем все остальные, — на то уже воля случая. Впрочем, некоторыми идеями наши спикеры всё же хотят поделиться.

8a846fb464a7406c49a40001926b2c67.jpgАнтон Будкевич

глава разработки IT-решений Мир Plat.Form aka @Wanderrer

Мне было бы интересно почитать о том, как Java со своими фреймворками взаимодействует с другими компонентами. Kafka, Kubernetes, Cassandra, ClickHouse, PostgreSQL — мне интересно было бы почитать, как всё это работает как единое целое, и как бизнес-логика абстрагирована от инфраструктурных компонентов. Как можно наладить взаимодействие одним импортом правильной библиотеки — или, наоборот, как кто-нибудь написал свой велосипед для работы с Kafka, который лучше, чем что-то.

Правила сезона

  • Сезон Java будет проходить с 31 июля по 15 сентября. 

  • К участию допускаются статьи, опубликованные с 24 июля в хабе Java, у которых выставлен тег «Сезон Java one love». 

  • Побеждает статья с наивысшим рейтингом. Голосование идёт в течении всего сезона, результаты фиксируются по его завершению.

  • Допускается несколько статей от одного автора.

  • Участвовать могут даже авторы из «Песочницы».

Требования к статьям

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

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

  • Статьи должны быть полезны Java-разработчику, помогать ему в решении конкретных задач или давать ему более глубокое понимание фундаментальных особенностей языка. Абстрактно-философские рассуждения в сезоне участвовать не будут.

  • Реклама и антиреклама запрещены. Уместные упоминания продуктов и брендов допустимы, но если статья целиком посвящена пиару — она не будет допущена к участию в конкурсе.

Автору самой заплюсованной статьи достанется Apple MacBook Air 13, а также грант в 30 000 ₽ на подготовку следующего крутого поста.

Статьи-участники

Здесь будет список статей, участвующих в этом сезоне. Если вы не видите здесь ни одной статьи — возможно, это повод её написать?

© Habrahabr.ru