Продолжаем вспоминать интервью с JPoint 2017 и смотреть, что изменилось с тех пор. В этот раз публикуем разговор с Андреем Бреславом, возглавляющим Kotlin.
За прошедший год в Android-разработке язык рванул ракетой, а конференция KotlinConf собрала в Сан-Франциско больше тысячи участников. Но ноябрьский релиз Kotlin 1.2 с поддержкой мультиплатформенных проектов показывает, что команда не почивает на лаврах: там хотят, чтобы на Kotlin писали не только мобильные приложения, а вообще всё. Kotlin/Native тем временем тоже развивается, неделю назад дойдя до версии 0.6. Так что в этом году есть за чем следить.
А Андрей в этом году снова выступит на JPoint. В предыдущем интервью Барух Садогурский заметил «в Kotlin взяли много хорошего из Groovy, C#, Scala», а новый доклад Андрея как раз об этом и будет: из каких языков заимствовали концепции для Kotlin, как их при этом видоизменяли, и как теперь уже сам Kotlin влияет на другие языки. На JPoint 2018 выступят и другие ключевые участники команды Kotlin: будут доклады Дмитрия Жемерова и Романа Елизарова.
— Ваш доклад — про будущее Kotlin. Сейчас самая последняя новость, связанная с этим — это появление технического превью Kotlin/Native. Можете в двух словах рассказать об этом?
— Главный сюжет в том, что мы учимся компилировать Kotlin для нативных платформ без использования виртуальной машины. Мы используем LLVM, чтобы компилироваться непосредственно в машинные инструкции, и можем запускаться как stand-alone executable.
— Мы недавно публиковали на Хабре интервью с вами и Антоном Кексом, где вы сказали, что до технического превью Kotlin Native дело дойдёт «в ближайший год». И когда оно появилось вскоре после интервью, это было внезапно!
— Тут две вещи. Во-первых, есть хорошая примета — никогда никому не обещать никаких дат. Во-вторых, разработка Kotlin/Native действительно идёт довольно бодро, наши лучшие ожидания оправдываются. Некоторые сюрпризы возникают, это приятно.
— На JPoint мы все любим виртуальные машины. В чем большая цель создания Kotlin/Native?
— Есть много юзкейсов, в которых использовать виртуальные машины так или иначе нельзя или неудобно. Если вы хотите iPhone, у вас нет динамической кодогенерации, вам VM не очень годится. Если вы хотите какие-то embedded-системы, то там просто мало места, и VM влезает плохо. Если вы хотите интеропиться с нативными функциями, то вам лучше без виртуальной машины, потому что тогда интероп будет быстрее, ну и так далее.
— Возвращаясь к вопросу про iPhone. Сейчас Kotlin/Native поддерживает 4 платформы, одна из них — iOS, и при этом в официальном посте на картинке виден iPhone. Означает ли это, что он приоритетен?
— Я не буду ничего обещать, но это, безусловно, одна из очень интересных платформ. Мы сейчас обсуждаем, в какую сторону пойти. Сейчас у нас есть некоторое ядро технологий, и мы дальше можем заниматься продуктизацией на одной из нескольких платформ. Посмотрим, какую выберем. Но iPhone — это очень привлекательная платформа.
— Интересно, что как раз в том же недавнем интервью вы ещё говорили о том, что конкурировать со Swift на iOS бессмысленно. Ясно, что за Swift останется большинство, но, грубо говоря, вас привлекает второе место на платформе iOS, и вам хочется биться за него?
— Не совсем. Мы вообще не очень-то конкуренты Swift. Что мы можем сделать? Мы можем дать возможность переиспользовать код между Android и iOS, сделать кроссплатформенную разработку. Swift в этом смысле нам не конкурент, потому что Swift очень ограничен в своих возможностях на Android, а мы и на Android, и на iOS можем быть полноценным языком, что достаточно важно.
— Прошу прощения за ужасные слова, которые сейчас прозвучат: получается, React Native в каком-то смысле тоже ваш конкурент?
— React Native действительно делает то же самое, так что он в каком-то смысле наш конкурент. Но React Native — это JavaScript, со всеми вытекающими (это интерпретатор и так далее). А так, да, мы делаем — точнее, можем делать — что-то очень похожее. Xamarin — то же самое. Есть ещё RoboVM, который «полу-есть», Multi-OS Engine, J2ObjC-транслятор от Google, есть разные технологии, которые что-то такое позволяют. Мы находимся где-то в этом сегменте, посмотрим, что будет.
— Правильно ли я понимаю, что у вас в этом сегменте хороший козырь в том, что у вас уже очень сильные позиции на Android, и поэтому будет интерес у людей, которые на Android уже что-то делают?
— И это тоже. Там есть разные преимущества. Одно из них — у нас не JavaScript, у нас типизированный язык, у нас не Java (это важно!). Другое преимущество состоит в том, что у нас действительно сильные позиции на Android, и мы, скажем так, ближе к нативности на Android, чем C#. Xamarin — это такая интересная история, он не родной никому. Kotlin в этом плане более родной Android, и поскольку он близко к Swift, iOS-разработчику его проще освоить.
— Этой осенью в Сан-Франциско JetBrains впервые проведёт KotlinConf. У вас возникло ощущение, что вот сейчас Kotlin уже дорос до собственной конференции?
— Прошло чуть больше года после первого релиза, и мы решили, что, наверное, мы сможем собрать конференцию. Похоже, дорос в том смысле, что мы соберём аудиторию, что людям это полезно и интересно. Наверное, полгода назад это было ещё рановато делать. А сейчас можно сказать, что дорос.
— На KotlinConf у вас будет кейноут, и если уже понятно, каким он будет, можете рассказать? Это будет отчасти похоже на доклад здесь, на JPoint?
— Я не берусь прогнозировать, я ещё не готовил этот кейноут, всё-таки ещё довольно много времени. Что случится на рынке за это время, я не знаю. Можно много чего представить, что может произойти.
— Более общий вопрос по Kotlin. Мы обсудили мобилки. А если говорить про десктоп или серверную часть, какая у Kotlin стоит на данный момент задача в глобальном смысле?
— У нас есть такая большая светлая идея о том, что мы хотим сделать хороший инструмент для программистов — это самое главное. Чем больше людей мы сделаем максимально счастливыми, тем лучше. По факту это означает, что мы хотим, чтобы те, кто какими-то другими технологиями не удовлетворён, удовлетворился Kotlin, потому что он им чем-то поможет. Что касается adoption и того, в какие стороны мы движемся: у нас примерно пополам пользовательская база на сервере и на Android сейчас, то есть две основные JVM-платформы, server side на разных фреймворках и Android, там примерно пополам пользователей. Поэтому, естественно, мы эти платформы очень любим и максимально поддерживаем, но собираемся расширяться в другие области. Пойдём в клиентское программирование с JavaScript, в мобильные клиенты, в какие-то другие нативные вещи.
— Было много активностей, связанных с выходом Kotlin 1.1. Был онлайновый Kotlin event, там была куча вопросов. Все ивенты прошли, весь фидбэк собран — дал ли он что-то значительное в направлении развития в будущем?
— Ничего глобально неожиданного мы не услышали. Мы постоянно в контакте с комьюнити, ивент — это такой способ отпраздновать, привлечь какое-то дополнительное внимание, чтобы люди друг друга увидели в каких-то локальных мероприятиях. Каких-то неожиданных вопросов или мнений мы не услышали, всё достаточно предсказуемо. Но мы ещё проводили опрос о том, какие фичи кто больше всего хочет, но это ещё не закончилось. Мы пока опросили юзер-группы, на днях запостили общий опрос, так что голосуйте, рассказывайте, что вам нравится. Сразу сделать не обещаю, но будем учитывать.
— Более общий вопрос: вы выступаете на JPoint, пойдете ли здесь какие-то доклады послушать?
— У меня с докладами сложно, потому что у меня очень мало времени и мало сил, поэтому сегодня я, скорее всего, никого больше не послушаю и просто уеду домой. Тем не менее, здесь очень весело. Каждый раз, как я сюда прихожу, ощущения всё лучше и лучше, это приятно.
— Поскольку вы на наших мероприятиях не первый год, заметно ли по вопросам после докладов, что среди слушающих всё больше тех, кто активно пользуется Kotlin? Меняются ли вопросы от общего интереса к конкретным деталям?
— Да, в прошлом году была просто куча конкретных вопросов, когда люди приходят уже просто со своим юзкейсом в голове, и даже надо долго расспрашивать человека, чтобы узнать, что он от меня хочет. И это здорово, потому что таких людей было полно в дискуссионной зоне, это очень приятно. При этом общие вопросы всё ещё остаются, но явно всё больше людей говорят что-то вроде: «А вот это не работает!» или «Вот это неудобно!», то есть они пользовались, у них наболело, они хотят об этом поговорить. Это здорово!
- Андрей БреславВозглавляет разработку языка Kotlin в компании JetBrains. Раньше преподавал в университете и в старшей школе; теперь вместо этого выступает на различных конференциях, рассказывая о своём проекте и о фундаментальных принципах, лежащих в основе профессии разработчика ПО. @abreslav