Технические подробности об Andromeda — новой универсальной ОС от Google

andromeda

Andromeda — это новая ОС от Google, которая предположительно станет заменой для Android и Chrome OS. Автор блога Tech Specs изучил имеющуюся информацию о проекте, в том числе открытый исходный код, и поделился наблюдениями в своей заметке. Предлагаем вашему вниманию адаптированный перевод материала.

Обновление На следующий день после публикации нашей статьи автор оригинальной заметки сообщил, что с ним связались сотрудники Google и подтвердили его догадки.

Что представляет из себя Fuchsia

Google совершенно не пытается скрыть какие-либо детали о проекте: в текущей стадии он называется Fuchsia, и мы уже подробно рассказывали о нем в одной из наших предыдущих статей, скомпилировав и запустив его исходный код. Ядро операционной системы (вернее, микроядро) называется Magenta. Да, Andromeda не использует ядро Linux. Одна из основных черт новой ОС — масштабируемость.

Ошибочно предполагать, что Fuchsia — это проект, в рамках которого Chrome OS вливается в Android. Правильнее считать, что Android и Chrome OS сливаются вместе и становятся частью Fuchsia. Кстати, процесс слияния Android и Chrome OS уже идет некоторое время: команды Chrome и Android работали вместе для того, чтобы добавить специальную систему обновлений в Android Nougat — это позволило производить обновления платформы для проведения A/B тестирования.

Зачем Google нужна Andromeda

Те, кто интересуются технологиями Google, уже длительное время задавались вопросом: а будут ли Chrome OS и Android объединены в один продукт? Подобное пожелание высказывал и Сундар Пичаи, генеральный директор Google. Если не брать в расчет некоторые «недоделки» и полумеры, то это произошло с появлением Andromeda. Новая платформа поможет Google объединить в единое целое огромный набор имеющихся сервисов.

На данный момент Google поддерживаются три платформы: веб, Android и iOS — именно в таком порядке. Поддержка Windows же, пожалуй, ограничивается браузером Chrome. Flutter же — фреймворк от Google, созданный для разработки графических приложений в стиле MaterialDesign под различные платформы (о нем будет подробнее рассказано ниже) — один из примеров того, как эта стратегия реализуется. Теперь Google сможет объединить усилия нескольких различных команд разработчиков, не распыляясь на разработку различных версий приложений под разные платформы.

Также автор заметки отмечает, что готов был бы назвать около сотни причин, почему Android пора заменить, и выделяет он среди них две: необходимость полностью переписать графический конвейер и решить проблемы с обновлением Android, связанные с использованием монолитного ядра Linux. Также соблазнительна возможность перенести большую базу приложений Android на десктопы, реализовав их нативную поддержку.

Кроме прочего, подобный шаг уже сделали и Microsoft, объединив под Windows 10 как десктопную, так и мобильную версию системы, и Apple, создав полноценную экосистему из iOS и macOS.

Поддержка языков и технологий в Andromeda

Архитектуры

Andromeda имеет поддержку огромного количества платформ, включая мини-ПК Intel NUC. Поддерживаемые мобильные архитектуры: ARM, x86 и MIPS. Среди десктопных платформ и ноутбуков предпочтение отдано платформам Intel.

Fuchsia доступна для компиляторов как семейства LLVM, так и GCC.

Языки программирования

Andromeda богата и поддержкой языков программирования, причем каждый из них, вероятнее всего, предназначен для решения определенного класса задач:

  • C / C++ — для нативной разработки;
  • Go — для сетевого взаимодействия;
  • Java — для Android-приложений;
  • Python — в качестве скриптового языка;
  • Rust — для написания частей ядра;
  • Dart (аналог JS от Google) — для объединения всего этого в пользовательском интерфейсе.

Android

Автор заметки считает, что поддержка Android будет реализована в новой ОС в виде отдельного API как legacy-часть. Это совсем не значит, что разработка Android мгновенно будет прекращена: все-таки огромное количество устройств продолжат использовать именно эту систему. И даже если Andromeda в итоге будет позиционироваться как полноценная замена Android, разработка приложений под последнюю все равно будет оставаться необходимостью для мобильных разработчиков еще длительное время.

Среда выполнения и интерфейс

Однако что касается API для пользовательского интерфейса, то Google делает выбор не в пользу Android, а в пользу Mojo, которая пришла из Chromium. С помощью нее ранее удалось перенести поддержку Android-приложений в Chrome OS, а теперь Mojo станет еще более важным элементом в вопросе разработки ПО для Andromeda.

UI-фреймворком для ОС стал Flutter — продукт от Google, предназначенный для разработки приложений на Dart. В нем содержится множество реализованных элементов управления в стиле Material Design — графической концепции, разработанной Google. Таким образом фреймворк переносит уже знакомые пользователям элементы управления в декстопную ОС. Flutter позволит рендерить графический интерфейс с частотой до 120 кадров в секунду. За «физическую» сторону вопроса будет отвечать рендерер Escher, предоставляющий возможность реализовать объёмные мягкие тени, рассеивание света и эффект линзы.

Текущая среда выполнения приложений в Andromeda — Modular. Основная идея этой технологии заключается в том, что приложения могут взаимодействовать в рамках разделяемых ресурсов и общего контекста, а не обращаясь самостоятельно к API других приложений. Это достигается за счет использования возможностей межпроцессного взаимодействия (IPC), реализованного в Mojo в виде именованных каналов (pipe’ов) и разделяемых буферов.

В качестве протокола для описания интерфейсов используется специальный язык описания интерфейсов Fuchsia (Fuchsia Interface Description Language, FIDL). На данный момент поддержка реализована для C / C++, Dart и Go.

Что осталось неясно

Ближе к концу своего материала, автор оригинальной заметки задает несколько вопросов, которые мы хотим предложить вам к размышлению:

  • Что станет с проектом Android и огромной экосистемой его партнеров?
  • Будет ли платформа предустанавливаться только на ноутбуки после релиза?
  • В какой среде разработки можно будет разрабатывать под Andromeda? Android Studio?
  • Будет ли возможность использовать другие языки, нежели Dart, для программирования графического интерфейса?
  • Действительно ли Google планирует отказаться от поддержки со стороны огромного Linux-сообщества? Или большая часть кода Linux останется в основе проекта?

Делитесь своими мнениями и ожиданиями от Andromeda OS в комментариях. Если вы хотите подробнее изучить вопрос создания операционных системы, загляните в наше руководство по самостоятельному написанию ядра в архитектуре x86.

Антон Машков, глав.вред Tproger