
Вполне вероятно, что некоторые из ваших настольных приложений были разработаны с использованием Electron, фреймворка, объединяющего Node.js, части Chromium и слой нативного кода. Такие приложения, как Visual Studio Code, Slack, Atom, WhatsApp или даже установщик Microsoft Visual Studio, используют его для сборки для Windows, macOS и Linux. Я работаю с Electron уже много лет, написал краткое руководство по этому поводу, и я очень заинтересован в сообществе.
Всякий раз, когда технология получает какую-либо пользу, значительная группа будет готова осудить этот выбор как ужасный, технологию как фундаментально ошибочную, а решенные проблемы не будут такими сложными, как их представляют сторонники. Электрон не исключение. Причины, которые обычно приводят в качестве аргумента против этого (например, потребление памяти, общая производительность или размер пакета приложений), явно не оставляют след для разработчиков или конечных пользователей.
Комментировать «Ух, Electron» на HackerNews, похоже, не работает, так что давайте посмотрим, что вы могли бы сделать. Давайте посмотрим, почему разработчики выбирают его и как он в настоящее время превосходит другие программные среды для настольных ПК. Давайте посмотрим, как можно победить Electron'а.
Производительность разработчиков имеет значение
Термин «кроссплатформенность» не имеет четкого определения - в Microsoft это обычно означает создание для Windows 10, Xbox и Windows Phone 10, за исключением Windows 7. В мире Apple мы говорим о переносимости кода между iOS, tvOS, watchOS и macOS. Некоторые интерфейсные библиотеки просто означают, что они поддерживают несколько размеров экрана.
Если вы создаете настольные приложения, это означает, что вам нужно привлечь пользователей настольных компьютеров. Чистая правда показывает, что многие пользователи Windows 7 и 10 работают с последними версиями macOS, а некоторые - с различными дистрибутивами Linux. Для большинства разработчиков Electron переносимость кода с мобильными платформами, игровыми консолями или устройствами IoT не является проблемой. Electron позволяет разработчикам ориентироваться на настольные платформы с высокой производительностью и превосходит своих конкурентов по четырем основным направлениям.
Веб-технологии для пользовательских интерфейсов
Ненавижу это, если нужно, но после многих лет итераций и потрясающего количества фреймворков, библиотек и даже языков веб-разработчики наслаждаются множеством удивительных инструментов для работы. Горячая перезагрузка приложения, над которым вы работаете, больше не привлекает внимания. Такой уровень производительности не имеет себе равных.
Нам не нужно просто смотреть на кроссплатформенные технологии, даже одноплатформенные среды в наши дни на годы отстают от сегодняшней веб-разработки. Возможно, вам это удобно, но Xcode годами не улучшал процесс разработки. В мире Windows Microsoft, похоже, полностью сосредоточивает свои усилия на универсальной платформе Windows, которая не может работать в Windows 7. Что касается Linux, у нас нет какого-либо консенсуса. Я видел, как взрослые кричали друг на друга из-за gtk2 vs gtk3.
Включение libchromiumcontent (движка рендеринга Chrome) в Electron позволяет разработчикам создавать пользовательские интерфейсы, которые выглядят, работают и ведут себя одинаково на разных платформах. Поскольку механизм рендеринга включен, разработчики не ограничены тем, что поддерживает IE11 в Windows 7 - при желании можно создать все приложение с помощью Rust / WebAssembly.
Electron предлагает высокую производительность веб-разработки без необходимости поддерживать старые браузеры. Если ваше решение хочет превзойти Electron, оно должно предоставить среду разработчика с такими же уровнями выбора, удобства, производительности и простоты набора инженеров.
Расширяемость и совместимость
Включение Node.js в Electron позволяет разработчикам использовать любой из пакетов в npm, крупнейшем репозитории с открытым исходным кодом, который когда-либо существовал. Что еще более важно, это позволяет разработчикам избегать ограничений JavaScript, когда это необходимо - многие приложения Electron переключаются на C ++ или Objective-C для написания высокопроизводительной логики, вызова скрытых API операционной системы или совместного использования кода с другими средами. Atom недавно перешел на собственный текстовый буфер C ++, Visual Studio Code обнаружил, что оптимизированный JavaScript может быть для них быстрее.
Microsoft часто спрашивает меня, какие API-интерфейсы потребуются решению, чтобы конкурировать с Electron. Вопрос ошибочный: с Electron ничего не нужно знать. Нет ничего запретного, даже самый неизвестный вызов WinAPI или COM. Не всем приложениям Electron необходимо выполнять собственные вызовы (например, собственный отладчик Visual Studio Code), но ни одно из них не ограничивается тем, чтобы никогда их не выполнять.
Строительство, доставка, обновление
Electron был бы намного менее привлекательным, если бы все пользователи всегда использовали последнюю версию своей ОС, последнюю версию современного браузера и, возможно, последнюю версию вашего приложения. Мы не живем в этом мире.
Electron предлагает платформу не только для создания приложения, которое работает без зависимости от сред, в которых не было обновлений более 10 лет, но, что более важно, поддерживает разработчика при выполнении задач по упаковке, доставке и обновлению приложения.
Решения, ориентированные на браузер, такие как PWA, требуют от разработчиков постоянного диалога со своими клиентами о том, чтобы поддерживать их системы в актуальном состоянии. Нативное кроссплатформенное решение, такое как Qt, как правило, считает себя скорее библиотекой, чем платформой, и мало что может предложить, когда дело доходит до создания программного обеспечения с автоматическим обновлением, установщиков и пакетов App Store.
Возможно, вы сочтете доставку и обновление слишком легкими для решения кроссплатформенной разработки. Если вам никогда не приходилось создавать средство автоматического обновления, поверьте, самообновляющееся программное обеспечение - непростая задача. Если вы хотите победить Electron, вам придется придерживаться разработчиков после того, как код будет написан и приложение должно быть установлено на пользовательских машинах.
Легкость доступа и навыки
Взгляд свысока на разработчиков JavaScript кажется быстрым способом для «настоящих разработчиков» сблизиться; многие полагают, что разработчики Electron выбрали Electron, потому что без него они не знали бы, как создавать приложения. Да, Electron упрощает создание настольных приложений. Для кроссплатформенной разработки это, пожалуй, самое доступное решение. Для меня тот факт, что Electron открывает мир настольных приложений для веб-разработчиков, является одной из причин, по которой мне это нравится.
Это правда, что простота доступа означает, что многие приложения Electron были написаны людьми, которые не полностью понимают WinAPI, AppKit или даже то, как писать высокопроизводительный JavaScript. Ожидать, что эти приложения будут написаны изначально для всех платформ, нереально. До Electron таких приложений вообще не существовало.
Хотя Electron позволяет младшим и старшим инженерам работать вместе, это менее важный фактор, чем часто думают. Если другое решение превзойдет Electron по всем дисциплинам, за исключением простоты доступа, компании переключатся. Если вы хотите победить Electron, важно понимать и сочувствовать опытным разработчикам программного обеспечения для настольных ПК, которые выбирают его. Инженеры, стоящие за Visual Studio Code, продолжают создавать впечатляющее программное обеспечение с не менее впечатляющей производительностью. Утверждать, что команда, стоящая за Visual Studio, не смогла найти никого, кто разбирается в нативной разработке для Windows, и была вынуждена использовать Electron для своего установщика из-за отсутствия навыков, - это смешно.
Победа над Электроном
Вы были бы удивлены, сколько людей, глубоко связанных с Electron, были бы взволнованы, если бы ему не было необходимости в его существовании. Путь к устаревшему Electron связан с конкурирующей технологией, которая предлагает более выгодное предложение как для младших, так и для старших инженеров.
Если будущее вашей мечты связано с некросс-платформенными приложениями, попросите Apple позаботиться о macOS и разработке для нее. Призовите Microsoft осознать, что win32 не мертв, как бы они ни пытались его убить.
Electron здесь не для того, чтобы соревноваться ни с кем. Это бесплатное сообщество с открытым исходным кодом, заполняющее пробел. Если вы хотите победить Электрон, вам тоже нужно будет его заполнить; и вам нужно будет работать лучше, чем сегодня делает Electron. Многие из специалистов по сопровождению Electron здесь, чтобы создавать настольные приложения, которые нравятся конечным пользователям. Если вам удастся помочь им с этой сложной задачей, построив лучшую платформу, они будут улыбаться, пожать вам руку и поблагодарить вас.