До свидания, Electron. Здравствуйте, настольные PWA

https://medium.com/@novicki_david/goodbye-electron-hello-desktop-pwas-f316b8f39882
  • Перевод
Автор материала, перевод которого мы сегодня публикуем, говорит, что он, возможно, слишком торопится, но то, о чём он хочет рассказать, представляет собой, по меньшей мере, весьма интересную новость. Речь идёт о настольных прогрессивных веб-приложениях, которые вполне могут значительно потеснить позиции приложений, основанных на Electron.

image

Новшества Chrome v70


Свежая версия Chrome (v70) поддерживает настольные прогрессивные веб-приложения (Desktop Progressive Web Apps, PWA) на платформах Linux и Windows.


Поддержка настольных PWA в Chrome

Если взглянуть на список поддерживаемых систем, тут же становится заметным отсутствие в нём MacOS. Однако это так лишь до тех пор, пока не выйдет Chrome v72.


Поддержка настольных PWA в MacOS

Важно отметить, что хотя эта возможность в MacOS по умолчанию не включена, её можно активировать с помощью соответствующего флага. Для этого надо открыть Chrome, перейти по адресу chrome://flags и найти там этот флаг. Можно и перейти к флагу напрямую, воспользовавшись ссылкой chrome://flags/#enable-desktop-pwas.

Что такое прогрессивные веб-приложения?


В особые подробности, касающиеся PWA, мы тут вдаваться не будем. Вот раздел документации Google, в котором можно почитать о них. Для того чтобы своими глазами увидеть PWA и попробовать их в деле, откройте Chrome для Android или Safari в iOS (тут, правда, поддерживаются не все возможности PWA) и посмотрите эти примеры. А вот — выступление на эту тему с Google I/O '18.

Что такое Electron?


Electron — это платформа, которая позволяет разработчикам создавать кросс-платформенные настольные приложения с использованием JavaScript, HTML и CSS. Здесь же используются некоторые замечательные JavaScript-библиотеки и фреймворки. Это облегчает веб-программистам вхождение в разработку настольных приложений. Приложения, основанные на Electron, в последние годы приобрели огромную популярность. В рамках таких проектов, как Slack, VS Code, Atom, Discord, вложены немалые силы в разработку приложений с использованием Electron. Если вам эти проекты не знакомы, то вам, определённо, стоит взглянуть на соответствующие приложения и сервисы. Традиционные настольные приложения нередко казались какими-то неуклюжими, элементы их интерфейсов выглядели как нечто устаревшее. Electron, определённо, принёс красоту и изящество в мир настольных приложений.

При чём тут PWA?


Хотя Electron-приложения — это растущее и развивающееся явление, и их реализация близка к реализации веб-приложений, у них, всё же, есть некоторые минусы. Во-первых, такие приложения используют собственные экземпляры браузера Chromium. Многие знают о том, сколько оперативной памяти нужно для работы Chrome. Теперь, для того, чтобы оценить ситуацию, возникающую в системе при одновременном запуске нескольких Electron-приложений, надо взять их количество и умножить на этот объём памяти. Если интересно — откройте несколько Electron-приложений и посмотрите на то, сколько памяти они потребляют.

Чрезмерное использование памяти — это само по себе не очень хорошо, а сюда ещё надо добавить то, что многие Electron-приложения специфическим образом взаимодействуют с Node.js, не обязательно делая это так же, как соответствующие веб-приложения.

Использование Electron добавляет сложностей, связанных с поддержкой старых версий программ и с наладкой процесса обновления приложений.

Теперь поговорим о настольных PWA. Представьте себе приложения, которые выглядят как те, что написаны на Electron, с которыми так же удобно работать, но при этом устанавливать их проще простого, обновляются они тоже без проблем, в ходе передачи клиенту материалов единственного веб-приложения. Возникает такое ощущение, что Chrome задаёт стандарт для подобного сценария поведения в настольных PWA. Когда пользователь, работающий в Chrome, посещает некую веб-страницу, и представленное ей приложение соответствует этому набору критериев, у разработчика приложения появляется возможность предложить пользователю установить приложение на его компьютер. Приглашение выглядит примерно так, как показано ниже.


Приглашение на установку PWA

Разработчик может показать это приглашение только после того, как браузер вызовет событие beforeinstallprompt объекта window. После установки приложения на рабочем столе появляется соответствующий значок.


Значок для запуска PWA

После запуска подобного приложения оно открывается в браузерном окне, не оснащённом обычными элементами управления. Такое приложение воспринимается как настоящее настольное приложение.


Запущенное PWA

Пример PWA


Вот пример настольного PWA, скриншоты которого были использованы выше в виде иллюстраций. Вот его репозиторий на GitHub. Для того чтобы установить это приложение, нужно включить соответствующий флаг в Chrome и провести на сайте хотя бы 30 секунд.

Как уже было сказано, веб-приложение, для того, чтобы считаться настольным PWA, должно соответствовать определённому набору требований. Если вы хотите создать и испытать собственное настольное PWA, можете взять за основу этот репозиторий и учесть требования. Если сделать краткую сводку по ним, то получится следующее:

  • Приложение должно обслуживаться по HTTPS.
  • У него должен быть установленный сервис-воркер с как минимум одним обработчиком fetch.
  • Оно должно содержать правильно оформленный файл manifest.json.
  • Его страницы должны быть спроектированы с использованием методики отзывчивого дизайна.

Дополнительные примеры


Если вы работаете на MacOS, то PWA могут счесть, что установить их вы не сможете, и не покажут вам приглашение для их установки. Если включить соответствующие флаги и повозиться с консолью разработчика, можно добиться от PWA того, что они приглашение на установку выведут. Вот некоторые из существующих PWA, которые удалось установить на Mac.

▍Starbucks


Компания Starbucks вложила немало сил в разработку отличного PWA. Их настольное приложение получилось прямо-таки впечатляющим.


PWA Starbucks

▍Google Maps


Это — просто замечательное приложение. Оно делает своё дело и не особенно сильно нагружает систему, отличаясь быстрой работой и отзывчивым дизайном. Для установки этого приложения нужно исхитриться и загрузить мобильный сайт Google Maps.


PWA Google Maps

▍Twitter


Компания Twitter постаралась при разработке мобильного PWA, а настольную версию можно считать достойным дополнением к мобильному приложению.


PWA Twitter

Итоги


Не смотря на то, что вокруг настольных PWA поднято много шума, нужно отдавать себе отчёт в том, что эта технология пока находится на стадии становления. В частности, можно отметить следующие направления развития настольных PWA:

  • Глубокие ссылки: ссылки, открываемые из Chrome, вызывают установленное приложение.
  • Уведомления на значках приложений: показ уведомлений на значках запуска настольных приложений, так же, как это делается на значках мобильных приложений.
  • Поддержка горячих клавиш: возможность прослушивания событий клавиатуры для использования внутри приложений горячих клавиш.

После того, как технологии разработки настольных PWA достаточно разовьются, эти приложения станут серьёзными конкурентами сегодняшних проектов, основанных на Electron.

Уважаемые читатели! Планируете ли вы разрабатывать настольные PWA?

RUVDS.com

942,00

RUVDS – хостинг VDS/VPS серверов

Поделиться публикацией
Комментарии 140
    +17
    Традиционные настольные приложения нередко казались какими-то неуклюжими, элементы их интерфейсов выглядели как нечто устаревшее. Electron, определённо, принёс красоту и изящество в мир настольных приложений.

    Как-то не чувствую принесённой красоты и изящества.

    С точки зрения пользователя этих несчастных веб-страничка-на-десктопе-приложений PWA вместо Electron выглядит как смена шила на мыло. Ладно хоть если памяти жрать меньше будет, хотя я не особо стеснён в этом.
      +4
      Ладно хоть если памяти жрать меньше будет, хотя я не особо стеснён в этом.

      Я кстати не понял, почему он должен меньше памяти жрать. Ведь у Chrome и так каждая вкладка изолирована в отдельном процессе. Или нет?

        +2
        Renderer-процесс у каждой вкладки свой, а browser-процесс один на всех.
        Плюс даже сами renderer-процессы шарят между собой сегменты исполняемого кода (секцию .text).
      +3
      А ещё из электрона можно использовать например сишные библиотеки, насколько я понимаю PWA в такое не может.
        +2
        через WebAssembly может?
          0

          Мне кажется там (в webassmbly) sandbox, который эту возможность должен очень сильно ограничивать.


          Each WebAssembly module executes within a sandboxed environment separated from the host runtime using fault isolation techniques

          https://webassembly.org/docs/security/


          Или я что-то не так понял?

            0

            Многие сишные либы можно скомпилить в wasm модули.

        +24
        Какой же фигней готов заниматься народ лишь бы не писать нативно.
          –2
          Плата за кроссплатформенность… Либо джава либо электрон, других путей вроде пока нет :(
            –1
            дотнет ещё нет?
              0
              не для десктоп приложений
                0
                Avalonia работает в этом направлении.
              +3
              Был еще flash. Но его старательно закапывают.
              Да и python непрохо работает на разных платформах.
                0
                Sciter активно движется к кроссплатформенности
                0

                Когда я узнал, что ассемблерные инструкции интерпретируются процессором слово нативность утратило для мня смысл.

                  0
                  Это сильно дешевле.
                    0
                    Ну это не такая уж и фигня. Есть несколько позитивных моментах в вебе на десктопе, например, такое приложение всегда будет максимально актуальной версии без всяких вот этих автоапдейтеров, которые порой еще и в фоне живут. Плюс веб интерфейсы все таки намного более впереди нативных в плане возможности реализации всяких дизайнерских плюшек. Я бы с радостью поимел Gmail и Google Docs в виде PWA.
                      0
                      ну… поидее они уже…
                    +7
                    Хотя Electron-приложения — это растущее и развивающееся явление, и их реализация близка к реализации веб-приложений, у них, всё же, есть некоторые минусы. Во-первых, такие приложения используют собственные экземпляры браузера Chromium. Многие знают о том, сколько оперативной памяти нужно для работы Chrome. Теперь, для того, чтобы оценить ситуацию, возникающую в системе при одновременном запуске нескольких Electron-приложений, надо взять их количество и умножить на этот объём памяти. Если интересно — откройте несколько Electron-приложений и посмотрите на то, сколько памяти они потребляют.

                    В этой фразе можно заменить Electron на PWA и она будет истиной. Так чем тогда лучше?
                      +5

                      не будет. PWA используют оригинальный хром.
                      К электрону же основная претензия, что он тянет за собой действительно отдельный инстанс хромиума, поставь 10 приложений — уйдет несколько гб жесткого диска. Запусти несколько электрон-приложений — запустится несколько разных хромиумов.


                      PWA используют тот браузер, который его поставил, а что у chrome, что у ff есть куча процессов, не связанных напрямую с вкладками.


                      Для сравнения можно попробовать запустить по вкладке в нескольких хромах (chromium, chrome, chrome canary, opera, vivaldi) и запустить 5 вкладок в одном хроме и сравнить потребление ресурсов. Второй случай будет ощутимо дешевле по оверхеду.

                        +1
                        PWA используют тот браузер, который его поставил

                        хм… Т.е. если юзер удалит браузер, то поломаются все PWA через него установленные?
                          +4
                          Да. Это по сути просто ссылка на веб-страницу. В Windows помню раньше можно было ярлык на рабочий стол создать. Тут разница только в том, что он в отдельном окне открывается. Кроме local storage ничего на машине пользователя оно не хранит
                          +3

                          т.е. если электрон будет распррстраняться в виде dllки, то претензии к нему иссякнут?

                            +2
                            настала видимо необходимость вшить движок хрома в ядра операционных систем (нет)
                              0
                              Вуаля! ChromeOS!
                              И уже давно в каждой системе есть свой движок для html. В винде ie довольно глубоко сидит. В линуксах почти везде есть вебкит, завёрнутый в gtk или Qt.
                                0
                                ну… например… в гноме планируется добавить встроенному вебдвижку поддержку PWA и после этого добавить их в каталог приложений…
                          0
                          А есть какая-то защита от фишинга?
                          Ведь в браузере можно посмотреть на адресную строку, а в PWA — запустилось и запустилось. И если втихую подменить PWA на такое же, но фишинговое, как заметить подмену?
                            +6

                            А если втихую подменить нативное приложение на такое же, но фишинговое, тогда как?

                              0
                              А я не говорил, что у нативных приложений так нельзя делать. Я лишь спросил, есть ли защита у PWA.
                                0

                                Ну придется как-то научить антивирусы это делать.

                                  0
                                  при запуске приожения в заголовке адрес показывается и есть менюшка где его всегда можно посмотреть
                                    +1
                                    Втихую сложнее, это надо скачать, запустить, и как правило пользователь смотрит что за exe-шник запускает.
                                    Другое дело PWA, зашел на сайт с одной различающейся буквой в адресе — и попал.
                                  +1

                                  Так pwa не сам же открывается, нужно сначала нажать кнопку установить. И есть целый ряд условий которым сайт должен соответствовать, чтобы предложение об установке pwa отобразилось

                                    +1

                                    Яндекс.Бар тоже никогда сам не ставился. /сарказм

                                  +1
                                  На сколько я понял, для dekstop PWA действуют те же лимиты на размер хранимых данных на диске, что и для мобилок.
                                    0

                                    А зачем? Если на мобилках PWA компенсирует крайне неудобные закладки и вкладки в мобильных браузерах и проблемы со скоростью мобильного интернета, то на десктопе смысла в этом немного.

                                      +2
                                      кроссплатформенные приклады на js. единый ui с минимумом затрат на поддержку.
                                        +3

                                        А зачем, если можно просто открыть вкладку?

                                          +1
                                          не все, что пишется на электроне = морды вебсервисов :)
                                            0

                                            Хм, например?

                                              +2

                                              atom

                                                +1
                                                VSCode, GitKraken
                                                  +2
                                                  В случае с VSCode и PWA, подозреваю, не все так просто будет. Особенно если учесть, что нередко модули расширения к нему заточены на запуск и взаимодействие с нативными бинарниками (например gdb, clang, и т.д.)
                                                    +2
                                                    Если всё отличие PWA от веб-страницы в наличии ярлыка на рабочем столе и отсутствии адресной строки, то это полная шляпа. Переносить закладки из браузера на рабочий стол мне не нужно. Если у PWA будет больше возможностей, например запускать произвольный код на C, тогда это совсем другой разговор, но я сомневаюсь, что такое разрешат.
                                                      0
                                                      Вроде бы основные фичи pwa — кэширование неизменяемого контента и пуши.
                                                        +1

                                                        Но обычные сайты тоже это умеют

                                                          0
                                                          да, но только PWA сайты через сервис воркер, который необходим для PWA
                                                            +1

                                                            А сайт во вкладке через сервис воркер, нет?

                                                    0

                                                    Nosqlbooster

                                                    +2

                                                    Ок, положим.
                                                    Но с PWA-то речь как раз о мордах веб-сервисов.

                                                      0
                                                      Slack
                                                  +2
                                                  Для того чтобы компенсировать крайне неудобные закладки и вкладки в десктопных браузерах. У меня вечно десятки вкладок (ближе к сотне) в нескольких браузерах открыты. Зачастую хочется иметь сервисы которыми часто пользуешься вне браузера. Тот же Гугл Докс. Вечно его искать средь вкладок и инстансев браузера неудобно. Отдельная кнопка на панели приложений явно лучше. Мы уже процентов 90 приложений используем в браузере — пора их делать основными на десктопе чтоб полноценно пользоваться всеми его юзабилити удобствами.

                                                  А вообще, — это скорее ход для набора количества приложений для Chrome OS
                                                    0
                                                    Зачастую хочется иметь сервисы которыми часто пользуешься вне браузера. Тот же Гугл Докс. Вечно его искать средь вкладок и инстансев браузера неудобно. Отдельная кнопка на панели приложений явно лучше.

                                                    Выделите адресную строку и перетяните на рабочий стол — появится ярлык на нужный ресурс.
                                                      +1

                                                      Это позволит только открыть ссылку, а я имел ввиду переключение между окнами

                                                        0
                                                        Откройте Гугл док в отдельном окне.
                                                          0

                                                          Об этом я писал в комментарии выше

                                                            0
                                                            Сори, но я не нашел. Вижу что вам нужно отдельное окно и отдельный ярлык для запуска. Все это можно сделать просто в браузере.
                                                              0

                                                              В комментарии который ещё выше — "Тот же Гугл Докс. Вечно его искать средь вкладок и инстансев браузера неудобно". Инстансы браузера — это и есть отдельные окна

                                                                0
                                                                Вот Вам лайфхак, создайте такой ярлык:
                                                                "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory=Default --app="https://drive.google.com"
                                                    0
                                                    смысла меньше, но не значит что его нет. полностью это раскроется когда PWA получат больше функций нативной интеграции, как собственно и сами сайты и тогда это вопрос удобства, когда для банк-клиента можно ходить в браузере на страницу а можно иметь отдельный пункт меню и авторизацию по пинкоду вместо пароля и для этого не нужно будет ставить нативное приложение или через непойми что обновляемый электрон… вопрос удобства и возможностей.
                                                    +1
                                                    Будщуее JavaFx, с такими нововведениями, мне видится еще менее светлым, так как для массового пользователя дешевле нанять фронтендеров, сделающих всю работу на js + актуальный фреймворк.
                                                      0
                                                      JavaFX умер как вэб технология… и уже давно.
                                                        +1
                                                        javafx — способ организации UI в вашем приложении, причем тут «вэб»?
                                                          0
                                                          software platform for creating and delivering desktop applications, as well as rich Internet applications

                                                          Причем тут организация UI когда это платформа для RIA?

                                                            0
                                                            «as well as»
                                                            +1
                                                            при том что когда он появился его хотели двигать в основном в вэбе, но примерно в это же время случился html5 и всё постепенно свелось к применению javafx только как удобную UIписалку для десктопных джаваприложений…
                                                          0
                                                          Они его активно закапывают. Вопрос на засыпку — как сейчас ставить JRE и где его брать?
                                                          Официальный способ — тянуть свой JRE с каждый приложением. Зашибись идея! На это фоне даже Электрон покажется маленький и лёгким.
                                                          Аналогично с FX — его теперь нужно тягать с приложением. Причём, для каждой платформы тянуть свой.
                                                          Одновременно поломали Fx для Linux (откатили его в адову бету из весьма стабильного состояния).
                                                            0
                                                            Почему электрон покажется маленьким и лёгким? JRE не так уж много весит. А последние версии модуляризировали и теоретически можно попробовать откусить много ненужных кусков. Я правда не пробовал. Но уверен, что размеры будут сравнимы.
                                                          +9
                                                          Достало это уже. VSCode требует куда мощнее железку, чем какой-нить Crysis. Что случилось, почему нативные приложения нельзя.
                                                            +5
                                                            Потому что получается выгоднее написать монстро-поделку которую будут покупать пользователи win+mac+lin относительно дешевыми силами вчерашних фронтендов, чем делать и поддерживать оптимизированные версии кода под каждую платформу отдельно.
                                                            Никто не готов доплачивать за оптимизацию, и рынок рождает вот этот вот js-вездеход.
                                                              +5

                                                              Как ни странно VS Code мне обходился дешевле чем та же VS Studio при сопоставимо одинаковом функционале.

                                                                0
                                                                Простите, а какого рода приложения вы пишете? Web или что-то наподобие Java/.NET с отладкой и блекджеком?
                                                                  0
                                                                  VS Code использовал для работы с c++ Unreal Engine. VS Studio + запущеный движок + браузер отваливали UE Editor по OOM (8 гб на домашнем ноутбуке). Холодный запуск студийного проекта я дождался один единственный раз и даже скомпилировал. Все эти графы зависимостей и включений отъедают очень немало памяти при сомнительном профите в виде «умной» автоподстановке и продвинутом рефакторинге. С учетом того что половина плюсового кода под UE — особенные макросы которые препроцессируются тулзами движка и только потом компилируются убивали весь профит.
                                                                  В VS Code я мог работать. Единственное что непосредственно сборку проекта не настраивал, чтобы билдить прямо из него. Вероятно медленее чем могло бы быть в студии, но по крайней мере не приходилось поднимать UE Editor. Благо у него из коробки есть поддержка VS Code проектов.
                                                                  Вообще для своих плюсовых проектов использую Qt Creator, как наиболее удобный вариант. Для остального есть Sublime Text.
                                                                +7
                                                                На самом деле спорно. У меня i5 2500, это старый четырёхъядерный проц. И на нём эклипс задумывается похлеще. Большая студия тоже.
                                                                  +1

                                                                  Старый процессор, который до сих пор нет смысла менять. Разве что захочется 8-12 ядер.
                                                                  Но VS Code да, шустрый. Sublime Text конечно быстрее, но всё равно неплохо.

                                                                    0
                                                                    Хм… А он новый? Обновлённый? А java до 9 или 10 обновлена? Может с ini-файлом поиграть? У меня уже давно он очень шустро на всех платформах работает. Не могу сказать, что летает, но и не тормозит.
                                                                    0
                                                                    Просто затраты на разработчиков компании перекладывают на пользователей, которым приходится обновлять железо. Компании (хардварные и софтварные) в плюсе, пользователи в минусе
                                                                      0
                                                                      Не вводи людей в заблуждение. Нативно нельзя, потому что из-за спроса пользователей на удобное взаимодействие с веб-всяким в веб-браузере, а не текстовом терминале, на рынок выброшено огромное количество js разработчиков, которых нужно прокормить, иначе они пойдут в криминал. Компании берут эти затраты на себя, а другим компаниям приходится разрабатывать новое железо. Компании (хардварные и софтварные) в минусе, пользователи в плюсе.
                                                                        +1
                                                                        огромное количество js разработчиков


                                                                        иначе они пойдут в криминал


                                                                        Криптовымогатели на js!
                                                                          0
                                                                          Не согласен.
                                                                          Мне например во много раз удобнее скачать(купить) нужное приложение на комп, чем юзать 100500 онлайн сервисов.
                                                                          Запроса на онлайн приложения от пользователей никогда не было!, от компаний было, а от пользователей нет.

                                                                            +1
                                                                            Не согласен.
                                                                            Мне, например, во много раз удобнее использовать нужный онлайн-сервис со своего компа, с чужого компа, с телефона, с домофона и тд, чем носить с собой комп или откладывать нужду до прибытия к нему, а в случае ЧС переустанавливать 100500 приложений.
                                                                            Запрос на онлайн-приложения от пользователей всегда был! От компаний не было, а от пользователей — да.
                                                                              0
                                                                              Лично с моей стороны его не было пока не появился аякс. Потом не просто молчаливый запрос, а задалбывал разработчиков некоторых (не всех) десктопных приложений вопросами типа «когда будет онлайн версия с аяксом?»
                                                                        +2
                                                                        Electron, определённо, принёс красоту и изящество в мир настольных приложений
                                                                        До электрона был node-webkit, да и сама идея засунуть все в вебвью появилась сначала на мобильных. А до этого — на декстопах, но не для приложений, а так по мелочи — сверстать и отрендерить какую-ту сложную форму отчета проще в html, чем ты берешь свой любимый язык и с нуля на канвасе рисуешь таблицы, стилизуешь это всё и изобретаешь html+css заново.
                                                                          +22
                                                                          Тут есть несколько психологических аспектов, которые я бы хотел затронуть.
                                                                          Все эти приложения на Electron и PWA выглядят красиво — эти цветовые гаммы, градиенты текстуры. Кажется, что на это обращают внимание в первую очередь. А что с функциональностью? Пока есть одно приложение на Electron, к которому у меня в общем нет претензий — это VS Code.

                                                                          Глядя на типичное приложение на Electron (PWA пока так мало, что я не уверен, что пользовался хоть раз хоть одним) часто бросается в глаза несоответствие усилий, брошенных на разработку основной функции приложения, и усилий, потраченных на красивую вёрстку, анимированные переходы и пр. Программы должны ведь что-то делать в конце-концов, а не только красиво мигать на мониторе градиентами.

                                                                          Вообще, кажется, что само понятие работать за компьютером приобрело новый набор ассоциаций. Раньше это выглядело как… да посмотрите рекламу компьютеров 80-х и 90-х. Какие-то цифры, графики,…

                                                                          Теперь это как-то не про работу… Сейчас картинка в головах примерно такая: красивое фото в стиле минимализма, Macbook (в крайнем случае Microsoft Surface), очки в чёрной оправе из хорошего итальянского ацетата, какая-нибудь ненужная хрень из натуральной кожи на столе (блокнот там какой-нибудь пустой, с записями типа lorem ipsum). Фото в таком стиле (или иллюстрации) можно регулярно встретить в ленте на хабре.

                                                                          Я слишком далеко зашёл? Мне кажется, что нет. Реклама формирует образ мыслей и, в то же время, отражает его. Да, люди всегда хотели выглядеть круто и реклама всегда играла на этом, но если раньше крутость хоть как-то была связана с интеллектом, то сейчас кажется, что весь первый план в рекламе и дизайне (в том числе приложений) полностью занят мыслью о дизайне без содержательного наполнения. Сейчас доля оформления по отношению к полезной информации/функциональности стала выше, чем когда-либо (даже чем в 18 веке — посмотрите на ткацкий станок Жаккара с перфокартами — он не увешан резьбой и орнаментами).

                                                                          Раньше графический интерфейс был примерно тем, чем был фронтенд для бекэнда — окошком в более глубокий и сложный мир, простым способом управлять программой, которая делала что-то сложное и полезное, красивой оболочкой для скрытой внутри мощи. А сейчас у многих сайтов гораздо больше усилий тратится на фронтенд, а код на JS на порядок сложнее кода на сервере, который просто перегоняет данные из базы и обратно. Самый яркий пример того, о чём я говорю: Etcher — программа для создания загрузочных USB из образов. Она такая же по функциональности как Win32DiskImager, как Fedora Media Writer, значительно отстаёт от Rufus. Но сколько сил вложено в красивый интерфейс!

                                                                          Пример: на хабре вышла статья об инструменте типа редактора электронных таблиц, сделанном на Javascript. Посмотрите на скриншоты: действительно хороший дизайн. Не попсовый, выглядит на первый взгляд логично и продуманно, визуально приятен и явно вылизан до мелочей. Но когда я задал в комментариях банальнейший вопрос, оказалось, что разработчики об этом просто не подумали… Они всё сделали с помощью обычных float чисел из JS. К чести разработчиков они оперативно внедрили библиотеку для реализации decimal-чисел. Но сам пример показателен. Т.е. даже сами разработчики непропорционально много думают о том как будет их продукт выглядеть по сравнению с тем, как он будет работать, другой причины сделать такую глупую ошибку я не вижу.

                                                                          Линус Торвальдс любит говорить: «Talk is cheap. Show me the code.» Кажется, он отстал от моды. Сейчас можно было бы сказать: «Code is cheap. Show me your beautiful landing page and some screenshots» Количество сайтов и программ пустышек всё больше и больше. У них красивый интерфейс и они ничего не умеют. Как уже не раз было упомянуто на Хабре — веб-приложения (и приложения на Electron) очень сильно отбросили пользователей в плане UI/UX. Выглядит красиво, но не более. Сколькими способами можно пролистать Scroll-bar в Linux и Windows? И все пользуются разными. В Electron этих способов столько, сколько поддерживает ваш UI-фреймворк (на порядок меньше) или сколько вы вручную напишете на Vue.js каком-нибудь (не будете вы этого делать, вы потратите сутки на красивый градиент и анимацию, потому что главное не быть, а казаться, ведь так?).
                                                                            +1

                                                                            Да, так. Но вы сказали только за себя (упрощённо можно считать, что за большинство пользователей Хабра), а если мы возьмём больше мнений, то окажется, что пользователям в среднем нужны анимированные кошечки и подарки/фильтры на аватарку. А ваше мнение будет где-то на краю лапки Гаусса. Поэтому мир идёт туда, куда идёт. Ваш кэп.

                                                                              +2
                                                                              Да, я говорил за себя. Мне кажется, что без качественного исследования тут нельзя что-то сказать о большинстве пользователей.
                                                                              К тому же мы про какие программы говорим? Про развлекательные или про те, которые для работы? Это разные вещи. Мне кажется, что бухгалтеры и секретари не обрадуются, если красивая программа с графическим интерфейсом на JS в ответ на 0.1 + 0.2 выведет 0.30000000000000004
                                                                                +1
                                                                                Ну конечно не обрадуются, но это не имеет отношения к теме вопроса. Я о том, что каков спрос — такого и предложение. Мы про все говорим, и ребята те как раз отлично укладываются в эту теорию всемирного заговора. От них ждали красивый интерфейс — они и сделали красивый интерфейс. Всё правильно сделали :)

                                                                                А если уж про тот утрированный кейз, который вы приводите, то язык, в котором из числовых типов есть только double float, вообще не подходит для чего-либо сложнее DHTML (интересно, помнит кто-нибудь этот когда-то модный термин?).
                                                                                  +3
                                                                                  а при чем тут JS?
                                                                                  0.30000000000000004.com
                                                                                    +2
                                                                                    Тот же Excel как результат вычисления 6-5,9 выдаст не 0,1, а вовсе даже 0,0999999999999996
                                                                                    (только чтобы это увидеть, нужно выбрать формат, отображающий такое кол-во знаков после запятой)
                                                                                  0
                                                                                  В целом разделяю вашу позицию, однако скажу пару слов в защиту Etcher

                                                                                  Недавно понадобилось создать загрузочный USB. Единственная ОС под рукой была макось последней версии. Внезапно, старые нативные программы не завелись под новой ОС (может и руки кривые, конечно).
                                                                                  Только Etcher и спас. В такой ситуации ИМХО рабочее приложение на электрон лучше нерабочего нативного :)
                                                                                    +2
                                                                                    У Mac OS, насколько я помню, есть утилита dd.
                                                                                      +7
                                                                                      Конечно, рабочее лучше нерабочего. Но зачем так сложно? В этой ветке уже упомянули dd — вот действительно программа, которая работает и работает хорошо. Более того — для её функциональности консольный интерфейс более чем адекватен. А если кому-то вынь, да полож GUI, то можно и GUI сделать, но Electron? Мне кажется, что у этого Etcher код, касающийся GUI в разы больше по объёму (это без самого Electron) кода, касающегося записи образов. Можете посмотреть на процентное соотношение кода в их Github'e.
                                                                                      И вообще, программирование — это управление сложностью и если программа, записывающая файл на дисковое устройство, подразумевает браузерный движок, то что-то не так в консерватории. Это уже потеря контакта с реальностью.
                                                                                        0
                                                                                        И вообще, программирование — это управление сложностью и если программа, записывающая файл на дисковое устройство, подразумевает браузерный движок, то что-то не так в консерватории. Это уже потеря контакта с реальностью.

                                                                                        Абсолютно согласен. Вообще эту цитату можно распечатать и повесить на стену


                                                                                        dd бесспорно лучше по многим параметрам. Только не получится её порекоммендовать обычному пользователю.

                                                                                          +1
                                                                                          Я не знаком с маковскими программами для этого, но для Windows я обычно рекомендую Rufus/Win32 Disk Imager.

                                                                                          P.S. Человек, которому нужно записывать .iso образы на флешку — не вполне обычный пользователь.
                                                                                            0
                                                                                            Вполне обычный, подхвативший бут-вирус (или как их теперь называют) и увидевший исо антивируса. Или купивший комп без оптики и не обративший внимание на freedos/linux в описании.
                                                                                              +1
                                                                                              99% процентов пользователей даже не поймут что случилось, не говорю уже о том, чтобы попытаться самим решить такую проблему. Попросят оставшийся 1%.
                                                                                                0
                                                                                                Некоторые из этих 1% уже по домам «поставить винду» не ездят к подругам, а говорят по телефону :)
                                                                                      0
                                                                                      Увидел Etcher в примерах и поймал себя на мысли, что вот как-то я психологически не доверяю программам со слишком красивым интерфейсом. Ощущение, что у них под капотом какая-то неуправляемая магия и оно сейчас мне всё сломает. Вот эта вот асинхронность сбивает с толку, метафорически — будто плывёшь на лодке, а не едешь на автомобиле.
                                                                                        0
                                                                                        Думаю гонку за большим количеством свистоперделок можно легко обосновать. Сейчас есть огромное множество программ и сайтов которые решают разнообразные проблемы и выполняют любые функции. Чтобы при создании очередной программы или сайта как-то заинтересовать пользователя и создается дизайн, который зацепит взгляд юзера и заставил остаться на сайте или скачать программу. Ну и красивое приложение выглядит явно привлекательнее для юзера, чем незаурядное, посмотреть на тот же Discord vs TeamSpeak.
                                                                                          0
                                                                                          TeamSpeak потерял популярность когда появился Discord совсем не потому что у него интерфейс убогий. Лимиты на количество пользователей, необходимость поднимать свой сервер, остутствие массы полезных фич дискорда — вот что его убило. Да банально, до дискорда нужен был тимспик+отдельный сайт с форумом. С дискордом ничего не нужно, его хватает. Красивая оболочка — это бонус, выбирают дискорд не за нее.
                                                                                          0
                                                                                          Гораздо более полезным приложением усилий было бы создание новой кроссплатформеной библиотеки GUI с виджетами из коробки, которые были бы функциональны как родные интерфейсы Windows и GTK+, а выглядели бы также хорошо, как лучшие приложения на Electron — со всеми этими шрифтами со сглаживанием, градиентами, анимацией и пр.

                                                                                          Но постойте… кажется это уже есть и называется Qt?
                                                                                            –1
                                                                                            функциональны как родные интерфейсы Windows

                                                                                            Родной интерфейс Windows без допилки напильником не понимает Ctrl+Backspace в полях ввода, например.

                                                                                              –1
                                                                                              Уже давно понимает.
                                                                                                0

                                                                                                Раньше понимал, теперь не везде. Выделите в Проводнике файл, нажмите F2, нажмите Ctrl+Backspace. И таких мест полно, я регулярно натыкаюсь.

                                                                                              +3
                                                                                              Но постойте… кажется это уже есть и называется Qt?
                                                                                              Осталось еще быстро переучить миллионы веб-разработчиков на C++ и Qt и индустрия попрёт вперед. Easy-peasy.
                                                                                                0
                                                                                                Первая ссылка в гугл pypi.org/project/JsQt — не поможет ускорить попрение? )
                                                                                                  0
                                                                                                  Кого вы подразумеваете под веб-разработчиками? Почему вы думаете, что они что-то там не умеют или не смогут освоить? Я не владею статистикой, но мне кажется, что те, кто в своё время натягивали шкурки на Wordpress и другие PHP CMS и фреймворки, попутно балуясь Javascript (кажется, их называли веб-мастерами) либо эволюционировали, либо отсеялись. Где-то в тот момент как jQuery перестал быть мейнстримом, а Node.js им стал и создать современный фронтенд (за который платят деньги) стало невозможно с помощью метода тыка на основе Google и StackOverflow.

                                                                                                  А если кто-то не может освоить создание GUI на нативных технологиях, то они и на вебе делают продукт соответствующего качества, потому что нативный GUI не сложнее веба, а даже легче (и логичнее).

                                                                                                  А ещё в Qt есть QML. Это по сути JS. Там хотя бы библиотека виджетов уже есть готовая.
                                                                                                    0

                                                                                                    С++ не для всех подходит, тем более не для быстрой разработки. Если бы был нормальный кроссплатформенный GUI фреймворк например под Go, C#, Java, Python — другое дело. Хотя я уверен, что какие-то есть, но по какой-то причине не получили популярность. Например под C# есть крутой Avalonia, но опять же, XAML нравится не всем, и он значительно сложнее HTML (хотя на AvalonStudio можно клепать формочки).
                                                                                                    Еще тут основную роль играет маркетинг. Если человек хочет заняться программированием, с большей вероятностью он попадет на курсы/статьи/уроки именно по JS. Хотя порог вхождения у python не выше, но все хотят делать сайты, а лет 10 назад хотели делать игры (было как-то романтичнее что ли). Для очень многих людей, JS первый и единственный язык программирования, в то время как лет 10 назад, такое явление среди программистов было довольно редким.
                                                                                                    Сам последние 3 года пишу в основном на JS, но в последнее время вспоминаю о C#, там развитие идет куда интереснее, а не как в JS, продолжаем писать логику в разметке (привет ReactJS).

                                                                                                0
                                                                                                Недавно попробовал установить таким образом Skype на маке в надежде что он будет работать лучше чем десктопный клиент на электроне. Надежды не оправдались, но установить получилось так:
                                                                                                1. Включить Флаг #enable-pwa-desktop как написано в статье.
                                                                                                2. Открыть веб-версию скайп. В меню хрома выбрать More Tools -> Create shortcut. Это добавит .app обертку в каталог ~/Applications (не путать с ./Applications где обычно лежат все приложения)
                                                                                                3. Перейти в chrome://Apps и в контекстном меню значка скайпа выбрать 'Open in new window'

                                                                                                После этого шаманства скайп открывается в отдельном окне как pwa. Нотификации пока работают криво и без звука. Смысла тестировать его дальше не было, поэтому эксперимент был признан неудачным.
                                                                                                  0
                                                                                                  Очень сомнительно использование десктоп приложения на javascript если оно не может взаимодействовать с nodejs на десктопе. вот реальная задача: обработка картинок (imagemagick) или обработка видео (ffmpeg)
                                                                                                    0

                                                                                                    А Webassembly вам не поможет?

                                                                                                    +14
                                                                                                    Эй чувак, мы добавили десктопные приложения в твоё десктопное приложение (веб-браузер), чтобы ты мог запускать десктопные приложения, когда запускаешь десктопное приложение!
                                                                                                      0
                                                                                                      Традиционные настольные приложения нередко казались какими-то неуклюжими, элементы их интерфейсов выглядели как нечто устаревшее. Electron, определённо, принёс красоту и изящество в мир настольных приложений.


                                                                                                      Electron принёс тормоза и необузданный жор оперативной памяти.
                                                                                                        0
                                                                                                        Electron — это флеш для десктопа, неоправданный жор памяти и низкий порог входа, когда каждый второй школьник может наклепать приложение на javascript.
                                                                                                        +2
                                                                                                        PWA могут сворачиваться в системный трей и работать с локальной файловой системой?
                                                                                                          0
                                                                                                          Работать с локальной FS не исключено, что скоро смогут.
                                                                                                          Добавить API для сворачивания в трей, теоретически, никаких проблем составить тоже не должно.
                                                                                                            +3
                                                                                                            Значит рано ещё говорить: «До свидания, Electron».
                                                                                                          0
                                                                                                          Жду реализацию nativescript для десктопа, а то github.com/NativeScript/windows-runtime мертвый
                                                                                                            0
                                                                                                            proton-native.js.org здесь вместо электрона libui + nodejs, рендерится не html, а сразу системные контролы, а писать можно на js и реакте. Вполне интересная идея, только применить негде
                                                                                                            +2
                                                                                                            у разработчика приложения появляется возможность предложить пользователю установить приложение на его компьютер

                                                                                                            Ну вот, теперь при открытии сайта нужно будет помимо настройки кук, уведомлений, геопозиции и прочего, кликать еще и это.
                                                                                                              0
                                                                                                              Я бы вот в этот момент ушел с хрома если бы все еще был на нем. Очень надеюсь что в огнелисе этого попапа никогда не появится.
                                                                                                              0
                                                                                                              Как думаете, а в других браузерах будет поддержка этого всего? Чтобы например PWA запускать в Firefox или Edge?
                                                                                                                0
                                                                                                                  0
                                                                                                                  Винда с Edge уже вроде как полгода поддерживают эту фичу.
                                                                                                                    +1
                                                                                                                    Винда ещё с XP (а то и раньше, я не уверен) поддерживала это. Помните, что такое .hta файлы и HTML Application? Вот это оно самое.
                                                                                                                      +4
                                                                                                                      active desktop в 98 винде появился. электрону и pwa такое и не снилось — попасть к юзеру на десктоп вместо обоев. а .hta запомнился почему-то этим ))
                                                                                                                      image

                                                                                                                      а скучаю очень по .chm — по мне дак именно так и должна выглядеть справка/мануал/еще какое чтиво здорового человека — в одном файле, с нормальным поиском и все это html с js.
                                                                                                                      image
                                                                                                                        +2
                                                                                                                        Про .chm полностью согласен, очень удобный инструмент для мануалов.
                                                                                                                  +2
                                                                                                                  раньше ява считалась тяжёлой, а теперь вот.
                                                                                                                  И я таки не понял, каким образом экономятся ресурсы?
                                                                                                                    0
                                                                                                                    Тем, что заново переписанные веб-приложения еще не успели загадить.
                                                                                                                      0
                                                                                                                      что значит переписанные? Слак, наверное, и писался сразу и как веб и как электрон. Это же одно и то же.
                                                                                                                        0
                                                                                                                        Я о новых PWA и всяких твиттерах лайт.
                                                                                                                    +1
                                                                                                                    PWA наверно звучит модно, но это всего лишь веб страница работающая в браузерном окружении со всеми вытекающими ограничениями. То есть с системой никакой тесной интеграции по определению не получится сделать, нативные функции и библиотеки не получится использовать, придется ограничиваться только «хранилищем» реализованным в браузере, никакой тебе отдельной трей иконки с кастомным меню, и тд. PWA идея совсем не тянет на замену Electron и это нормально.
                                                                                                                      0
                                                                                                                      Ответ по сути. Electron дает разработчику всю мощь и наработки nodeJS. Плюс доступ к локальным ресурсам. Про PWA не понятно.
                                                                                                                        0
                                                                                                                        Доступ к локальной ФС скоро может появиться: developers.google.com/web/updates/2018/11/writable-files
                                                                                                                        Ну и добавить API для сворачивания в трей, теоретически, никаких проблем составить тоже не должно.
                                                                                                                        Вот с нативными библиотеками и запуском бинарей — да, печально. Webassembly будет решением, но далеко не для всех случаев, потому что тоже имеет свои довольно серьезные ограничения.
                                                                                                                        –2
                                                                                                                        Ну если VS Code станет есть как одна доп закладка хрома — то я за.
                                                                                                                        Когда только оно будет — вот вопрос?
                                                                                                                          0
                                                                                                                          У Chrome уже был похожий механизм, приложения в Chrome Store (в том числе каким-то дополнительным доступом к платформе, недоступном для обычных web-приложений). В каких-то версиях Chrome был отдельный лаунчер для таких приложений, как будто это нативное приложение. Сейчас поддержку приложений из ChromeStore тоже удалили, видимо имя в ввиду перспективу этого PWA.
                                                                                                                            0
                                                                                                                            У Mozilla в начале 2010-ых были похожие начинания:
                                                                                                                            Mozilla Prizm ( ru.wikipedia.org/wiki/Mozilla_Prism ).
                                                                                                                            Mozilla Chromeless ( habr.com/post/106716 )
                                                                                                                              0
                                                                                                                              Причем Chromeless — довольно успешная и часто используемая технология ( en.wikipedia.org/wiki/Chromium_Embedded_Framework )
                                                                                                                                –2
                                                                                                                                «несмотря» пишется слитно
                                                                                                                                  0
                                                                                                                                  PWA всем прекрасны, но на маке это никогда нормально не работало с ⌘+Tab и ⌘+H, что довольно печально. Я надеялся, что теперь-то наконец починят, но так и не понял что изменилось со времён More Tools > Create Shortcut.
                                                                                                                                  Одна из тех функций, которые на винде работают куда лучше.

                                                                                                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                                                  Самое читаемое