Интервью с Барухом Садогурским: идеальный стэк технологий для Enterprise-разработки

69b09a1ab9f54768b47e272b701814ab.pngБарух Садогурский — Developer advocate в компании JFrog, создатель репозитория Artifactory Binary Repository. Лучший докладчик на конференции JavaOne в 2011 г., обладатель Duke Choice Awards в 2013 г.

Интервью проводил Владимир Сонькин, эксперт Luxoft Training в области разработки ПО на Java.

LT: Барух, каким ты видишь стек технологий для Enterprise-проекта сегодня?

БС: В качестве основы проекта — Java, можно Spring взять, который нужен везде, дальше зависит от требований. Если там есть web-интерфейс, то можно посмотреть на различные фреймворки, отталкиваясь от того, будет ли это продукт для внутреннего пользования или внешнего, насколько нужны всякие «свистелки» в пользовательском интерфейсе. Выбор будет зависеть от того, что именно мы делаем, какая у нас бизнес-задача: обработка ли это BigData или работа с файлами, или ещё что-то.
В плане сборки также, Apache Maven — это солидный, надежный выбор, Gradle — это более стильный, молодежный инструмент со своими рисками. Git — как артефакт, CI-сервер — Jenkins. Сегодняшний стек достаточно понятен. И где-то, может быть по краям, попробовать что-то свежее, например, написать тесты на Spok. Он, конечно, не нов, но для Enterprise-разработчиков это достаточно свежий выбор. Однако, так как тесты не идут в продакшн, то в этой области можно что-то пощупать и поэкспериментировать.

LT: А вот если посмотреть на Scala — она в общем, уже зрелый язык. Некоторые небольшие Enterprise-проекты просто из интереса выбирают Scala. Как ты думаешь, в этом есть смысл?

БС: Меня несколько пугает то, что сейчас происходит со Scala, потому что есть тренд ухода от Scala, например компания TypeSafe, которая пыталась зарабатывать деньги на библиотеках, связанных со Scala. Некоторое время назад было объявлено об уходе TypeSafe с сильного акцента на Scala на гораздо больший акцент в Java, потому что большая часть enterprise-разработки на Java, где собственно находятся деньги. Поэтому они наняли много новых людей, которые подтягивают какие-то Java-интерфейсы, которых раньше у них не было, потому что был в основном акцент на Scala.

Мы также видим другие библиотеки, которые были очень ориентированы на Scala. Например, Spark, где мы видим в новом релизе, как Java API подтянуты до уровня Scala, и, похоже на то, что дальше они будут развиваться не хуже API Scala, если даже не лучше.
Я бы сказал, что в глобальной картине мы видим некоторый разворот в сторону Java. И я абсолютно не удивлен этому, потому что Scala как академический язык совершенно прекрасное творение для Enterprise-хардкора, чтобы гнать код в продакшн, но она сложна для разработчиков, которые решают реальные бизнес-проблемы, которым нужен мощный, но, в тоже время, не очень сложный инструмент, у которых в жизни есть вещи важнее, чем разбираться в системе типов Scala.

Именно поэтому я никогда не был большим фанатом Scala, и тенденция ухода от Scala меня не удивляет. Безусловно Scala никуда не денется и продолжит развиваться, но в гораздо более нишевом формате.

LT: То есть Scala убила её чрезмерная сложность?

БС: Не то, что сложность. Я бы сказал — академичность. Мне кажется, с самого начала Scala была не очень хорошим выбором для массовой разработки. И когда Scala называли следующей Java, мне это было достаточно дико слышать, потому что там все очень академично и непросто для такого массового языка, который должен будет прийти на смену Java.

LT: У Kotlin, например, порог вхождения ниже, чем у Scala?

БС: Да, он повыше, чем в Groovy, но намного ниже, чем в Scala. Его очень приятно учить после Java. С Kotlin все по-другому, потому что ребята из JetBrains постарались выбрать те фичи, которые нужны. Посмотрим, как дальше пойдет, потому что принятие в индустрии зависит не только от качества самого языка, но и многих других причин. Например, как ты знаешь, если у создателя языка была борода, то язык будет популярным :).

98f80db5a0a04870a67642b97220f77d.jpg


Создатели С — Кен Томсон и Дэнис Ричи — гениальные парни с гениальными бородами.

LT: Как ты думаешь, рост популярности Java связан с тем, что вышла Java SE 8, в которую было много привнесено хорошего из той же самой Scala?

БС: Безусловно, это сыграло свою роль — как окончание стагнации Java. Это большой плюс. Мы видим революционный релиз Java 8, мы слышим о том, что будет много интересных вещей в Java 9. В общем то, какая-то жизнь в Java опять появилась. Побег от Java в многих компаниях может быть окончен. Можно писать на Java и быть более продуктивным.

LT: А если бы ты сам начинал сейчас Enterpeise-проект, ты бы выбрал Apache Maven в качестве фреймворка для сборки?

БС: Это очень зависит от того, с кем придется работать: чем сильнее команда и чем больше мы полагаемся на то, что люди смогут досконально разобраться в системе сборки — тем больше мы можем уходить от Apache Maven. Но на самом деле реальность другая: обычно разработчикам не до нюансов моих build-скриптов, и в общем то следует иметь простой и надежный сборщик Apache Maven. Поэтому выбор будет зависеть от материалов, с которыми нужно работать, и сроков, будет ли у людей время для того, чтобы вникнуть в тонкости build-скриптов.

LT: Если говорить в таком же разрезе о языках программирования: Java — это стандарт де-факто для Enterprise-разработки. А какие технологии и языки кажутся тебе на сегодняшний день самыми перспективными?

БС: Очень хорошее сравнение, полагаю, что мы можем сравнить Apache Maven с Java, потому что это стандарт де-факто, потому что все знают, потому что достаточно предсказуемо и понятно. Я бы не сказал, что они простые, но можно рассчитывать на то, что люди будут знать про них.

В Gradle же все больше завязано на другие языки программирования, потому что скрипты можно писать на Groovy, а скоро можно будет писать на Kotlin, и это придает некую гибкость в сравнении с Java.
Поэтому если мы говорим об интересных языках, на которые я бы сегодня посмотрел, то Groovy — это прекрасная возможность расширить свой кругозор с небольшими инвестициями, потому что Groovy очень похож на Java. Ну и Kotlin сейчас выглядит очень многообещающе, так как ребята из JetBrains старались собрать все лучшее из других языков. Мы можем увидеть там очень много хорошего из Scala, Groovy и Java. Поэтому нужно за всем этим внимательно следить. Для большого Enterprise-проекта завтра я бы Kotlin не взял, но поиграться, потыкать, разобраться — да.

LT: В сентябре в Люксофте у нас будет твой мастер класс на тему Apache Maven, производительности Java, профайлинга.

БС: Да, мастер-класс будет на тему Apache Maven, а по произодительности Java, профайлингу и дефагингу будет лекция в качестве бонус-трэка.

LT: Расскажи, пожалуйста, почему был выбран Maven при том, что сейчас есть много других популярных сборщиков? Почему стоить прийти на твой мастер-класс?

БС: С Apache Maven все достаточно просто — как обычно у нас бывает в индустрии: у нас есть продвинутые, новаторские, интересные, современные и необычные инструменты, которые не всегда являются самыми популярными, и у нас также есть де-факто стандарты, которые не включают в себя все самое новое и интересное, но являются рабочими лошадками, которые делают то, что нужно. И в системах сборки у нас похожая ситуация: на рынке есть Gradle, который мы все очень любим посмотреть и покопать, который фонтанирует необычными решениями, и есть инструменты, на которые просто можно положиться, которые с нами уже годами и которые мы хорошо знаем. Большие, крупные компании выбирают в качестве рабочих стандартов именно второй вариант — то есть Apache Maven. И тут все логично: он понятный, более контролируемый, проверен годами.

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

LT: А ты будешь рассказывать про какие-то базовые вещи или какие-то тонкости и секреты?

БС: У нас есть достаточно времени, чтобы поговорить обо всем. Мы начнем с базовых вещей, чтобы закрыть все белые пятна, даже у тех, кто уже знаком с Apache Maven. И конечно поговорим о более продвинутых вещах: написание плагинов, профили конфигураций. Поэтому я надеюсь, что интересно будет всем: и тем, кто знаком с Apache Maven, на каком-то базовым уровне и тем, кто с ним никогда не работал.

Мастер-класс Баруха Садогурского пройдет 8 сентября 2016 г. в Москве.

© Habrahabr.ru