Как уже многие знают, 15 мая сего года на конференции Google I/O была представлена новая среда разработки Android Studio. С помощью этой IDE процесс создания нативных Android-приложений значительно упрощается: теперь при желании родной.apk можно собрать примерно за 15—20 минут, если следовать предложенному официальному руководству.
Глядя на интерфейс Android Studio, несложно угадать, что эта система создана на базе известной платформы IntelliJ IDEA от JetBrains, а именно — выпущенной в 2009 году IntelliJ IDEA Community Edition, то есть версии этой IDE с открытым исходным кодом. В настоящее время доступен лишь сырой тестовый выпуск Android Studio, но в будущем Google планирует использовать данное приложение в качестве первичной среды разработки, которая заменит собой плагин ADT для платформы Eclipse.
Мы решили узнать все новости и детали выхода этого важного для всего Android-сообщества продукта из первоисточника — от Дмитрия Жемерова. Дмитрий известен мне еще по его древнему личному проекту Syndirella (в те времена также все писали RSS-ридеры), но сегодня наше интервью с ним проходит как с CTO JetBrains, непосредственно курирующим взаимодействие с Google.
О новой Android Studio под катом
— Дмитрий, вы присутствовали непосредственно на недавнем Google I/O 2013, когда Google официально анонсировал создание Android Studio, как прошла эта конференция? Каковы ваши личные впечатления и общая атмосфера от этой центральной для Google технической конференции?
— Конференция прошла очень хорошо, разработчики с большим энтузиазмом встретили новость о появлении Android Studio, около нашего стенда почти все время было довольно много народу. Самые интересные анонсы, на мой взгляд, ― это новые возможности Google Search в области понимания контекста запросов и новая версия Google Maps.
Google I/O 2013, слева направо: Дмитрий Жемеров — CTO компании JetBrains, Ксавье Дюкроэ (Xavier Ducrohet) — руководитель разработки инструментария для Android в Google, Тор Норбай (Tor Norbye) — разработчик в команде Android SDK в Google.
— Можно рассказать эту историю с самого начала — как вы узнали об этом решении Google? Связывался ли Google с вами как-то специально, обсуждал ли этот вопрос? Какие были первые мысли и эмоции, когда стало известно об этом решении?
— Google связался с нами еще в прошлом году и сообщил, что они хотели бы обсудить варианты того, как они могут предложить своим разработчикам продукты на базе платформы IntelliJ IDEA. Мы обсуждали разные варианты сотрудничества и, в конце концов, остановились именно на том, который и был реализован, — а именно на некоммерческом партнерстве вокруг open-source проекта IntelliJ IDEA Community Edition.
Дмитрий Жемеров, CTO JetBrains
Мы с самого начала понимали важность этого события для компании и поэтому оказывали Google всяческую поддержку по работе над проектом. В частности, мы оказывали консультации по разработке для платформы IntelliJ IDEA, вносили изменения в платформе, которые были необходимы для оптимальной интеграции Android Studio, и так далее.
— Появление Android Studio можно расценивать так, что в затяжном рыночном противостоянии IntelliJ IDEA и Eclipse (как минимум в качестве Java IDE) Google сделал все-таки выбор в пользу IntelliJ IDEA. Но, с другой стороны, появление Android Studio означает, что теперь Android Studio будет фактически конкурировать со своим материнским продуктом — как минимум с IntelliJ IDEA Community Edition. Как вы видите будущее этого сосуществования, что собираетесь сами делать дальше в области поддержки Android со стороны IntelliJ IDEA, ведь фактически в этой нише «мир теперь станет теснее»?
— Прежде всего, не Google сделал выбор в пользу IntelliJ IDEA, а команда разработки инструментов для Android решила выпускать инструменты не только на базе Eclipse, но и на базе IntelliJ IDEA. Это все равно достаточно важная новость, но при этом нужно понимать, что другие команды внутри Google продолжают работу как над самим Eclipse, так и над плагинами для поддержки различных технологий Google (Dart, App Engine и т. д.) на платформе Eclipse. Кроме того, Eclipse по-прежнему полностью поддерживается как среда разработки для Android.
Поскольку IntelliJ IDEA Community Edition будет продолжать включать в себя ровно ту же функциональность по поддержке разработки для Android, что и Android Studio, никакой конкуренции в данном случае не возникает. Разработчики смогут использовать Android Studio для работы над чисто Android-приложениями и IntelliJ IDEA — для работы над приложениями, которые содержат серверные компоненты или используют какие-либо другие технологии. Поскольку обе IDE используют один и тот же формат проектов, переключаться между ними не составляет никаких проблем.
Со своей стороны мы планируем сосредоточиться на поддержке существующей функциональности для Android-разработчиков и ожидаем, что основная часть новой функциональности будет разрабатываться командой внутри Google.
— Есть ли какая-то информация о том, что Google собирается дальше делать в развитии Android Studio? По вашему мнению, каковы будут приоритеты или стратегические направления развития?
— У нас, конечно, есть инсайдерская информация на эту тему, и именно поэтому я не могу вдаваться в подробности в ответе на этот вопрос. Могу сказать только, что приоритетом на данный момент является доведение той новой функциональности, которая появилась в Android Studio версии 0.1, до полностью стабильного и работоспособного состояния.
— Давайте немного остановимся на платформе Android. У вас есть специализированные продукты, созданные на базе той же IntelliJ IDEA под конкретные популярные языки (PHP, Ruby и так далее). В силу стремительно набирающей популярность Android Studio не пришло ли время для создания своей собственной специализированной JetBrain’s Android Studio? Обсуждали ли вы внутри компании это направление развития?
— Нет, не обсуждали. Мы полностью поддерживаем ту Android Studio, которую разрабатывает Google, и не видим никакого смысла в том, чтобы с ней конкурировать. Кроме того, мы видим много других направлений, в которые нам имеет смысл вкладываться (например, недавно анонсированная поддержка C++), в которых мы сможем выпускать коммерческие продукты, а не бесплатные, как Android Studio.
— Разработчики интересуются: Android Studio основывается только на Idea CE или использует также и текущие идеевские плагины под Android?
— Текущие идеевские плагины под Android входят в состав IntelliJ IDEA Community Edition. Android Studio их использует.
— Я знаю, после выбора Google многие посмотрели на IntelliJ IDEA новыми глазами, хотя некоторые еще колеблются с переходом. Что бы вы могли сказать им о главных векторах и приоритетах развития IntelliJ IDEA? Что вы собираетесь реализовать в ближайшее время?
— Приоритеты ровно те же, что и были, — поддержка новых технологий, улучшение производительности, реализация новых возможностей, увеличивающих продуктивность разработчиков. Как правило, конкретные фичи мы заранее не анонсируем и предпочитаем рассказывать о них, когда они доведены хотя бы до стадии прототипа и мы можем быть уверены, что они достаточно хороши, чтобы попасть в релиз.
— Чисто субъективно: сейчас количество недовольных Eclipse IDE зашкаливает как никогда. Я вижу, что поисковый запрос «eclipse intellij idea comparison» сейчас в самых топах Google Search. Как человек, который видит ситуацию изнутри, можете все-таки сравнить эти два тесно конкурирующих продукта — какие у каждого самые сильные и слабые стороны.
— Eclipse — это в первую очередь платформа и во вторую очередь IDE (причем даже не одна IDE, а довольно большое число различных продуктов, выпускаемых разными компаниями). В качестве платформы Eclipse нет равных. Количество технологий, для которых существует какой-либо инструментарий на базе Eclipse, огромно. С другой стороны, развитие Eclipse как IDE для Java давно уже не является ни для кого приоритетом, и достаточно посмотреть на список новых фич по поддержке Java в любой из последних версий Eclipse, чтобы в этом убедиться. Все те плагины, которые нужно дополнительно установить в Eclipse, чтобы получить набор фич, соответствующий IntelliJ IDEA Ultimate Edition, разрабатываются разными компаниями и не всегда имеют достаточно однородный user experience.
IntelliJ IDEA, с другой стороны, — это продукт, который делается для людей, а не для того, чтобы другие компании строили на нем свои решения. Поэтому мы выстраиваем свои приоритеты на основании нашего понимания сегодняшних потребностей разработчиков и предлагаем им единое интегрированное решение, все фичи которого имеют единый дизайн и хорошо работают вместе друг с другом.
— Поправьте меня, этого нет в Вики, но насколько я знаю, IntelliJ IDEA — это очень ранний форк NetBean, сделанный когда-то давно людьми, создавшими JetBrains. В свете этого, рассмотрев Eclipse, что вы можете сказать плохого и хорошего о сегодняшнем NetBeans? Я вижу, что по своей популярности она уже уступает как Eclipse, так и IntelliJ IDEA. Как вы видите эту IDE в сравнении с IntelliJ IDEA?
— К сожалению, вы все перепутали. IntelliJ IDEA создавалась полностью с нуля и не является форком никакого другого продукта. Люди, создавшие JetBrains, встретились друг с другом в компании TogetherSoft и никогда не работали в группе NetBeans. Про сегодняшний NetBeans я могу сказать еще меньше, чем про сегодняшний Eclipse, примерно по той же причине — мы не следим за тем, что происходит вокруг NetBeans и не видим с его стороны существенной конкуренции.
— Можно ли дать информацию непосредственно с «внутренней кухни», которая часто интересна другим разработчикам: что собой представляет на данный момент IntelliJ IDEA Ultimate Edition? Сколько строк кода написано, каков объем исходников, какие используете вспомогательные инструменты для разработки, сколько человек работает над проектом, какие методологии применяете, какие есть сложности в разработке и как вы их преодолеваете?
— Объем кода (IntelliJ IDEA и все продукты на базе IntelliJ Platform) — 5 с небольшим миллионов строк кода. Из инструментов используем, конечно же, собственные продукты: TeamCity для сборки билдов и запуска тестов, YouTrack для отслеживания багов и фича-реквестов, внутренний самодельный тул для анализа exception stacktraces, другой внутренний самодельный тул для внутрикомандного общения. Помимо этого — Git в качестве системы контроля версий, Confluence для внутренней и частично внешней документации, Crucible для code review.
Про количество человек ответить немного сложнее, потому что многие из разработчиков работают одновременно над базовой платформой и над одним из продуктов, которые на ней строятся. Программистов, которые занимаются в первую очередь IntelliJ IDEA, наверное, около 20 человек.
Никакую готовую методологию разработки мы не используем. Процесс состоит из очень небольшого набора фиксированных компонентов: все баги записываются в трекер; все изменения покрываются тестами, которые запускаются на TeamCity; каждый день команда собирается на standup meeting; каждые 1—2 недели выпускается новый EAP-билд. Недавно к этому добавился code review, хотя пока что каждая команда может самостоятельно выбирать, какие именно изменения подлежат code review.
Сложности связаны в первую очередь с тем, что нас очень мало, а продукт очень большой. Поэтому каждому разработчику приходится отвечать за довольно большую область и не всем фичам получается уделять столько внимания, сколько бы нам хотелось. (Кстати, мы всегда ищем сильных людей в IntelliJ Core Team, так что, если вам интересно — пишите.)
— Каково это вообще, разрабатывать продукт для других программистов, есть ли какая-либо специфика в этом? Наверное, у вас весьма квалифицированные пользователи?
— Пользователи у нас, к сожалению, бывают очень разной квалификации.
Бывают письма типа «у вас прекрасный продукт, мне он ужасно понравился, только объясните, пожалуйста, что он делает». Бывает наоборот — человек пишет: «Эту фичу реализовать несложно, я знаю, я в 1979 году в своем текстовом редакторе такую же сделал».
А вообще, вот этот комикс очень хорошо отражает ситуации, с которыми нам часто приходится сталкиваться:
— Вы разрабатываете IDE сразу для многих популярных языков программирования, и я знаю, что у вас есть собственная внутренняя статистика по их использованию. Отталкиваясь от ваших данных, какие сейчас наблюдаются тренды в популярности языков по всему миру? Популярность и востребованность отдельных языков — излюбленная тема для споров между программистами, можете ли Вы выделить здесь некие закономерности?
— На самом деле использование наших продуктов — не лучший способ оценивать популярность тех или иных языков, потому что каждый продукт существует в рамках своей целевой аудитории, и эти аудитории очень по-разному относятся к идее использования IDE в целом и IDE от JetBrains в частности. Однако в рамках индустрии закономерности вполне хорошо прослеживаются.
Одно направление — это быстрорастущая популярность альтернативных JVM-языков (в первую очередь Scala), которые дают людям большие выразительные возможности по сравнению со старой доброй Java и при этом позволяют продолжать пользоваться прекрасной виртуальной машиной Java и всеми теми библиотеками, которые были для нее разработаны за последние 15 лет.
Другое — это то, что все большее количество программ переезжает на сторону клиента в браузер, и мы можем наблюдать очень быструю эволюцию языков, которые пытаются заменить собой JavaScript и при этом, с одной стороны, предоставить более компактный и выразительный язык (CoffeeScript и все его диалекты), а с другой — лучше поддержать разработку больших и сложных приложений (Dart, TypeScript).
Оба эти направления стремятся покрыть собой наш язык Kotlin, который может компилироваться как в байт-код для JVM, так и в JavaScript-код для работы в браузере. До релиза Kotlin пока еще довольно далеко, но мы надеемся, что и он найдет свою целевую аудиторию.
— А по вашему личному мнению, на что (технологии/языки программирования) сейчас лучше всего ставить начинающим программерам (насколько я понимаю, вы очень тесно связаны с Ruby — будем иметь это в виду при вашей оценке).
— С Ruby я давно уже никак особенно не связан — я раньше руководил разработкой RubyMine, но уже довольно давно передал этот проект другому коллеге. Моим любимым языком (если не говорить о Kotlin) был и остается Python, и именно он сейчас используется во все большем числе проектов по обучению программированию. Это связано в первую очередь с его универсальностью — он очень хорошо подходит и для веб-разработки (Django, App Engine), и для написания десктопных приложений (PyQt, PyGTK, wxWidgets), и для разработки игр (PyGame), и даже отчасти для embedded-разработки (Raspberry Pi).
Послесловие
И уже после завершения этого интервью Дмитрий в качестве беспристрастного эксперта, в противовес отдельно звучащим со стороны публики утверждениям, попросил учесть два следующих существенных момента:
- я не думаю, что IntelliJ IDEA или Android Studio позволяет создать минимальное приложение для Android хоть насколько-то быстрее, чем Eclipse;
- Google публично говорил, что плагин для Eclipse и Android Studio будут существовать параллельно, поэтому утверждать, что Android Studio заменит собой Eclipse, на данный момент некорректно.
От себя я бы хотел добавить, что помимо возможностей присутствующих в IntelliJ IDEA, которые и составили основу-костяк новой Android Studio, в этом новом гугловском продукте также реализовано несколько дополнительных функций. В качестве примера таковых можно привести совершенно новую подсистему сборки, тестирования и развертывания приложений, которая основана на сборочном инструментарии Gradle и поддерживает использование средств непрерывной интеграции. А для ускорения разработки мобильных приложений в Android Studio также представлена коллекция типовых элементов интерфейса и новый визуальный редактор для их компоновки, предоставляющий удобный предпросмотр различных состояний интерфейса приложения.
В целом же, вне всяких сомнений, Android Studio знаменует очень важную веху в развитии Android-платформы, релиз которой планируется в самом конце текущего 2013 года.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.